1. 先搞清楚现在面试到底在考什么,别盲目背题如果你现在还在用三年前的套路准备Java面试,大概率会碰壁。现在的面试,尤其是面对AI工具普及和降本增效的大环境,已经不再是单纯问你“HashMap原理”或者背出“Spring Bean生命周期”就能过关了。面试官更看重的是你能否把技术点串联起来,解决实际的工程问题,以及你是否具备在AI辅助下依然能做出关键判断和深度设计的能力。简单说,面试准备要分三层:基础八股文:这是入场券,必须扎实,但死记硬背没用,得理解背后的“为什么”。场景设计与系统思维:这是拉开差距的关键。给你一个模糊的需求,比如“设计一个秒杀系统”或“如何保证分布式事务一致性”,考察你如何拆解、选型、权衡。工程实践与排错能力:这直接决定你上手干活的速度。比如,给你一段代码或一个线上问题(CPU飙高、Full GC频繁),看你如何定位和解决。所以,别再按“Java基础-集合-并发-JVM-MySQL-Spring”的线性顺序一条道走到黑了。应该以问题域为核心,进行网状复习。比如,谈到“高并发”,你需要同时调动“Java并发包(JUC)”、“JVM内存与锁优化”、“MySQL锁与事务”、“Spring事务传播机制”等多个模块的知识。2. Java基础与并发编程:理解“所以然”,而不只是“其然”很多人觉得Java基础简单,但面试官随便挖深一点就露怯。比如,问你String的intern()方法,你不能只背“将字符串放入常量池”,得能说清楚不同JDK版本下常量池位置的变化(永久代到元空间),以及不当使用可能带来的内存问题。2.1 集合框架:重点在并发安全和设计取舍HashMap是必考题,但别停留在1.7和1.8的头插/尾插、链表转红黑树。要能说清楚:为什么线程不安全?结合扩容resize()过程,画图说明并发put可能导致链表成环或数据丢失。替代方案有哪些?ConcurrentHashMap在1.7和1.8中如何实现分段锁和CAS+synchronized?Hashtable和Collections.synchronizedMap()为什么性能差?如何根据场景选型?读多写少用ConcurrentHashMap,需要排序用ConcurrentSkipListMap,本地缓存且允许脏读可以考虑HashMap+读写锁。一个常考的场景题是:“有一个HashMap,现在需要多线程安全地累加里面的一个值,怎么做?” 这就能引出对AtomicInteger、synchronized、LongAdder以及ConcurrentHashMap的compute方法的讨论。2.2 并发编程:核心是管程和内存模型并发是区分初级和中级程序员的重要分水岭。死记Reentra