Java 后端八股精讲一问一答,背得下也答得出 速查 追问链路 ⌂ 全部教程
首页 / Java 后端八股精讲

八股不是用来背的,是用来对齐的

这套教程和市面上八股文最大的区别:它不追求条数,追求「每条都能落到一段代码或一道题上」。 凡是找不到落点的知识点,我们宁可标出来说「这个不在这里讲」,也不给你凑一段看上去很完整的文字。 与 算法专题 双向打通:读到相关的地方直接跳,学完一键跳回原位置。

覆盖范围
16 个主题:集合 / JVM / 并发 / Spring / MySQL / Redis / 网络
组织方式
每个知识点固定四槽:题 / 八股 / 一句话 / 追问
与算法关系
双向跳转,返回不丢阅读位置
当前进度
5 / 16 主题已上线

0.1怎么用这份精讲

如果你只有很短的时间,按这个顺序用:

场景读哪里怎么读
面试前一周各章末尾的「速记卡」+ 附录 A.1只看四槽表,能复述就过,卡住的再回正文
面试前一晚附录 A.2 对照总索引 + A.4 追问链路练「一题被追到第五层」,不背新内容
想真正搞懂按主题顺序读正文每节读完合上页面,用四槽自述一遍
正在刷算法题算法章末尾的「关联八股」区块跳到对应节,读完点顶部返回条回去
不要把这份教程当「题库」用。它的目标是让你在被追问时能推导出答案, 而不是在记忆里检索一句背过的话。区别很实际:背下来的答案遇到「换个问法」就崩,能推导的答案换十种问法都稳。 所以每一条我们都尽量给出「为什么」,即便那会让它比别人的八股长一点。

0.2十六个主题的路线图

顺序不是按书的目录排的,而是按「先建立骨架,再补血肉」: 集合和并发这两块决定了你写代码的底层直觉,JVM 解释「为什么」,Spring/MySQL/Redis 是业务里天天用的三件套, 最后用一章手写题把前面所有原理落到「能在白纸上写出来」。

#主题状态与算法教程的对接点
01集合框架已上线哈希表、链表(寻址 / 扩容 / LRU)
02Java 基础已上线字符串算法(常量池 / intern / StringBuilder)
03JVM 内存与对象已上线栈帧与递归深度(回溯、链表递归)
04垃圾回收与调优待写无直接对接(独立主题)
05类加载与反射待写无直接对接(框架的地基)
06并发基础待写无直接对接(独立主题)
07AQS 与锁待写链表(CLH 双向队列)
08线程池与并发容器待写栈与队列、堆(阻塞队列 / 延迟队列)
09Spring IOC 与循环依赖待写图论(拓扑排序与环检测)
10Spring AOP 与事务待写无直接对接(独立主题)
11MySQL 索引已上线二叉搜索树、Trie(B+ 树 / 前缀匹配)
12MySQL 事务与 MVCC已上线链表(undo 版本链)、图论环检测(死锁)
13Redis 原理与缓存待写位运算、堆(布隆过滤器 / 跳表 / zset)
14网络与 IO 模型待写滑动窗口(拥塞控制的同构)
15设计模式与工程手写题待写链表、位运算、限流(LRU / 布隆 / 令牌桶)
16场景题与项目追问待写无直接对接(独立主题)
为什么「待写」也要列出来?因为你需要知道边界在哪。 一份诚实标注进度的路线图,比一份看上去全写完、实际半空的目录有用—— 你能据此决定「这部分我另找资料」还是「等它更新」。

0.3四槽背法:把开放题压成定长

八股难背的根本原因不是内容多,而是每道题的答案长度不一样: 有的三句说完,有的能讲五分钟。长度不固定,你就无法判断「我背完了没有」,复习时也不知道该回忆到什么程度。

所以本教程所有知识点都用同一个四槽结构:

槽位回答什么长度要求
题这道八股是从哪来的一条具体的算法题或代码场景
八股标准问法是什么一句话,能被面试官原样问出来
一句话三十秒内说完的答案严格一到两句,超出就说明没抓住主干
追问对方接下来会问什么2–3 个,每个配半句答案

这个结构带来三个实际好处:

  1. 可自查。默写时你能明确知道「我漏了追问槽」,而不是模糊地觉得「好像还差点什么」。
  2. 可双向索引。看到题能想到八股(正向),被问到八股能想到题(反向)——两个方向都能练。
  3. 抗换问法。因为「追问」槽已经提前演练了变形问法,遇到没背过的问法不会当场卡死。
练习方法(配合三遍法):
第一遍:照抄四槽表,理解每槽为什么这么填。
第二遍:只留「八股」一列,自己补其余三槽。
第三遍:空白纸,给一个关键词,把四槽全写出来。

0.4怎么和算法教程互相跳

这是本套教程和算法专题之间最关键的一处设计,值得单独说明,因为它决定了你会不会「跳着跳着就丢了」。

两个方向的入口

返回条:不会丢阅读位置

跳转过去的页面顶部会出现一条蓝色的返回条:

← 返回 哈希表 · 2.2 Java 哈希三件套怎么选 读完点这里回去,不会丢阅读位置

点它精确回到你刚才读的那一小节,不是回到算法教程首页。这是普通超链接做不到的—— 普通链接一跳就丢位置,跳两次你就不想再跳了。实现上靠 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 过期即可。

一句话记忆(总览):八股的价值不在「背过多少条」,而在被追问时能不能从原理往下推—— 四槽结构就是为这件事设计的。