美团-到家-Java开发-1面-11.17(80min)
秋招的第十五次面试。
- 自我介绍。
- 项目相关:
②Kafka(一些宏观的名词解释,比如broker, topic,partion;消费者是自己去拉队列的数据,还是生产者把数据发给消费者;为什么要使用Kafka。)
③SpringBoot(IOC是什么,用了什么设计模式,虽然说没有看过源码,但还是引导我去分析源码实现;AOP是什么,用了什么设计模式,同样,虽然说没有看过源码,但还是引导我去分析源码实现;Bean的生命周期。)
④es(刚好面试官部门就是做推荐搜索的,业务中对es用的很多,但在我表明我只是简单应用之后,没有再追问。)
- Java基础:ArrayList和LinkedList的区别和优缺点;HashMap的底层实现,1.8之前是怎么样的,1.8呢?
- MySQL:索引(底层实现,为什么用B+树);锁(表锁,行锁,表锁和行锁哪个开销大,行锁发生锁冲突的概率比较小)
- Java并发机制:悲观的并发策略;乐观的并发策略;详细问了synchronized的底层是怎么实现的(锁升级,synchronized里可以放String对象吗,不可以,锁不住);CAS机制(3个值,ABA问题,ABA问题怎么解决。)
- JVM:JVM的组成;垃圾回收机制;新生代和老年代的划分比例(答错了,是1:2,15次之后转为老年代,老年代占比大);
- 场景题:怎么求两个链表的相交部分(简单方法:双重循环;进阶:跳表;继续进阶:数据量非常大时,考虑桶排序,还有几种技术方案没记住);针对我的项目提问,怎么实现一键登录。
- 其他:一致性哈希了解吗?
- 算法题:LeetCode21.合并两个有序链表(第二次碰到这个题目了,快手也考过)。
- 反问:面试官比较面善,人也很好。所以问了一个比较私人的问题(选择延毕半年找实习再就业是一个好的选择吗),面试官建议说不要害怕,不给自己留退路,逼自己一把,有差不多的offer就按时毕业入职。另外建议我可以加强对Redis源码和Spring源码的学习。
秋招遇到的最好的面试官,循循善诱,有引导有启发有建议。
从项目到基础到代码风格,各个方面都考察到了,不是机械式的你问我答,有引导有讨论,从浅入深,从一般到复杂,不会的还会给我讲明白,这是什么神仙面试官啊!
这次和往常面试很不一样的一点是,面试官会引导,比如我说没看过源码,面试官会说没关系,那你觉得可以怎么实现?然后一边提问一边提示一边复盘,他想看到你思考和解决问题的能力,这个过程真的让我学习到了很多。
希望能够有二面,有这样的mentor也太幸福了!
另,其实在这次面试前,我经历了一个长时间的内耗,翻来覆去不想面不想准备,就是心处精神油锅的状态,一度想打电话取消面试。但我反复告诉自己,没关系的,完成比完美更重要,完成它就好了,不用100分,60分也行,不及格也没关系。80min分钟面试结束,我又一次战胜了自己,为自己积累了下一次站在能力边界向外突破的勇气。勇气就是在这样一次次做让自己害怕的事情中积累出来的,不要被自己打倒!