大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。
最近跟一个读者聊天,他准备了3个月,刚刚参加完阿里巴巴的第三面,电话面,嗯,挂了…
阿里Java后端三面凉经
一面
面试官人很好,前一天就打电话预约。不过实话实说不知道为什么我投的Java研发简历被做IOT算法的部门捞起来了,所以这一面很短,总共15分钟:
- 自我介绍
- 直接上来就手撕代码:重建二叉树
- JVM:类加载机制,沙箱安全
- 问到运行时数据区,我答漏了一个程序计数器,然后面试官就接着问到了程序计数器。
- 问可达性分析,什么样的对象可以作为GcRoot、加载的时候把这些对象提前找好用的OopMap
- 新生代几次对象几次到老年代?
- 有没有可能直接就把刚new出来的对象放在老年代?(第一次碰到这个问题,有些慌,我答的有可能,毕竟有些垃圾回收器会有一个空间分配担保策略)
- 多线程:volatile,CAS,总线嗅探,CPU缓存一致性协议
- 讲一讲ReentrantLock、ThreadLocal、Lock和Synchronized的区别。
- CountDownLatch,ABC三个线程怎么去保证顺序执行?
- 数据库优化:B+树,Hash索引,最左前缀,索引优化分析,一条龙服务,都问了一下。
- Redis:一来就是分布式锁,然后别的就没问了,可能也是觉得我回答得还行就跳过了。
- HashMap:扩容的触发条件是什么?我答只是一个达到负载就扩容了,明显错了。然后面试官纠正说负载和Hash冲突同时发生。
- 死锁怎么排查?
- JVM调优怎么做?
- 问了几个索引题。字符串要写单引号,字符串查询怎么增加查询效率,字符串索引太大了