如果你只有三个月来准备Java面试那这90天就是你职业生涯中最值钱的一段时间。别指望“慢慢积累”或者“随缘刷题”系统的规划比盲目努力重要一百倍。下面这份路线图是我从上百场面试和辅导案例中总结出来的它不追求花哨只追求在一个季度内让你拿到心仪的offer。第一个月地基必须打到地心第一个月的核心任务只有一个把所有面试会问到的底层基础变成你的肌肉记忆。Java面试不是考你用过什么框架而是考你对JVM、并发、集合框架的理解深度。很多人在这一步就折了因为他们觉得“会用”就等于“懂”但面试官要的是“能聊出源码级别的实现”。每天至少花2小时啃《深入理解Java虚拟机》重点看内存区域、垃圾回收算法、类加载机制。别只看概念要能画图。比如新生代和老年代的内存比例为什么是1:2CMS和G1的STW分别在哪个阶段能用自己的话讲清楚“一个对象从创建到被回收的完整过程”才算合格。同时配合JVM调优实战去跑一个简单的Web应用然后用jstat、jmap、jstack实际观察堆内存和线程状态。这一步不是为了调优而是为了让你对理论有体感。并发编程是另一个重灾区。不要停留在synchronized和volatile的背诵上你要能回答AQS的实现原理、ReentrantLock的公平锁与非公平锁区别、ConcurrentHashMap在JDK7和JDK8中的差异以及为什么改。最狠的面试题往往是“你写一个死锁然后分析如何避免”。强烈建议你手撸一个简单的线程池只用核心参数corePoolSize、maxPoolSize、workQueue、handler然后观察线程的创建和销毁。这比背一百道八股文都有用。集合框架也得深挖。HashMap的扩容机制、红黑树退化为链表的条件、ConcurrentHashMap的size()方法为什么用sumCount。别小看这些大厂面试特别喜欢在HashMap上层层追问直到你卡住。比如put方法第一行就调用了hash(key)这个hash函数为什么这么设计如果让你改进你会怎么做这种问题没有标准答案但能看出你是否真正思考过源码背后的权衡。第一个月不要碰Spring不要碰微服务不要碰任何高阶话题。如果你连JVM内存模型都解释不清谈什么高并发业务设计把80%的精力砸在基础核心上剩下20%用来刷LeetCode。算法题每天两道优先刷Top 100高频题比如两数之和、反转链表、二叉树遍历、动态规划入门。算法不是用来炫技的而是证明你的逻辑推导能力。面试时写不出代码的人往往不是不会算法而是平时练习太少。第二个月框架与项目一个都不能少第二个月你要做的事情很明确把Spring全家桶变成你的肌肉记忆同时用项目把它串起来。很多候选人能说出IoC和AOP的定义但问“Spring如何解决循环依赖”就卡壳。真正的差距不在于知道而在于能画出三级缓存的部分流程图。你需要理解为什么只能用三级缓存二级缓存不行吗为什么只有singleton作用域才能解决循环依赖我建议你花一周时间手动搭建一个基于Spring Boot MyBatis Plus的RESTful API项目。不用太复杂一个用户模块、一个订单模块就够。但在这个过程中你必须搞清楚Spring Boot的自动配置原理、SpringBootApplication注解的组合结构、配置文件的加载优先级。别用IDEA的脚手架一键生成手写配置类和启动类你会对底层有完全不同的认知。接着引入Spring Cloud的基础组件比如Nacos做注册中心和配置中心、OpenFeign做远程调用、Gateway做路由。但注意不要为了微服务而微服务。你需要想清楚为什么要拆拆了之后有哪些新问题数据一致性、分布式事务、服务间调用超时面试中经常出现“你项目中的分布式事务怎么解决的”这个问题你至少要知道TCC、Saga、Seata AT模式各自的优缺点。不一定要用过但要能讲出选型逻辑。项目经验是面试中唯一能让你“讲故事”的地方。你必须准备一个“技术攻坚”的亮点哪怕这个小项目里没有真实的高并发场景你也可以主动制造问题。比如模拟一次OOM然后讲你如何通过dump文件分析出内存泄漏点或者写一个简单的秒杀接口用Redis限流、MQ异步削峰最后解释为什么这样做能扛住瞬时流量。面试官不会在意你的项目是否真实上线他们只关注你在解决具体问题时是否具备系统思维。第二个月的后半段开始系统学习数据库知识。MySQL的索引结构B树、聚簇索引与非聚簇索引区别、Explain执行计划分析、慢SQL优化。很多候选人死在“为什么用B树而不是B树”这个问题上你不仅要能说B树的所有叶子节点都用指针连接利于范围查询还要能结合磁盘IO的预读原理。同时Redis必须精通五种数据类型底层实现、缓存穿透/击穿/雪崩的解决方案、Redis集群模式主从、哨兵、Cluster的区别。一个常见的灵魂拷问Redis为什么快除了基于内存还要提到IO多路复用、单线程模型避免上下文切换。第三个月冲刺、模拟与心态训练最后一个月你要把前面两个月积累的所有知识点转化成面试现场的流畅输出。这个阶段最忌讳的是“我感觉我都会了”因为你知道的和你面试中说出来的可能是两回事。你需要每天进行一次压力面试模拟对着镜子或者录音。挑几个高频问题讲一下JVM的垃圾回收流程Spring的Bean生命周期你项目中最大的挑战是什么。每道题控制在3-5分钟结构清晰先说结论再展开细节最后总结。同时开始扫盲那些“冷门但高频”的考点。比如Netty的Reactor模型、RocketMQ的消息可靠性保证、Elasticsearch的倒排索引原理、分布式ID生成方案雪花算法优缺点。你不知道别人知道你就会在竞争中被筛掉。但注意广度与深度的平衡对于你项目中使用过的中间件要做到能画架构图、能讲源码核心类对于没使用过的至少要知道基本概念和适用场景。算法题要进入“限时盲写”阶段。每天3道用LeetCode的模拟面试模式每道题限制15分钟。不要只刷MediumHard题也要练但优先保证Easy和Medium的准确率。面试中常见的动态规划背包、最长子序列、二叉树遍历前中后序层序、图拓扑排序、最短路径至少每种题型手写过5遍。不要依赖IDE的自动补全面试现场只有白板或文本编辑器你的手写能力决定你能不能过。最后两周开始刷系统设计题。虽然Java面试主要看编码和原理但资深岗位往往有系统设计环节。重点练习设计一个短链系统、设计一个秒杀系统、设计一个IM消息系统。每个题目都要从“需求分析-数据模型-核心流程-架构分层-难点与优化”五个维度来展开。不需要画出特别精美的图但要能画出模块之间的交互箭头并解释为什么这样设计。比如短链系统为什么用62进制为什么不直接对原始URL取MD5这些细节才是面试官关注的加分点。第三个月也是心态管理的关键期。不要因为某一次模拟面试没答好就否定自己面试本质上是概率游戏。你可能在10场面试中遇到8场正好问到你的强项也可能连续3场都踩到盲区。最聪明的做法不是补全所有知识点时间不够而是把你最强的2-3个点讲深讲透让面试官觉得“这个人有深度”。比如你Deep Dive了JVM调优和ConcurrentHashMap源码几乎每个面试你都可以主动引导话题“关于并发我还想补充一下ConcurrentHashMap的size()方法演变……”——这种主动展示比被动回答问题更能打动面试官。不必完美但要完整三个月的最大忌讳是“完美主义”。你不可能把所有书都读完把所有代码都手写一遍。你要做的是在有限时间内覆盖面试最高频的考点并且每个考点都有自己独特的理解。记住面试官要的不是你对标准答案的复读机而是你独立解决问题的思考框架。最后给你一个行动清单不用打印记在心里第一周JVM内存模型与垃圾回收第二周并发编程AQS、线程池、锁升级第三周集合框架HashMap红黑树、ConcurrentHashMap第四周算法题刷30道高频easymedium第五周Spring Boot自动配置 循环依赖第六周MySQL索引优化 Redis缓存设计第七周微服务架构Nacos、Gateway、分布式事务第八周项目重构 技术亮点包装第九、十周系统设计训练 模拟面试第十一、十二周查漏补缺 真实面试实战现在关掉这篇文章立刻打开IDE开始写代码。三个月后你会感谢今天这个决定。