八股不是用来背的,是用来对齐的
这套教程和市面上八股文最大的区别:它不追求条数,追求「每条都能落到一段代码或一道题上」。 凡是找不到落点的知识点,我们宁可标出来说「这个不在这里讲」,也不给你凑一段看上去很完整的文字。 与 算法专题 双向打通:读到相关的地方直接跳,学完一键跳回原位置。
0.1怎么用这份精讲
如果你只有很短的时间,按这个顺序用:
| 场景 | 读哪里 | 怎么读 |
|---|---|---|
| 面试前一周 | 各章末尾的「速记卡」+ 附录 A.1 | 只看四槽表,能复述就过,卡住的再回正文 |
| 面试前一晚 | 附录 A.2 对照总索引 + A.4 追问链路 | 练「一题被追到第五层」,不背新内容 |
| 想真正搞懂 | 按主题顺序读正文 | 每节读完合上页面,用四槽自述一遍 |
| 正在刷算法题 | 算法章末尾的「关联八股」区块 | 跳到对应节,读完点顶部返回条回去 |
0.2十六个主题的路线图
顺序不是按书的目录排的,而是按「先建立骨架,再补血肉」: 集合和并发这两块决定了你写代码的底层直觉,JVM 解释「为什么」,Spring/MySQL/Redis 是业务里天天用的三件套, 最后用一章手写题把前面所有原理落到「能在白纸上写出来」。
| # | 主题 | 状态 | 与算法教程的对接点 |
|---|---|---|---|
| 01 | 集合框架 | 已上线 | 哈希表、链表(寻址 / 扩容 / LRU) |
| 02 | Java 基础 | 已上线 | 字符串算法(常量池 / intern / StringBuilder) |
| 03 | JVM 内存与对象 | 已上线 | 栈帧与递归深度(回溯、链表递归) |
| 04 | 垃圾回收与调优 | 待写 | 无直接对接(独立主题) |
| 05 | 类加载与反射 | 待写 | 无直接对接(框架的地基) |
| 06 | 并发基础 | 待写 | 无直接对接(独立主题) |
| 07 | AQS 与锁 | 待写 | 链表(CLH 双向队列) |
| 08 | 线程池与并发容器 | 待写 | 栈与队列、堆(阻塞队列 / 延迟队列) |
| 09 | Spring IOC 与循环依赖 | 待写 | 图论(拓扑排序与环检测) |
| 10 | Spring AOP 与事务 | 待写 | 无直接对接(独立主题) |
| 11 | MySQL 索引 | 已上线 | 二叉搜索树、Trie(B+ 树 / 前缀匹配) |
| 12 | MySQL 事务与 MVCC | 已上线 | 链表(undo 版本链)、图论环检测(死锁) |
| 13 | Redis 原理与缓存 | 待写 | 位运算、堆(布隆过滤器 / 跳表 / zset) |
| 14 | 网络与 IO 模型 | 待写 | 滑动窗口(拥塞控制的同构) |
| 15 | 设计模式与工程手写题 | 待写 | 链表、位运算、限流(LRU / 布隆 / 令牌桶) |
| 16 | 场景题与项目追问 | 待写 | 无直接对接(独立主题) |
0.3四槽背法:把开放题压成定长
八股难背的根本原因不是内容多,而是每道题的答案长度不一样: 有的三句说完,有的能讲五分钟。长度不固定,你就无法判断「我背完了没有」,复习时也不知道该回忆到什么程度。
所以本教程所有知识点都用同一个四槽结构:
| 槽位 | 回答什么 | 长度要求 |
|---|---|---|
| 题 | 这道八股是从哪来的 | 一条具体的算法题或代码场景 |
| 八股 | 标准问法是什么 | 一句话,能被面试官原样问出来 |
| 一句话 | 三十秒内说完的答案 | 严格一到两句,超出就说明没抓住主干 |
| 追问 | 对方接下来会问什么 | 2–3 个,每个配半句答案 |
这个结构带来三个实际好处:
- 可自查。默写时你能明确知道「我漏了追问槽」,而不是模糊地觉得「好像还差点什么」。
- 可双向索引。看到题能想到八股(正向),被问到八股能想到题(反向)——两个方向都能练。
- 抗换问法。因为「追问」槽已经提前演练了变形问法,遇到没背过的问法不会当场卡死。
第一遍:照抄四槽表,理解每槽为什么这么填。
第二遍:只留「八股」一列,自己补其余三槽。
第三遍:空白纸,给一个关键词,把四槽全写出来。
0.4怎么和算法教程互相跳
这是本套教程和算法专题之间最关键的一处设计,值得单独说明,因为它决定了你会不会「跳着跳着就丢了」。
两个方向的入口
- 算法 → 八股:每个算法专题正文末尾有「关联八股」区块,列出该章涉及但没讲透的底层原理。点进去就是对应的八股小节。
- 八股 → 算法:同理,八股章末尾会列出「这个问题在哪些算法题里会用到」,点进去直接到那道题。
返回条:不会丢阅读位置
跳转过去的页面顶部会出现一条蓝色的返回条:
点它精确回到你刚才读的那一小节,不是回到算法教程首页。这是普通超链接做不到的——
普通链接一跳就丢位置,跳两次你就不想再跳了。实现上靠 URL 里带来源参数(?from=…@s2),
不需要浏览器历史,所以分享链接给别人、或者关掉页面明天再打开,返回条依然可用。
跳转纪律(重要)
0.5背八股的三个误区
误区一:按「条数」定目标。
「背完 300 条」是个假目标。面试官不按条数问,他按你简历和项目里写过的东西问。 你说用过 Redis,他就从缓存穿透问到持久化;你没提过 JVM 调优,他大概率不深问。 正确做法是按「你写过的技术栈」建立纵深,每个技术栈备 5~8 条完整四槽,比泛背 300 条有效得多。
误区二:只背结论,不背推导。
「容量是 2 的幂」背下来只要三秒,但面试官接着问「那 3 的幂行不行」,背结论的人当场就崩。 能推导的人会说「不行,因为 n-1 要全为 1 才能用与运算代替取模」——同一句话,但抗追问能力差一个量级。
误区三:把「看过」当「会了」。
看的时候觉得「这个我懂」,合上页面说不出来,这是最常见的假象。 判断标准很简单:能不能不看任何材料,用嘴说满 30 秒且不跑题。说不到 30 秒就是没会, 说得超过 3 分钟还没到重点,说明你记住了细节但没抓住主干。
0.6常见疑问
Q1. 这套教程和网上的八股文有什么区别?
三点:① 每条都挂了算法题或代码场景,不是孤立的问答; ② 固定四槽结构,可自查、可双向索引; ③ 明确标出不讲的部分,比如垃圾回收器的具体参数调优,我们只讲原理不背参数—— 因为那些参数每个公司、每个版本都不一样,背了反而有害。
Q2. 我需要先学完算法再看这个吗?
不需要,两者可以并行。建议节奏是「算法刷到某个专题,顺手把对应的八股读完」—— 这时候你有具体场景,理解成本最低。反过来先背八股再刷题也行,但容易变成「知道原理却用不上」。
Q3. 为什么没有「一天背完」的速成版?
因为速成版只能给结论,而结论在真实面试里的存活时间不超过两个追问。 附录 A.1 已经是压缩到极限的版本(每条一行),但它的用法是「复习」不是「初学」。
Q4. 内容多久更新一次?版本号在哪看?
每页底部的「内容版本」就是生成时间,同一批页面版本号一致。若你发现某页和别的页不一致,说明那页是旧的, 刷新或等 CDN 过期即可。