面向准备 Java 后端方向校招(实习 / 提前批 / 秋招)的同学,整理一份 能在 3–6 个月内执行完 的最小可行清单。
本文不是 “Java 八股文目录”,而是 从复盘视角整理的执行计划:哪些一定要做,哪些不必做,做到什么程度算够。
写在最前
很多同学准备校招的痛苦不在 “没东西学”,而在:
- 八股、项目、算法、行为面试 同时压过来
- 看到大家都在刷剑指 Offer、看 JVM 视频,不知道自己缺哪一块
- 实际面试时被一个 没准备过的问题 卡住,怀疑前面学的全部白费
如果你只有 3–6 个月时间,建议把准备拆成 5 个核心模块 + 1 个心态模块,不要追求面面俱到。
一、基础知识:覆盖面 vs 深度
1.1 必须掌握的基础
下面这些是 Java 后端方向 几乎一定会被问 的:
| 模块 | 必须掌握 | 可选深入 |
|---|---|---|
| Java 基础 | 集合、泛型、异常、IO、反射、注解 | 字节码、Unsafe、ClassLoader |
| JVM | 内存区域、GC 算法、垃圾收集器、类加载 | JIT、逃逸分析、ZGC / Shenandoah |
| 并发 | synchronized、Lock、AQS、volatile、线程池 | CAS 内存语义、JMM happens-before |
| Spring | IoC、AOP、Bean 生命周期、事务、@Transactional | Spring Boot 自动配置、starter 原理 |
| MySQL | 索引、事务、隔离级别、慢查询、explain | InnoDB MVCC、redo / undo / binlog |
| Redis | 数据结构、过期策略、持久化、热 key / 大 key | 集群分片、主从复制、cluster slot |
| 计算机基础 | TCP / HTTP、操作系统进程线程、IO 模型 | epoll、零拷贝、NUMA |
判断标准:能用 自己的话 解释 “为什么是这样设计的”,并能举出一个工程上的对应场景。
1.2 不要追求 100%
覆盖面 > 深度,但每个模块都要 能讲出 1 个小细节。
很多人陷入 “一定要把 JVM 学到字节码层面” 的误区。事实上:
- 一面 / 二面通常考 覆盖面:每个方向都问几道
- 三面 / 主管面才会偶尔问 深度:通常只挑你简历上写的那个方向深挖
策略:所有模块都过一遍,1–2 个模块深挖到能讲半小时,作为加分项。
1.3 推荐资源
只列 “投入产出比最高” 的:
- JVM:周志明《深入理解 Java 虚拟机》(前 4 章 + 第 7–11 章足够)
- 并发:Brian Goetz《Java 并发编程实战》(前 8 章 + 11、13 章)
- MySQL:极客时间《MySQL 实战 45 讲》
- Redis:官方文档 + 《Redis 设计与实现》
- Spring:官方文档 IoC / AOP / Tx 三章 + 一个真实项目走 debug
不推荐:单靠看八股博客。八股能让你 “看起来会”,但面试官追问 1 层就会露馅。
二、项目:1 个能讲清楚的项目 > 3 个堆 README 的项目
2.1 项目最小要求
校招简历上的项目,应该满足以下 最低标准:
- 能复现:你自己能从空目录起一遍,跑通主流程
- 能讲清楚:从需求 → 模块拆分 → 关键设计 → 你的取舍 → 上线后效果
- 有 1 个亮点:性能优化、设计取舍、踩坑记录、一段非平凡代码
- 代码可读:模块划分清晰,没有一坨 5000 行的 controller
2.2 项目讲解的固定结构
不管你做了什么项目,都建议按这个结构准备一份 2 分钟、5 分钟、15 分钟 三个版本的讲解:
1. 项目背景:解决什么问题,对谁有用
2. 技术选型:为什么用 A 不用 B(必须能说出 2–3 条理由)
3. 核心模块:哪些模块,模块之间怎么协作
4. 我的工作:你具体做了什么(不要说 “我们一起做了”)
5. 关键难点:遇到了什么真实问题,怎么解决的
6. 反思:现在重做,会怎么改
关键:第 5、6 点最容易拿分。能 承认局限并提出改进,比 “项目完美无瑕” 可信得多。
2.3 没有项目怎么办
如果完全没有可用的项目,可以快速做 一个 “小而完整” 的项目,例如:
- Mini 短链服务:缓存、限流、统计、防刷的完整链路
- 博客 / 文档系统:标签、搜索、权限、文件存储
- 简易任务调度系统:定时任务、失败重试、可视化看板
- 接入第三方 API 的小工具:天气、汇率、AI 问答
标准是:别人能从 README 启动它,并且你能讲出每一处技术决策。
三、算法:建立 “能写对” 的稳定能力
3.1 算法不是为了 “刷题数”
算法的目标不是 “刷过多少题”,而是:
- 看到一道新题,能说出它属于什么模型
- 能在 30 分钟内 写出第一版可运行代码
- 能 自我调试,不依赖标准答案
3.2 推荐的训练计划
[第 1 周] 数组、字符串、链表、双指针 20 题
[第 2 周] 栈、队列、哈希、滑动窗口 20 题
[第 3 周] 二叉树(DFS / BFS / 递归) 25 题
[第 4 周] 贪心 + 简单 DP 15 题
[第 5 周] 背包 / 区间 DP 15 题
[第 6 周] 图论入门(最短路、并查集) 10 题
[第 7 周] 字符串 / 二分 / 前缀和 15 题
[第 8 周+] 随机刷 + 模拟面试 ∞
具体题目可以从 LeetCode Hot 100、剑指 Offer、Codeforces div2 ABC 中挑。
3.3 训练原则
- 每道题写 3 遍:第一遍看答案理解 → 第二遍闭卷写 → 第三遍 1 周后回写
- 刷错题本:把 “想不到 / 写错” 的题集中起来反复看
- 写注释:在自己代码里写 “为什么这样写”,逼自己想清楚
如果你有时间,强烈建议在 背包问题算法笔记 这一类 “经典模型” 上多花点时间——背包是 DP 学习里最 可迁移 的模块之一。
四、行为面:把 “你是谁” 讲清楚
4.1 行为面常见问题
| 类别 | 典型问题 |
|---|---|
| 自我认知 | 自我介绍、最大优点 / 缺点、为什么选我们 |
| 项目相关 | 项目难点、最有成就感的事、踩过的坑 |
| 团队协作 | 和组员意见不合时怎么办、如何推动一件事 |
| 失败经验 | 一次失败的经历、最近一次主动学习新东西 |
| 职业规划 | 3 年后想做什么、岗位偏好 |
4.2 STAR 结构
回答行为题的标准结构:
Situation 当时的背景
Task 你需要做什么
Action 你具体做了什么
Result 结果是什么,反思是什么
每一个点用 1–2 个真实案例 支撑,不要全是 “我会”、“我能”。
4.3 自我介绍准备 3 个版本
- 30 秒版:姓名 + 学校 + 1 个标签 + 1 个项目
- 1 分钟版:上面 + 项目角色 + 技能栈
- 2 分钟版:上面 + 关键经历 + 想做什么方向
每次面试前 现场口播 1 遍,比心里想一遍稳得多。
五、面试节奏:从 “投递” 到 “拿 offer”
5.1 时间分配建议
3–6 个月前:基础知识 50% + 项目 30% + 算法 20%
1–3 个月前:算法 40% + 项目复盘 30% + 八股回顾 20% + 行为面 10%
1 周内:模拟面试 + 项目讲解 + 行为题口播
5.2 模拟面试
强烈建议 在投正式简历之前,找同学或学长姐做 3–5 次模拟面试:
- 每次 60 分钟,覆盖 “自我介绍 → 项目 → 八股 → 算法”
- 录音 / 录屏,事后回放
- 让对方 写一份反馈,包括 “最容易扣分的 3 个地方”
模拟面试是少数 成本极低、收益极高 的准备方式,不要跳过。
5.3 投递策略
- 第一波:投感兴趣但不重要的公司,练手
- 第二波:投感兴趣且重要的公司,打磨
- 第三波:投目标公司,冲击
不要一开始就把 “最想去” 的公司全投了,第一面经常会失常。
六、心态:长期能跑赢的真正原因
6.1 接受 “别人比你快”
校招最难的不是知识,而是 看到别人提前拿 offer 时的焦虑。 请记住:
- 春招、秋招、补招 总共有 3 轮,没必要赌一次
- 实习转正、社招通道 依然敞开
- 多一年实习 通常比 多投 50 家公司 更有用
6.2 不要被 “大佬经验贴” 绑架
每年都有大佬发 “3 个月从 0 到大厂” 的经验贴。请理性看待:
- 信息密度高,适合参考方向,不适合直接照搬
- 大佬的起点 / 投入 / 运气 你不一定有
- 你需要的是 适合自己的最小可行清单,不是 “最优方案”
6.3 健康的工作节奏
- 每天写 8 小时代码 + 学习 比 “14 小时崩溃式投入” 更可持续
- 每周休 1 天 不是浪费,是恢复
- 睡眠 是性价比最高的投资
总结:最小可行清单
如果上面太多记不住,记住这一段:
[ ] 基础知识覆盖:JVM / 并发 / Spring / MySQL / Redis 各过一遍
[ ] 1 个能讲清楚的项目:背景 / 选型 / 难点 / 反思 4 段式
[ ] 算法日常训练:每天 1–2 题,重点掌握 DP / 树 / 图
[ ] 自我介绍 3 个版本:30 秒 / 1 分钟 / 2 分钟
[ ] 模拟面试至少 3 次:录音 + 反馈
[ ] 投递分三波:练手 → 打磨 → 冲击
[ ] 心态长期化:别赌一次,别照抄大佬
完成这个清单的同学,通常都能拿到一份不错的 offer。
如果你正在准备校招,欢迎把这篇文章存下来,每周对一次进度。
相关阅读
- Java 性能问题定位:从系统指标到应用排查 — 项目里讲技术深度的好材料
- Redis 大 key 问题 — 简历可以写的真实工程问题之一
- MySQL 与 Elasticsearch 双写一致性 — 简历可以写的设计取舍之一
- 背包问题算法笔记 — 算法训练里 “投入产出比” 最高的模块之一