CURATED GUIDE · 固定上游版本

JavaGuide 精选学习路线:基础到面试实战

把 JavaGuide 的庞大内容拆成 6 条学习主线,附固定版本章节入口、练习产出和面试自测。

JavaGuide 内容很多,直接按仓库顺序阅读容易失去目标。这份导览只做精选导航和练习设计,不复制原文章正文。固定版本:992dae31eade2a34ba8dbbbcf5ed9de5511325ec。

建议使用当前仍受支持的 JDK,并以你所学版本的官方文档核对语法和 API。上游文章可能使用不同 JDK、框架或数据库版本,不要把示例配置原样套进生产。

路线总览

1. Java 基础:先建立可验证的语言模型

学习入口:

重点不是背定义,而是回答:值传递如何表现?对象相等与哈希为什么相关?异常何时应该捕获?泛型为什么有类型擦除?I/O 资源如何可靠关闭?

练习产出:

  1. 写一个命令行记账程序,支持增加、查询和汇总。
  2. 用集合保存记录,用自定义类型表达业务对象。
  3. 对非法金额、空输入和文件失败给出明确错误。
  4. 用自动化测试覆盖正常路径和至少三个异常分支。

自测:不看文章解释 == 与 equals、接口与抽象类、受检与非受检异常、重写与重载,并各写一个反例。

2. 集合:从使用场景推导选择

学习入口:

先会比较 ArrayList、LinkedList、HashMap、LinkedHashMap、TreeMap、HashSet 和并发集合,再读源码。理解扩容不等于背阈值,关键是它能解释查询、插入、迭代和内存权衡。

练习产出:为记账程序建立索引,对比按 ID 查询、按时间排序和按类别去重分别适合什么结构;写基准样例,但不用微小且未预热的结果夸大结论。

3. 并发:先证明正确,再谈性能

学习入口:

必须掌握共享可变状态、原子性、可见性、有序性、锁、线程池任务边界、拒绝策略、超时和取消。虚拟线程不能自动修复锁竞争、连接池耗尽或无界队列。

练习产出:写一个并发统计任务,分别用加锁和并发集合并实现;测试异常任务、超时、关闭和重复提交,记录线程数与队列上限。

4. JVM:从参数背诵转向证据

学习入口:

理解类加载、运行时数据区、对象生命周期、GC Roots、回收算法和不同收集器的取舍。不要在没有证据时“调优”。

练习产出:在本地构造可控对象分配,记录 GC 日志,观察堆使用和停顿;保存 JDK 版本、参数、输入和结论。测试结束即停止,不在共享服务器制造内存压力。

5. MySQL:用执行计划和实验说话

学习入口:

重点包括 B+ 树、联合索引最左匹配、覆盖索引、回表、事务 ACID、隔离级别、MVCC、锁与慢查询分析。文章中的执行结果要在相同 MySQL 版本和隔离级别下复核。

练习产出:在本地测试库创建订单表,构造足够区分度的数据,对三组查询执行 EXPLAIN;用两个事务会话复现可见性差异。不要在生产库做实验。

6. Redis:把缓存策略和一致性放在一起

学习入口:

先理解字符串、哈希、列表、集合和有序集合的用途,再学习缓存穿透、击穿、雪崩、过期策略、持久化和读写一致性。不存在脱离业务约束的“万能缓存模板”。

练习产出:给记账查询加缓存,明确 TTL、键规范、主动失效和异常降级;写出数据库成功而缓存删除失败时的处理方案。

面试前的项目化自测

来源与许可

上游为 Snailclimb 及 JavaGuide 贡献者,采用 Apache License 2.0。本站新增学习顺序、练习和自测,仅引用固定版本目录与章节链接,不复制原文章正文,也不把本导览称为官方面试答案。

离线保存这份精选导览

关注公众号「日拱一卒」,发送口令「Java学习」,按提示验证后下载 Markdown 或 PDF。

前往下载