前言
今天要和大家一起分享的是一位面试菜鸟网络的Java研发工程师的面试经验,他通过了前三次电话面试,但是在第四次现场面试中没有能够成功通过,最终遗憾地与菜鸟的Offer说再见。但是正如这位同学自己说的“面试道路上最大的收获就是我要搞明白我是怎么失败的”,这件事情很重要,也希望大家能够从他的经历中吸取经验和教训。
一面
面试官还是比较温柔的,上来先让我做了自我介绍,我简单介绍了一下自己有2年半的工作经验,之前做过什么项目,用了什么技术等等,面试官没有详细问项目的细节,但是项目的具体的功能和业务一定要讲清楚。中间穿插着会问到一些基础知识。总共面试了50多分钟,Java基础能问的基本都问完了,基本的内容包括:
1、从JVM到垃圾回收,最后一个问题好像是fullgc是否可以回收方法区
2、从线程池的构造函数参数到队列的拒绝策略
3、Redis支持的数据类型到跳跃表,Redis同步策略,如何自己实现LRU等
4、MySQL索引的数据结构,为什么用B+树不用B树,事务隔离级别,聚集锁非聚集锁,这个地方着重点一下,问到了一个非常细节的问题,如何用可重复读的隔离级别避免幻读问题。当时这个问题没有答出来,后来上网查了后可以使用间隙锁来实现。
5、Spring相关、bean的生命周期等,最后问到循环引用问题Spring如何处理的。
6、concurrentHash