在二面的时候,相较于一面的常规问题,更倾向问项目,也问的更深入。
1. 请先介绍下项目。
2. 项目的主要功能是什么?(回答了使用Redis较多,特别是用互斥锁来防止缓存击穿)
3. 那你如何解决缓存击穿问题?击穿、穿透和雪崩有什么不同?
4. 你认为击穿、穿透和雪崩区分的根据是什么?我认为因为它们各自有不同的解决方案。
5. 能介绍下这些问题的解决方案吗?我采取的措施是将不存在于数据库和缓存中的无效key缓存在Redis里,值设置为空字符串,下次查询时直接返回,避免查询数据库。
6. 常见的垃圾回收器有哪些?CMS的缺点是什么?CMS存在浮动垃圾问题,你了解吗?(我不太清楚,面试精灵给的答案也没马上看懂)
7. 当垃圾碎片严重时,有什么应急措施吗?(这个照着精灵读就行)
8. 你刚提到G1能实现可预测的停顿时间,能详细说明吗?(G1的实现方式)
9. 你能解释一下布隆过滤器的工作原理吗?
10. 我用乐观锁来解决库存超卖问题,在减少数据库中优惠券库存的同时要求库存必须大于0。
11. 描述一下你如何使用分布式锁确保每人只能抢一张优惠券。
12. 你刚才讲了CMS的并发标记和重新标记,重新标记解决了什么问题?可能需要重新标记的对象该如何分类?
13. 给了一个SQL,在SQL查询中,使用了哪些索引,为什么?结合B+树结构解释下查询过程。
14. 反问环节,我询问了一些关于业务的问题。
15. 你的实习目标是什么?
第二天竟然通过了二面,本来没想到能这么顺利。
面试题目