主题
界面
主题
面试题不是一张「背诵清单」,而是一棵有先修关系的知识树 —— 顺序错了,背了也讲不出来;顺序对了,越背越通。
★ 本节用工具把 24 道高频题映射到课程,并按先修关系算出「复习顺序」 ✓✓:
24 道题 → 26 个知识点(全部已生成课程,覆盖率 24/24)
复习顺序(拓扑分层):
第 1 层(13 个):S1-016 集合、S1-017 HashMap、S6-001 并发基础、S6-007 JVM 内存结构…
第 2 层(7 个) :S6-002 synchronized、S6-008 类加载、S6-014 分布式事务…
第 3-5 层 :S6-003 CAS、S6-010 GC 日志、S6-004 线程池、S6-011 Arthas、S6-005 JUC、S6-006 虚拟线程★ 工具:python -X utf8 scripts/career/interview_index.py ✓
★ 「背了 100 道题,面试还是答不上」的三个原因 ✗✗:
| 原因 | 表现 |
|---|---|
| 顺序错 ✗ | 先背 GC 再背类加载,JVM 的知识连不起来 |
| 只背结论 ✗✗ | 说得出「双亲委派」四个字,说不清为什么需要 ✗ |
| 没有项目锚点 ✗✗✗ | 答完概念就结束,面试官等不到「你在项目里怎么用」 |
| 层次 | 例子 | 回答要求 |
|---|---|---|
| 概念 | 什么是双亲委派 | 一句话定义 + 三个作用 ✓ |
| 原理 | 为什么要委派?打破会怎样 | 机制 + 后果(本知识库每节都有实测)✓✓ |
| 场景 | 你们线上出现过类冲突吗 | 项目锚点(《类加载机制》 的实测)✓✓✓ |
| 设计 | 让你设计一个类加载隔离的插件系统 | 开放题,考权衡(《高并发系统设计》 的方法)✓✓ |
★ 大部分人的准备停在第一层,而面试的分差在第三、四层 ✓✓✓。
第 1 层(13 个):S1-016 集合、S1-017 HashMap、S3-003 索引、S3-004 事务与隔离级别、
S3-036 进程与端口排查、S4-008 缓存三病、S4-010 Redis 分布式锁、
S4-014 消息可靠性、S4-023 Seata、S6-001 并发基础、S6-007 JVM 内存结构、
S6-013 CAP 与 BASE、T2-007 接口幂等
第 2 层(7 个) :S3-007 Spring AOP 与事务、S4-009 缓存一致性、S6-002 synchronized、
S6-008 类加载、S6-009 GC 算法、S6-014 分布式事务、S6-015 分布式 ID
第 3 层(2 个) :S6-003 CAS 与 AQS、S6-010 GC 日志与调优
第 4 层(2 个) :S6-004 线程池、S6-011 Arthas 与线上诊断
第 5 层(2 个) :S6-005 JUC 容器、S6-006 虚拟线程★★ 用法 ✓✓✓:按层推进,层内随意,跨层不能反 —— 第 1 层的内容会被后面每一层反复引用(例如 《并发基础:线程、锁与内存模型》 的 JMM 是 《synchronized 与 volatile》、《Lock、CAS 与 AQS》、《JUC 工具类与并发容器》 的地基)✓✓。
① 是什么(10 秒):一句话定义
② 为什么(60 秒):机制 + 代价/取舍(**每门课都给了实测数据**)
③ 项目里怎么用(60 秒+):我遇到过什么、怎么定位、结果如何★ 示范(「GC 日志怎么读?」) ✓✓✓:
① 一条 Pause 行读三段:回收前→回收后的存活量、堆容量、停顿
② 关键是「存活量趋势」与「Full GC 原因分布」(S6-010 实测:System.gc() 与 Compaction 含义完全不同)
③ 我在项目里用 64M 堆复现过 OOM:存活量顶到 64M 上限 → Full GC 5 次 → OOM: Java heap space★★ 第三层是分水岭 ✓✓:别人背概念,你讲现象与数据 ✓✓✓。
| 动作 | 做法 | 工具 |
|---|---|---|
| 自述 | 先自己讲一遍(录音/对同伴),再对照课程补漏 | 本节的索引 ✓ |
| 错题本 | 记「卡在哪一层」:概念忘了 / 原理说不清 / 没锚点 | 三列笔记 ✓ |
| 复盘 | 每次面试后 24 小时内回填(《模拟面试与面试复盘》) | 复盘模板 ✓ |
★ 判断「过关」的标准 ✓✓✓:能不看讲义讲满 3 分钟,且接得住两层追问 ✓。
HashMap → 扩容 → 并发下的问题 → ConcurrentHashMap 怎么解决 → CAS/JMM
双亲委派 → 为什么需要 → 什么时候打破 → Tomcat 热部署 → 类卸载与泄漏
线程池 → 参数 → 队列与拒绝策略 → 线上参数怎么定 → 与 GC/JVM 的关系★ 每条链都能在本知识库里走通(索引里已经标好课程)✓✓✓ —— 面试官顺着链追问,你在链上正好都有「实测锚点」 ✓。
# 编辑 scripts/career/interview_index.py 的 QUESTIONS 列表
QUESTIONS = [
("HashMap 的底层结构与扩容机制?", ["S1-017"]),
...
]第 1 周:第 1 层(13 个)—— 每天 2 个,自述 + 补漏
第 2 周:第 2 层 + 回炉第 1 层错题
第 3 周:第 3-5 层 + 全量模拟面试(S7-006)App 的顺序是「热度」,不是「依赖」✗✗
→ 背到 S6 发现要先回头补 JMM,前面的时间被浪费 ✓✓工具:scripts/career/interview_index.py
运行:
python -X utf8 scripts/career/interview_index.py实测输出(节选):
===== 高频面试题 → 课程索引(24 题)=====
1. HashMap 的底层结构与扩容机制?
→ S1-017 HashMap(已生成)
12. 线上 CPU 100% 怎么排查?
→ S6-011 Arthas 与线上问题诊断(已生成);S3-036 进程与端口排查(已生成)
15. 分布式事务有哪些方案?怎么选?
→ S6-014 分布式事务(已生成);S4-023 Seata 分布式事务(已生成)
===== 覆盖率 =====
题目覆盖:24/24;涉及知识点 26 个,其中已生成课程 26 个
===== 复习顺序(按先修关系拓扑分层:先第 1 层,再第 2 层…)=====
第 1 层(13 个):…
第 5 层(2 个):S6-005 JUC 工具类与并发容器、S6-006 虚拟线程QUESTIONS:观察它落在第几层 ✓✓✓;| # | 错误 | 说明 |
|---|---|---|
| 1 | 按热度乱序背 ✗✗ | 先修没学,越背越乱 ✓✓ |
| 2 | 只背结论不备原理 ✗✗ | 面试官一追问就崩 ✓✓ |
| 3 | 没有项目锚点 ✗✗✗ | 第三层空白,分差就在这里 ✓✓ |
| 4 | 不录音不复盘 ✗ | 自述时才发现讲不顺已经太晚 ✓ |
| 5 | 答案只背一份 ✗ | 同一题要准备「30 秒版」与「3 分钟版」✓✓ |
验收方式:24 道题里,≥ 20 道能讲满 3 分钟并接住两层追问。
扩展任务:把「追问链」显式画出来(每链 4-5 个节点),贴在复习笔记首页 ✓✓
《算法题准备策略》 算法题准备策略 —— 另一条独立的准备线。