面试刷题11-12

背景

在老东家五年了,总共工作整七年,经历两家公司。2019-10-31日离职。公司规模较小,项目压力不大,非985/211毕业,统招本科,计算机专业。目标:中大型公司,最好是大厂,嘿嘿,不过不抱希望,毕竟背景不太好。

准备

撰写简历,每天下班回家 7-12点看视频,刷博客,看面试题。

学习内容:JavaGuide,《某某时间》系列专题,《某某课堂》学习视频。

准备内容:Java 基础,集合,线程池,锁,MySQL索引,事务,Spring等。


2019-10.31 周四
提了离职已经有二十多天了,今天老板签了字,办了离职手续,《某某直聘》上传简历,刷新简历。《某东供应链部门》打电话问了问我的学历是否统招本科,约我明天下午去面试。不过他也算是大厂吧,没有面试经验咋办,心里很忐忑,没关系,开始加油吧!咦,有条消息,我一看是我同学给我发的截图,原来他刷到我的简历了,他说帮我内推,内心还是挺激动的。内推公司:《打车》

2019-11-01 周五
早上五点半爬起来了,开始看视频,刷资料,准备面试,一直到12:00,没吃饭。公司太远了,在亦庄,要两个小时才能到,出了地铁口,映入眼帘的便是他们的大楼。找到部门,给了张面试题。

  • HashMap,HashTable,ConcurrentHashMap的共同点和区别?

 

  • Spring的 init-method,destroy-method的实现方式?
  • 说几种实现幂等的方式?
  • 说几种分布式锁的实现方式?
  • 有一个List集合,多线程计算总和,说出你的思路和使用到的框架。
  • 一个开放题目,数三角形的

 

  • 自我介绍
  • 介绍一下项目
  • JVM内存模型
  • MySQL事务隔离的底层实现?
  • MySQL索引介绍一下?
  • 命中索引要注意什么?
  • List去重,手写代码,考察基础

二面:部门负责人

简单聊聊,介绍团队业务,有什么要问的吗?等待通知。(说好的《打车》内推呢,咋还不给我打电话呀,算了,可能简历没过。)
总结:MySQL事务隔离底层实现细节还要多补充一下,JVM细节在多看看。

接到《某某租房》公司面试邀约。下周一下午面,正好周六日在准备准备。

2019-11-04 周一

坐地铁辗转到了公司大楼。你好,来面试的。

领到一份面试题,来到三楼休息室,一大堆人跟菜市场似的。我擦,竞争压力这么大啊,看了一眼面试题,好多不会的,算了,不做了,走吧。

来都来了,试试呗。开始做题。

  • String new String 的关系 ==,equals
  • 两个链表相交,求交点

经典套路题

  • 三个线程顺序打印ABC
  • 如果aab,aba相等,给两个字符串,判断是否相等
  • 画一下RPC的架构图

一面:一位说话比较轻柔的技术官。

  • 自我介绍
  • String ,new String 这道题为什么这么选?原因?
  • 说一下项目
  • 手写一个单例
  • JVM内存模型,JAVA 栈能分配对象吗?

不能

  • 说一下类加载过程,双亲委派模型源码看过吗?介绍一下

 

 

  • 什么情况下栈会溢出?

栈空间满

  • 栈帧介绍一下?

保存

  • MySQL索引了解吗?画一下?

B+ 树索引

  • 从业务角度出发,如何设计MySQL数据库?有哪些优化点?
  • 垃圾回收了解吗?介绍一下?
  • 讲一下AOP的原理?Cglib能代理final方法吗?

面试官对我说:我觉得还OK,你等一下,我们领导开会,让HR通知你改天二面吧。我:好的,启程回家。


2019-11-05 周二
相安无事,帮表弟的朋友扣了我的驾照9分。。。下午去某公司面试,结果面试官没有接到电话,保安也不让我去问,算了,走人吧。

2019-11-06 周三
《某某租房》复试。面试官很年轻,比我大两岁,人家已经是研发经理了,看看我。哎。。。。

  • 项目为什么不用RPC框架?
  • 了解RPC吗?,画一下流程图?
  • RPC和HTTP协议有什么区别?
  • 长连接是物理真实存在的吗?
  • 介绍一下项目?
  • MQ 消息丢了怎么办?发消息是原子操作吗?
  • 三面:研发总监
  •  
  • 锁介绍一下?有哪些?
  • 线程阻塞从操作系统的角度介绍一下?
  • 其他的记不清了

下午四面:技术总监

  • HTTPS的流程
  • 你认为你还欠缺什么?
  • 如何学习的?
  • 瞎扯淡,行了,签字,录用了

HR谈offer,回家喽。

2019-11-07 周四
《某某优鲜》下午两点,找大楼找了半天。公司好几层,我擦,没见过这阵仗。上楼等一会,没有笔试题。
一面:

  • 你的项目如何拆分的?为什么这么拆?
  • 如何保证服务高可用?
  • MySQL挂了怎么办?(挂就挂了,很惭愧,公司没实现数据库高可用。。。。)
  • 项目经历有点差啊,就不问你互联网项目问题了
  • 说一下 WebSocket协议
  • 说一下HTTPS协议

二面:

  • SpringBoot了解吗?和Spring的区别?
  • 如果想做定制化开发,怎么做?
  • @Conditional 说一下
  • 事务的传播机制?
  • 说说MySQL索引?
  • 可重入锁的原理?(state ,AQS)
  • 拆分服务,服务治理有了解吗?

HR:简单聊了一下,为什么五年不离职?你这样的很少见啊。还有一轮部门老大面试,你先回去吧,电话面。
晚上收到通知,周五6点电话面试。

2019-11-08 周五
该来的终于来了,要面对最终BOSS了。不过还好不用坐地铁了,上午看了几个视频,准备了一下,中午12点,洗个澡,收拾收拾。骑车出发,心情很忐忑。骑车到了地方,公司LOGO映入眼帘,两座大楼。给HR打电话,接待,上楼,等了一会,一个年轻的面试官过来了。

  • 设计一个秒杀系统,讲一下你的思路。(我擦!!!)
  • 如何设计限流?
  • 库存怎么扣减? decrby 可以吗?
  • 库存扣减失败怎么办?
  • 画一下项目结构?
  • a,b,c 联合索引, a=1,b=1,c>1 能命中索引吗? a=1,b>1,c=1能命中索引吗?
  • JVM 堆说一下?触发Full GC 的场景有哪些?
  • 说说G1垃圾回收器?老年代,年轻代如何分配?
  • Redis 锁出错怎么办?
  • Redis 扣减库存有问题怎么办?
  • 设计一个转账系统? A->B转100块,有没有思路?
  • Redis 有哪些持久化方式?

RDB 和AOF

  • Redis 数据会存放到磁盘吗?

会,有持久化动作

  • Redis为什么这么快?

纯内存操作,单线程

  • Linux 统计top10 IP访问日志,用到哪些命令?(不会)

 

  • Linux 自己用过哪些命令呢?

 

  • 如何查看Dump日志?怎么产生的?命令有哪些?

 

  • 一个线程池 ,10个核心,100个最大线程数,100个队列,10000个请求打过来,描述一下线程池如何运行? 拒绝了怎么办?

看使用哪种拒绝策略

 

  • 考察一下基础知识吧,String new String 的区别? (== equals )

Sting 放在常量区, new String放在堆区

 

二面:(和一面问了好几个重复的问题,害的我又讲了一遍)

  • 项目你认为有哪些难点?(活动报名超员,联想到秒杀)
  • 秒杀场景如何处理?
  • 可以用Redis decrby 做库存扣减吗?如何做?(可以用 lua保证原子性)
  • lua太重,有别的方案吗?
  • 库存如何恢复?
  • 防止超卖还不行,未支付的订单如何处理?
  • 用户名密码如何防止被盗?(js加密,不行,还是能破解,哦,https。。。。)
  • 说说https的流程
  • 有了解过哪些非对称加密算法?对称加密算法呢?
  • c,b,a 索引问题,c=1,b=1,a=1 能命中索引吗? c>1,b=1,c=1 能命中索引吗?为什么?
  • 评论业务如何区分模块的? (bizId)
  • 某个业务打爆数据库了怎么办?(分库,拆分服务,单独部署,还有呢?MQ)
  • 了解限流吗?降级?算了,你也没接触过,不问了。(ORZ)
  • Linux 统计top10 IP访问日志,用到哪些命令?(不会
  • 说一说你对HashMap的结构理解,如果Key相同怎么办,链表是前插还是后插?红黑树呢?

JDK 1.8之前是头插,后改为尾插

  • 用过哪些Linux命令?(mkdir,ll,等。。。。linux确实是我的弱项,以后要恶补了。)
  • 1 2 2 3 3 4 4 5,如何确定3的索引位置? (计数统计,O(N) O(N),还有更好的方法吗?循环吧。(正确答案二分法,我提到了,但是思路却错了,被批了一顿)
  • GIT 团队开发如何去做?如果有个 feature 不用上线怎么办呢?
  • maven 如果包冲突,不解决会有什么问题?如何解决包冲突问题?
  • 设计一下Dubbo的线程池? 每次请求50ms 200 QPS,客户端500ms超时,如何设计? 直接打入200个请求呢?队列多大?线程池多大?(回答的不好)
  • Integer a1=10000 Integer a2=10000,他俩 == 结果? 怎么才能相等呢?(equals,== 比较的引用地址,考察Integer 缓存)
  • Integer a1=100 Integer a2=100 呢? 参数可以设置吗?如何设置?

部门老大面:

  • 你是某某同学吧?(舍友)
  • 说一下以后的打算?
  • 技术成长?业务方面有哪些选择?
  • 不能光看技术,要熟悉业务
  • 如果DB要挂了,用哪些方式去解决?(说了一些我认为的方案,但是明显不是。。毕竟没接触过,所以只能自己理解)
  • 如何统计QPS?有没有了解市面上的框架?如何实现,原理呢?
  • 他们该问的都问了,聊聊非技术的吧
  • 等一下,我让HR找你。

HR面:

  • 离职原因?
  • 五年怎么离职了呢?
  • 期望薪资?
  • 周一等消息吧。
  • 和同学简单聊了聊。同学说我的回答还可以,只不过经验少一些。(哎,小公司业务量小,确实吃亏)。慢慢来!我说,有这次面试机会我已经知足了!!!要不然我的简历肯定是过不了的。

总结

面试之前确实要多做准备,不过有实战经验的话更佳,怪不得大厂跳大厂较为容易一些。小公司也不要气馁,一些公司不看项目,看你对高并发项目的理解,哪怕自己没做过,有自己的方案也可以。基础必须扎实,不要只背理论,深入了解,了解的越深越好,虽说面试造火箭,工作拧螺丝,你有造火箭的能力还怕拧不好螺丝吗?

面了整整一周,总共四家公司,最终结果自己还是可以接受的。 JVM,MySQL必须掌握,其他基础知识要牢固,并且要用到实战上,要不然学再多也是理论,Linux操作系统要恶补一下,由于自己高并发场景经验较少,这个只能在业务量较大的公司才能学到。

另外,市场上的资料,不管是付费的还是非付费的确实对面试很有帮助,但是如果自己有个好项目搭配的话,更好一些,要不然面试官都没法问。

别问我为什么五年不离职,我也不知道,是好事还是坏事?

整体面下来,感觉自己准备的勉强及格了,但还是不够好,应该能回答的更好的,让我想起了一句话,你本来可以做的更好。所以,告诫自己不要再浪费时间,多学习,多总结。很幸运,再次感谢同学的内推,谢谢你。


 

去年找日常实习的面经,整理了一下。三面算法没写出来,挂了。

一面

1. 算法题:二分搜索相关
2. 概念题:解释 分布式、微服务、负载均衡、高可用
3. http是有状态还是无状态? TCP是有状态还是无状态?

http 无状态,tcp有状态
4. 客户端禁用cookie怎么办? 你说的实现方式安全吗?
5. SSL,http和https,https是有状态还是无状态?
6. String为什么设计成final不可变? 是怎么实现不可变的?
7. 自己能实现一个不可变的类吗?
8. equals 和 hashcode 为什么要一起重写?如果不重写hashcode会出现什么问题?
9. hashmap插入的时候,哈希冲突解决? 查找的时候,哈希冲突怎么解决?

连地址法,与遍历链表
10. hashset是怎么实现的? hashmap是怎么实现hashset的?

通过hashmap实现
11. 多线程:并发和并行,原子类,CAS操作
12. mysql的索引:B+树底层实现?B树的底层实现?为什么要用B+树而不用B树?
13. 最左前缀匹配具体是怎么实现查找的?最左前缀匹配用了B+树的哪些特性?
14. (a,b,c)联合索引,为什么不能单用(b),而一定要用(a,b)?B+树是怎么实现的?
15. 什么是幻读,不可重复读?这些概念是在事务内还是事务外? 事务内
16. mysql怎么实现可重复读?设置了可重复读隔离级别底层是怎么实现的? (MVCC)
17. 了解MVCC吗?怎么实现的?什么是快照读?快照读能读取到最新的吗?快照读和当前读的区别?
18. synchronized和reentrentlock哪个效率高?

二面

1. 算法:实现一个缓存队列 ,二叉树的镜像
2. 进程和线程的区别?内存管理说一下你的了解。进程调度算法。
3. 为啥B+树最后叶子节点需要用链表相连接? 便于区间查找
4. TCP状态转换图,画一下。
5. 操作系统I/O模型了解吗?epoll模型了解吗?
6. CopyOnWriteArrayList的相关特性?
7. ArrayList遍历的时候能删除元素吗? 删除的时候会报什么异常?

三面

1. 算法题: (1)树的节点最大距离(2)区间覆盖 例 [1 3] [2 5] [3 6]能否覆盖[2 6]
2. Linux相关命令。
3. 手写SQL,join

 

百度是去年找日常实习的面经,面了两个部门,整理了一下

信息中心

一面

  1. 算法:字符串反转 、 倒着打印链表(为什么用递归比用栈差?) 、 单例模式
  2. 线程start 、 run方法区别
  3. 可以不通过构造函数创建对象吗?

object.clone() 反序列化, 反射

volatile关键字

  1. Spring AOP原理(cglib 和 JDK的动态代理实现有什么区别?)
  2. 重写equals方法,为什么一定要重写hashcode方法?

便于HashMap的使用

  1. 字符串 == 比较。输出true还是false;

false 比较的是内存地址

  1. 看了七八个程序,然后问输出什么?
  2. HashMap 能不能存储 null 能,放在第一个格子里?concurrentHashMap 能不能存储 null?
  3. 分布式系统设计:现在有一个方法,可以给10台服务器调用,如何统计一天内10台电脑调用的次数和?
  4. 分布式锁的设计:每天早上8:00输出前一天的业务报表发到老板邮箱。如果现在有10台服务器,如果设计这个定时任务?
    法1:分布式锁。法2:通过外部发来一个http请求,传给ngnix,通过ngnix自动进行分配到某一台服务器上。

二面

  1. 你对哪方面知识比较自信?
  2. HashMap初始容量多少?(16)为啥要设计初始为16?如果传入容量10会怎么样?(还是会构建16容量的);

必须是2的幂次

  1. 知道什么异常?(说几个)
  2. http的状态码说几个。403是什么状态?
  3. String有什么方法?

length,charAt

  1. list,set集合在iterator输出的时候能删去值吗?

迭代器可以

  1. SimpleDateFormat是线程安全的吗?
  2. 手写左连接。
  3. 聚合函数有哪些?

三面

  1. 算法题:数组A和数组B,求 A并B - A交B;(说了几种,好像不满意不是最优解)
  2. 算法题:矩阵搜索(说完之后问优化,没想到,提示二分搜索);
  3. SSM的运作流程,说说你做的项目难点。
  4. GET POST请求,url里面的参数
  5. 说说索引,如果对每一列都建索引有什么不好?
  6. 白盒测试、黑盒测试
  7. Linux会吗?

凤巢

一面

  1. 算法题:手写堆排序
  2. Spring IOC原理 AOP原理,如何利用AOP实现日志,写过吗?
  3. Spring bean创建的方法 注解 @Service xml配置 @bean
  4. Java反射原理?
  5. SpringBoot 里面 @bean 解释一下
  6. Java内存模型和运行时数据区
  7. Spring 中事务@Tranctional,出现异常回滚是怎么实现的
  8. 数据库MVCC原理
  9. 乐观锁和悲观锁概念
  10. 悲观锁的实际例子。 select * from table for update ...
  11. 乐观锁实际上有没有加锁?

没有

  1. 用两个线程去操作数据库,乐观锁具体是什么实现的?演示一遍,画一画

CAS

  1. 数据库常用存储引擎,区别,锁范围。
  2. 写过单纯的非web项目的 Spring工程, 用main实现的吗?例子。
  3. SSM 三层技术架构的总体流程
  4. @component @service @controller 三个区别
  5. mybatis中 # 和 $ 的区别?哪个会出现SQL注入?
  6. JVM 新生代,老年代。survival是不是在任意时刻都只有一块有对象?
  7. JVM 垃圾收集器了解哪些?

二面

  1. 算法题: 实现一个四则运算计算器(两个栈 + 优先级) , 冒泡排序
  2. 输入一个网站的全过程。从计算机网络到服务器内部技术实现流程。
  3. 日常怎么学习。

 


 

一面(电话)(50分钟)

1. 算法题:六七道,都是剑指offer难度
2. 半小时项目介绍 & 问答
3. 分布式相关:rpc原理、微服务架构
4. 海量数据问题:套路题
5. 计网:传输层、网络层(必须要非常熟,ping的原理,tcp的三次握手、四次挥手、拥塞控制。UDP的不可靠、一对一、一对多)
6. 操作系统:虚拟内存、段式、页式、进程调度算法
7. 数据一致性: 分布式数据一致性、缓存数据一致性
8. Java相关:线程池、HashMap、CopyOnWriteArrayList
9. Redis相关:复制原理、持久化原理

RDB和AOF
10. 杂谈:最近看什么书,实习地点。


 

二面(牛客视频)(85分钟)

1. 算法题:最长不重复字串
2. 半小时钟项目介绍 & 问答
3. 操作系统:Linux的namespace(不会)、进程线程、线程通信方式、进程通信方式
4. 计算机网络:传输层和网络层,因为我项目做了链路层,也讲了一下。
5. Java相关: 线程池
6. 数据库相关: 一条连表查询语句。数据库索引原理
7. 海量数据问题: 套路题
8. 杂谈:介绍了部门业务

三面(电话) (20分钟)

1. 应该是大老板面试了,问的都很哲学:技术背景、学习方法、项目介绍
2. 问了一些简单技术问题。主要考察逻辑表达和整体的素质。
2. 杂谈:介绍了部门业务

hr(电话)(15分钟)

1. 家庭情况
2. 面腾讯原因,还有面其他公司么
3. 兴趣爱好
4. 业务介绍
5. 口头offer


 

Java开发岗位。从3.7开始简历面,到4.30收到意向书。流程两个月,阿里终于上岸了。
在3.12之前面了阿里云、蚂蚁、菜鸟、数据产品的各种简历面(全部有录音)。

内推最终投的菜鸟。不得不说,投菜鸟真的需要非常好的心态。。嗯。每一面至少间隔两礼拜以上。。


各部门简历面

1. volatile的底层如何实现,怎么就能保住可见性了?

强制线程工作内存的数据失效,需要从主内存再去读数据

 


2. 三个线程如何实现交替打印ABC

一把锁,三个条件变量


3. 线程池有哪些创建方式和安全性问题

Excuate工厂方法
4. 有哪些线程池的类型

固定大小线程池,无界线程池,缓冲线程池
5. 线程池中LinkedBlockingQueue满了的话,线程会怎么样

开启拒绝策略
6. 线程池的底层原理和实现方法
7. 线程之间的交互方式有哪些?有没有线程交互的封装类 (join)

wait,notify
8. 算法:堆排序、栈实现队列、反转链表
9. Java锁机制,都说一下~

可重入锁和sysconized关键字
10. 除了@ResponseBody,controller层如何标准返回给前端所要的数据类型?你会怎么实现?
11. 异常捕获处理


12. Spring MVC的原理和流程
13. HashMap和ConcurrentHashMap哪个效率更高?为什么?

HashMap
14. Redis的缓存淘汰策略有哪些?

LRU
15. Java内存模型说一下
16. mybatis如何进行类型转换
17. mybatis的xml有什么标签
18. MySQL锁机制
19. 如何修改linux的文件权限

chmod xxx 777
20. jvm的回收算法
21. 你会怎么设计数据库表结构
22. 数据库有哪些索引?
23. 如何防止sql注入
24. 抽象类和接口有什么不同
25. myql间歇锁的实现原理
26. future的底层实现异步原理
27. SpringBoot Starter原理
28. rpc原理
29. 多个服务端上下线怎么感知
30. 缓存和数据一致性,怎么处理。流式计算
31. 多线程讲一下,FutureTask

32. Java和mysql的锁介绍,乐观锁和悲观锁
33. 分布式一致性讲一讲
34. 分布式锁的实现方式,zk实现和redis实现哪个比较好

35. 多点登陆怎么实现
36. 把乐观锁加在数据库上面,怎么实现
37. 项目介绍
38. 降级处理hystrix了解过么
39. 两次点击,怎么防止重复下订单
40. ioc原理详细讲讲,源码看过么
41. 静态代理和动态代理的区别
42. JUC说说你知道的东西
43. B+树的叶子节点


菜鸟

一面

1. Java内存模型
2. full gc怎么触发
3. gc算法

4. 高吞吐量的话用哪种gc算法
5. ConcurrentHashMap和HashMap
6. JDK8的stream的操作
7. volatile原理
8. 有参与过开源的项目
9. 项目介绍
10. 线程池原理,拒绝策略,核心线程数
11. 1亿个手机号码,判断重复
12. 是否有写过小工具
13. 单元测试介绍一下,多模块依赖怎么单元测试。Mockito

二面

1. 项目介绍
2. dubbo、netty介绍原理
3. 限流算法
4. zk挂了怎么办
5. 秒杀场景设计,应付突然的爆发流量
6. redis的热点key问题
7. redis的更新策略(先操作数据库还是先操作缓存)
8. 分布式数据一致性
9. 一致性哈希
10. 消息队列原理介绍(不太会)
11. full gc问题,怎么排查
12. jvm的回收策略
13. ClassLoader原理和应用
14. 注解的原理
15. 数据库原理,数据库中间件,索引优化
16. aop原理和应用
17. 大数据相关,MapReduce
18. 机器学习有了解么?
19. Java的新技术,以及技术最新进展
20. Docker的原理

三面

1、全程项目
2、讨论了一下数据库表设计

四面

1、项目介绍
2、分布式事务
3、Java三大特性
4、数据库表设计
5、RPC原理
6、netty原理
7、降级策略和降级框架

HR

都是基础问题

 

 

 

 

 

你可能感兴趣的:(算法)