Skip to content
Go back

Java后端学习路线——从语言基础到分布式系统

Java 后端学习路线

一句话结论(30s)

Java 后端学习要”源码级理解 + 量级思维”两条腿走路——因为只背结论无法应对面试追问(HashMap 为什么容量是 2 的幂、树化阈值为什么是 8),只有每学一个中间件回答”解决了什么问题、有什么代价、原理是什么”,并能讲清 100 到 100 万用户的瓶颈与方案,才算真正掌握。

核心原理(2min)

底层深入(5-10min)

阶段一:语言基础(2-3 个月)

学习方法

不要止于”会用”——看源码。HashMap 为什么容量是 2 的幂?为什么扰动函数是 h ^ (h >>> 16)?这些问题你回答得了,说明你读懂了源码,不只是背了结论。

思考穿插:为什么”会用 HashMap”和”读懂 HashMap 为什么容量是 2 的幂”是两个层次?因为”会用”只解决眼前的需求,“为什么这么设计”才决定你在面试和排查里走多远——容量取 2 的幂,才能用 (n-1) & hash 代替取模、让高低位都参与散列,追到这一层,你才算理解了设计者的权衡,而不是背了个结论。

阶段二:框架与中间件(3-4 个月)

学习方法

每学一个中间件,回答自己的三个问题:解决了什么问题、有什么代价、原理是什么。 比如 Redisson 分布式锁——解决了 SET NX EX 的锁超时/误删/不可重入三个坑,代价是引入了 Redis 依赖(如果 Redis 宕机则所有服务等锁不可用),原理是 Lua 脚本原子执行 + Hash 数据结构可重入计数。

思考穿插:为什么中间件三问里”代价”这一问不能省?因为任何技术都是权衡,没有免费午餐——Redisson 解决三个坑的同时,把可用性押在了 Redis 上。面试官问”有什么代价”时,其实在筛掉那些只会背优点、不懂边界的候选人;能说出代价,才证明你的理解是完整的。

阶段三:系统设计与项目实战(2-3 个月)

学习方法

不以”会做”为止——要能从 M (10 用户)到 10M 用户每个量级的瓶颈和方案都能讲清楚:100 用户 → 单体足够;1000 → 数据库索引 + 连接池优化;1 万 → 缓存 + 读写分离;10 万 → 分库分表 + 消息队列削峰;100 万 → 多维拆分 + 多级缓存 + 熔断降级。

思考穿插:为什么要练”量级思维”,把 100 到 100 万用户每个档的瓶颈都讲清楚?因为系统设计的核心是”规模变了,瓶颈就变”——100 用户加索引是过度设计,100 万用户不加缓存就是事故。能按量级给方案,说明你不是只会背某个技术名词,而是理解每个方案对应的规模边界。

工具链

学习心得

  1. 不要背八股——问”为什么这么设计”。HashMap 为什么树化阈值是 8?因为泊松分布中链表长度达到 8 的概率约为 6×10⁻⁸——这是”正常情况不会发生”的信号。
  2. 写博客:把学到的东西用自己的话讲一遍——输出是最好的学习
  3. 项目中应用:学了虚拟线程别只记 Pinning 的定义——在项目中启用 JFR 抓一下 Pinning 事件,看到实际的栈,理解才算完整
  4. 深挖一个领域:至少在并发(JUC)、MySQL(索引+事务+日志)或 Redis(数据结构+持久化+高可用)中选一个方向精读到源码级

章末提问

这条路线里的每个”为什么”,都是最值得追问的点。以下是三个典型追问:

  1. “HashMap 的容量为什么是 2 的幂?” 结论先行:「因为这样可以用 (n-1) & hash 代替取模运算,且扰动后高低位都参与散列,分布更均匀。」因为 对方在验证你是”读懂源码”还是”背结论”——能讲出”取 2 的幂是为了位运算 + 均匀散列”这套因果,才证明你真的追过设计动机。

  2. “学中间件时为什么要问’代价是什么’?” 结论先行:「因为没有免费午餐——任何技术都用新代价换新收益,比如 Redisson 分布式锁解决了锁超时/误删/不可重入,却把可用性押在 Redis 上。」因为 对方要筛掉只会背优点的候选人,能说出代价说明你理解技术边界,做选型时才不会盲目。

  3. “从 1 万用户到 10 万用户,你会加什么方案?为什么?” 结论先行:「分库分表 + 消息队列削峰——因为单库写入和瞬时流量成为新瓶颈,读写分离只解决了读、解决不了写。」因为 这题在考量级思维——你要能说出”上一级方案为什么不够用、这一级补的是什么短板”,而不是把所有技术名词一股脑堆上来。


Share this post on:

Previous Post
STAR法则——把项目经历讲成故事的完整模板
Next Post
HR面试完全手册——价值观、稳定性、潜力三个维度