Java高频面试题+破解技巧
【拼多多集团-PDD校园招聘】内推链接:https://careers.pddglobalhr.com/campus/grad/detail?t=DBh7T7ZBAy,内推码:DBh7T7ZBAy。服务端研发工程师 期待你的加入!我们一起,无拼不青春!(通过此链接投递计入内推,内推简历优先筛选~)
一、基础必考题
- HashMap底层原理答:数组+链表/红黑树,负载因子0.75,扩容2倍。加分项:对比JDK1.7头插法(死循环风险)和1.8尾插法优化
- volatile关键字三步答法:① 保证可见性 ② 禁止指令重排 ③ 对比synchronized(不保证原子性)场景题:单例模式双重检测为什么要加volatile?
二、并发编程杀手锏
3. ThreadLocal内存泄漏
- 致命细节:弱引用只针对key,value仍需remove()清理
- 面试话术:"我们项目用完后会主动remove,同时包装成try-finally块保证执行"
- AQS实现原理手绘CLH队列图,重点说state变量和CAS操作实战套话:"ReentrantLock就是基于AQS,我们系统用它在秒杀场景做分布式锁"
三、JVM调优实战
5. OOM排查四板斧
- ① jmap -heap看分区 ② MAT分析dump文件
- ③ 结合jstack查线程 ④ 阿里Arthas实时诊断
- 案例:"上次用MAT发现是Redis缓存大对象没设TTL"
四、Spring刁钻问题
6. 循环依赖解决
- 三级缓存示意图必画!重点说earlySingletonObjects的作用
- 陷阱题:"@Async注解为什么会导致循环依赖失败?"