扎实的 Java 功底能力矩阵与量化要求:从入门到专家

内容纲要

Executive summary

“扎实的 Java 功底”可以被定义为:在语言与库、JVM 运行时、并发与性能、框架机制、工程化交付与观测、工具链诊断、系统设计与容量规划、以及团队协作实践这八个技能域上,形成可迁移、可验证、可复现的能力闭环,并能用证据(测试、基准、profiling 产物、线上数据、设计文档、复盘报告)证明。该闭环的核心不是“知道很多点”,而是“能在真实约束下交付、定位、取舍、复盘并改进”。

为便于逐项打卡,本报告采用四级分层,并对每个技能域给出:可观测行为/产出、示例任务(含量化通过标准)、代码片段要求(评审要点)、面试/自测题、学习资源(带优先级与时长估计)。底部提供跨域训练路径、评估表、以及可直接落地的 12 周周级日程表。

能力矩阵与可量化要求

四级分层定义与通用验收口径

等级 能力边界(你能独立解决什么) 通用“证据链”要求(至少包含)
初级 能在明确需求与既有框架约束下,可靠完成开发与自测;对常见坑有“避坑清单”。 单元测试/基础集成测试(测试报告可追溯)、一次可读可维护的重构 PR、基础监控项或日志规范落地。
中级 能在不确定性更高的场景下完成设计与落地;能解释关键行为(并发可见性、GC 停顿、事务传播等),并能做基于数据的优化。 一份设计说明(含权衡)、一次性能或故障定位报告(含工具输出)、至少一个基准测试(JMH 或压测)与回归结论。
高级 能对系统稳定性/性能/成本负责;能建立“可观测性+容量+发布+回滚”的工程闭环;能识别并系统性消除风险(并发、序列化、安全配置等)。 线上事故复盘(含行动项)、容量规划/压测报告、可观测性仪表盘与告警规则、关键模块的“性能/正确性回归门禁”。
专家 能在组织层面定义标准与方法论;能把复杂问题拆解为可验证假设;能带团队形成持续改进体系(工程效率与稳定性指标)。 组织级规范(编码/性能/观测/安全/发布)、跨团队技术复盘机制、关键性能/可靠性目标(SLO/错误预算或等价体系)落地并持续迭代。

技能依赖图(用于规划学习顺序)

语言与基础库
JVM 与内存模型
框架原理
并发与性能
工具链与调试
工程能力: 测试/部署/监控/安全/演进
系统设计与容量规划
软技能与团队实践

Show code

该依赖图的依据是:并发正确性依赖 Java 内存模型与 happens-before;性能优化依赖可观测与 profiling;工程能力落地依赖监控/告警/发布/回滚等实践;系统设计与容量规划需要监控信号与负载管理方法论支撑。


技能域:语言与基础库(语义、契约、API 设计与复杂度)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 能正确使用集合/异常/IO;能解释 equals/hashCode 的基本契约;代码可读、无明显资源泄漏。 任务:实现一个带过期时间的内存缓存(Map + 定时清理),并写单元测试。通过标准:测试覆盖关键分支;资源均可关闭;无明显并发错误(单线程版本)。 1) 覆写 equals/hashCode 必须成对且遵守契约;2) try-with-resources 管理资源;3) 集合容量与负载因子有意识设置(避免频繁 rehash)。 1) 为什么“equals 相等必须 hashCode 相等”? 2) try-with-resources 解决了什么问题? P0:Java SE Object.equals/hashCode 文档(1h)。 P0:try-with-resources 官方教程(1h)。 P1:HashMap 性能参数说明(1h)。
中级 能在业务模块内做 API 设计与重构;能利用 Stream 编写可读的流水线;能识别常见性能陷阱(装箱、过度分配、错误的数据结构)。 任务:把一段 for-loop 处理逻辑重构为 Stream(含短路、过滤、映射),并写基准/对比(可简化)。通过标准:解释“惰性求值/终止操作”;重构前后行为一致。 1) Stream 中间操作不产生副作用(或能解释副作用风险);2) Optional 不滥用(不当作“必需字段容器”);3) 对热点路径避免不必要分配与装箱。 1) Stream 为什么是惰性的,它的优化机会在哪里? 2) HashMap 的 loadFactor/initialCapacity 影响什么? P0:Stream 官方 Javadoc(2h)。 P1:java.util.stream 包说明(2h)。 P1:HashMap Javadoc(1h)。
高级 能基于语言规范做边界推导(泛型擦除、反射/注解行为、序列化风险);能设计稳定的库/模块边界与演进策略。 任务:发布一个内部工具库(含 API 版本策略与兼容说明),并提供示例与测试。通过标准:对外 API 变更有兼容层;异常/返回值语义稳定可测。 1) API 设计包含失败语义(异常分层或错误码);2) 泛型边界清晰(extends/super 使用正确);3) 序列化/反序列化使用有“默认拒绝+白名单”思路。 1) 解释“类型擦除”对运行时反射/框架的影响。 2) 为什么反序列化需要额外防护? P0:Java 语言规范(JLS,挑:类型/泛型/异常/并发章节,8–12h)。 P1:Java 序列化安全与过滤机制(2–3h)。
专家 能以规范为依据定义编码与 API 标准;能在代码评审中捕捉“契约破坏类 bug”;能指导团队形成库级最佳实践。 任务:制定并推动落地“语言与 core lib 使用规范”(含示例与静态检查策略)。通过标准:规范可执行(可自动检查部分条款),并有团队 adoption 数据(如 PR 模板/检查项)。 1) 形成“契约类清单”:equals/hashCode、比较器、不可变性、资源生命周期;2) 对性能敏感代码具备“数据结构选择+复杂度”论证。 1) 设计一个对外 SDK:如何保证二进制兼容与可演进? 2) 如何用 Javadoc/测试/契约来防御误用? P0:JLS(按需深读,持续)。 P1:高质量 API 文档与契约(以官方 Javadoc 为标杆,持续)。

技能域:JVM 与内存模型(类加载、运行时数据区、GC 与 OOM 定位)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 知道 JVM 运行时数据区的基本概念;能区分堆/栈/方法区等并理解 OOM 的大类。 任务:本地复现一次 OOM(堆或元空间任选)并写“复现步骤+现象+初步解释”。通过标准:能说明“为什么是这个 OOM”。 1) 避免显式调用 System.gc()(除非实验);2) 资源释放与对象生命周期清晰;3) 知道 GC 不是“内存泄漏的解决方案”。 1) JVM 里 heap/method area 的角色是什么? 2) OutOfMemoryError 常见来源有哪些? P0:JVM 规范:运行时数据区(2–3h)。 P1:Oracle JVM 诊断工具概览(1–2h)。
中级 能读 GC 日志并识别“吞吐 vs 停顿”权衡;理解 JMM 的 happens-before 与可见性问题。 任务:选择一种 GC(如 G1),跑一次压测并给出调参建议(Xms/Xmx/停顿目标)。通过标准:建议能用日志/指标解释,而非“经验拍脑袋”。 1) 对共享变量使用正确同步原语;2) 对对象发布(publication)与 final 字段语义有正确理解;3) 能避免“看似线程安全”的错误写法。 1) 什么是 happens-before? 2) 为什么 GC 目标是“可接受的暂停”而不是“完全无暂停”? P0:JLS 第 17 章(并发与内存模型,6–10h)。 P0:HotSpot GC Tuning Guide(4–8h)。
高级 能用工具链定位内存/GC/类加载问题;能对低延迟 GC(如 ZGC)做可行性评估并解释代价。 任务:对一次“线上内存持续上涨”做完整定位报告。通过标准:包含 heap dump / 采样 / 指标证据(任选组合),并给出长期修复(代码/配置/监控)。 1) 代码层面减少不必要分配、控制对象存活;2) 对线程/连接/直接内存等资源有上限控制;3) 能解释“为何某些调参有效”。 1) 如何区分“内存泄漏”与“缓存增长/对象存活长”? 2) ZGC 的核心目标是什么,适用边界在哪里? P0:ZGC 官方介绍与设计(4–6h)。 P1:JDK 诊断工具(jcmd/jstack/jmap 等,4–6h)。 P1:JFR 入门(3–5h)。
专家 能把 JVM/GC/JMM 知识转化为组织级排障与调优范式;能定义“可验证的性能假设”并持续回归。 任务:建立团队级“性能回归门禁”(基准/压测/指标)。通过标准:出现回归能快速定位(profiling 证据),并能追踪恢复。 1) 对关键路径提供“可观测+可解释”的代码结构;2) 对 GC/线程/内存的关键参数有默认策略与例外流程。 1) 如何设计一套 JVM 参数基线并避免被个别案例“带偏”? 2) 如何用 jcstress/JMH 证明并发正确性与性能结论? P0:OpenJDK JMH & jcstress(持续)。 P1:SRE 监控/告警方法作为性能门禁的组织化参照(持续)。

技能域:并发与性能(线程池、JMM、基准测试、profiling 与回归)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 会使用线程池/并发集合解决基本需求;知道“不要随手 new Thread”。 任务:实现一个并发任务处理器(生产者-消费者),并能优雅停机。通过标准:无明显死锁;任务失败有日志;线程池可配置。 1) ThreadPoolExecutor 参数可解释(core/max/queue/reject);2) 正确处理异常与拒绝策略;3) 避免共享可变状态。 1) 线程池为何“队列无限大”可能导致 maxPoolSize 永远不起作用? 2) CompletableFuture 默认用什么执行器? P0:ThreadPoolExecutor Javadoc(2–3h)。 P1:CompletableFuture Javadoc(2–3h)。
中级 能用“并发语义+证据”解释线上问题(如可见性/竞态);能做基准测试避免伪结论。 任务:用 JMH 对两种实现做对比(如队列/Map),并给结论与注意事项。通过标准:能说明 JMH 的意义与避免常见陷阱(预热、JIT、逃逸等)。 1) 对共享状态使用合适同步(锁/原子/无锁结构);2) 能写出可退出、可超时的并发流程;3) 在关键路径上避免阻塞级联。 1) happens-before 与 volatile 的边界是什么? 2) 何时用 JMH,何时用压测? P0:JMH 官方项目页与 README(4–6h)。 P1:JLS 内存模型章节(按需复习,4–8h)。
高级 能用 profiling 定位 CPU/锁/分配热点;能把性能优化做成“可回归”的工程动作。 任务:对一个“TP99 延迟升高”进行定位演练。通过标准:产出火焰图/JFR 事件/锁竞争证据之一,并提出可验证的改动与回归结果。 1) 用 async-profiler / JFR 捕获热点并解释火焰图;2) 能区分 CPU-time 与 wall-time;3) 锁/队列/线程池瓶颈有清晰治理策略。 1) 什么是 safepoint bias,为什么采样 profiler 会受影响? 2) 火焰图宽度与调用栈方向如何解读? P0:async-profiler 官方说明(3–5h)。 P0:火焰图原理(2–3h)。 P1:JFR 文档与 API(3–6h)。
专家 能在硬件/OS/JVM/应用之间建立完整性能模型;能用并发压力测试工具验证极端竞态。 任务:建立“性能与成本”基线(吞吐、延迟、CPU、内存)并驱动季度级优化。通过标准:能用指标证明收益,并避免引入正确性问题。 1) 并发正确性可用 jcstress 证明;2) 对性能回归设立门禁;3) 对系统热点有“结构级优化”(批量化、背压、隔离)。 1) 如何设计一套线程池隔离策略防止级联故障? 2) 用什么方式证明“无锁优化”没有牺牲正确性? P0:jcstress 官方项目(持续)。 P1:系统性能方法论(参考 Brendan Gregg 体系,持续)。

技能域:框架原理(Spring / MyBatis 等)(IoC/AOP/事务/缓存/执行器)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 会用 Spring 的依赖注入与常用注解;会用 MyBatis 完成 CRUD;知道“事务要在 service 层”。 任务:写一个包含事务的下单流程(含回滚)。通过标准:能解释默认传播行为;能写测试验证回滚。 1) Bean 注入方式规范(构造注入优先);2) 事务边界清晰;3) MyBatis 映射与实体一致,避免随意修改返回对象。 1) Spring IoC 的核心是什么? 2) MyBatis 的本地缓存何时会被清空? P0:Spring IoC 官方文档(3–5h)。 P0:MyBatis Getting Started(2–3h)。 P1:JUnit 5 User Guide(2–4h)。
中级 理解 AOP 代理方式(JDK/CGLIB)与常见坑(自调用导致事务失效等);能解释传播行为的业务含义。 任务:复现并修复事务失效(如内部方法调用不走代理)。通过标准:能说明原因并给出可维护修复方式。 1) 能解释代理机制选择(JDK 动态代理 vs CGLIB);2) 事务的传播/隔离/超时配置合理;3) MyBatis ExecutorType 选择有依据。 1) PROPAGATION_REQUIREDREQUIRES_NEW 的关键差异? 2) MyBatis 的 SIMPLE/REUSE/BATCH 有何行为差异? P0:Spring 事务传播官方文档(2–4h)。 P0:Spring AOP 代理机制(2–4h)。 P1:MyBatis ExecutorType 文档(1–2h)。
高级 能基于源码/文档定位框架级行为(缓存、批处理、事务同步);能设计“框架边界内”的性能与一致性方案。 任务:将写入链路改造成批处理(BATCH),并确保异常/回滚语义正确。通过标准:SQL 行为、缓存刷新、提交边界可解释且可测试。 1) MyBatis 本地缓存/二级缓存行为对一致性影响可控;2) 对事务的 timeout/isolation 配置有边界意识;3) 能写出可回滚的数据库演进脚本策略(如灰度/双写)。 1) MyBatis localCacheScope=SESSION 的风险是什么? 2) Spring 声明式事务为什么依赖 AOP? P0:MyBatis 缓存与生命周期说明(2–3h)。 P1:Spring 声明式事务原理(3–6h)。
专家 能在组织层面制定框架使用约束与性能基线;能用“约束+工具”降低框架误用概率。 任务:制定并落地框架最佳实践(事务、缓存、批处理、代理限制)。通过标准:有自动化检查/模板;事故减少可量化(如事务失效类缺陷下降)。 1) 把框架隐式行为显式化(文档+断言+测试);2) 关键路径提供可观测点(SQL/事务/线程池指标)。 1) 如何为事务传播与隔离建立“用例驱动”的选择指南? 2) 如何验证批处理在异常情况下不会产生部分提交? P0:Spring 官方参考文档(持续查阅)。 P1:MyBatis 官方文档与 API(持续查阅)。

技能域:工程能力(测试/部署/监控/安全/演进)(可交付、可观测、可回滚)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 能写单元测试;会用 Maven/Gradle 跑通 CI 的基本阶段;有基础日志规范意识。 任务:为模块补齐测试并配置 surefire 报告。通过标准:CI 可稳定运行;报告可追溯。 1) 测试可读、断言明确;2) 隔离外部依赖(必要时 mock);3) 构建脚本可复现。 1) 单元测试与集成测试边界怎么定? 2) Maven 的生命周期里 test 阶段做什么? P0:JUnit 5 User Guide(4–6h)。 P0:Maven 生命周期与 Surefire(2–4h)。
中级 能写可靠的集成测试(含真实依赖);能容器化应用并理解镜像/容器区别;能做基础指标埋点与告警。 任务:用 Testcontainers 跑一套“带数据库”的集成测试。通过标准:新同事无需本地装 DB 即可运行;测试在 CI 可重复。 1) 指标选型正确:计数用 Counter、延迟用 Timer;2) Dockerfile 采用多阶段构建降低体积;3) 基本告警有阈值与降噪。 1) 为什么 Timer 天然包含 count + totalTime? 2) 容器与镜像是什么关系? P0:Testcontainers 入门(3–5h)。 P0:Docker 镜像/构建最佳实践(3–5h)。 P1:Prometheus 埋点指南(2–3h)。
高级 能建立可观测性三件套(指标/日志/链路)并驱动故障定位;能在 K8s 上定义健康探针与发布策略;能把安全要求固化为流程与默认配置。 任务:为服务补齐 SLI 指标与告警(四个黄金信号或等价),并演练一次故障定位。通过标准:告警可行动;定位路径可复现。 1) 使用 OpenTelemetry 的上下文关联(trace/span 与日志关联);2) 读写路径具备限流/超时/降级;3) 反序列化默认拒绝,配置序列化过滤器。 1) readiness 与 liveness 探针差异是什么,分别防什么问题? 2) 为什么“反序列化等于代码执行”是一种风险? P0:K8s 探针与生命周期(3–5h)。 P0:OpenTelemetry 规范与日志/trace 关联(4–8h)。 P0:Oracle 反序列化安全与过滤/JEP 290(3–6h)。
专家 能把工程能力做成组织级系统:发布/回滚/事故响应/安全基线/效率指标;能用数据衡量交付与稳定性,并持续改进。 任务:落地 1) 交付指标(DORA) 2) 安全基线(OWASP Top 10 对照) 3) 可靠性复盘机制。通过标准:指标可持续采集;行动项闭环;缺陷率下降可追踪。 1) 默认安全:最小权限、配置硬化;2) 工程门禁:性能/安全/测试/依赖漏洞扫描;3) 重大变更必须可回滚与可观测。 1) DORA 指标如何定义与采集? 2) 如何避免“安全日志与监控缺失”导致事故扩大? P0:DORA 指标定义(2–3h 起,持续运营)。 P0:OWASP Top 10(2–4h)。 P1:SRE 事故响应与复盘文化(持续)。

技能域:工具链与调试(JDK 工具、JFR/JMC、heap/thread dump、线上诊断)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 熟练用 IDE 断点与日志定位问题;知道 jstack/jmap 的存在与用途。 任务:对“线程卡住”做一次 thread dump 分析。通过标准:能识别死锁/阻塞点(至少能解释一条关键栈)。 1) 可调试性:关键路径日志带 traceId/请求标识;2) 异常日志包含上下文。 1) 什么时候用 thread dump,什么时候用 heap dump? 2) jstack 输出里你最先看什么? P0:OpenJDK Serviceability Tools 列表(1–2h)。 P1:Oracle 诊断工具概览(1–2h)。
中级 能用 jcmd/jstat/jmap/jstack 形成定位证据链;会用 VisualVM/MAT 做基础内存分析。 任务:对一次疑似泄漏的 heap dump 给出“嫌疑链”(retained size、引用链)。通过标准:能指出“谁持有谁”,并提出改动建议。 1) 提供 dump 获取脚本化流程(必要时);2) 分析结论可复现(截图/报告/步骤)。 1) MAT 的 retained size 意味着什么? 2) VisualVM 能做哪些离线分析? P0:VisualVM 文档/特性(2–4h)。 P0:Eclipse MAT(3–5h)。
高级 能在生产环境低风险采样 profiling(JFR/async-profiler);能用 Arthas 做在线诊断而不重启。 任务:对线上热点做一次低开销 profiling 并输出火焰图或 JFR 分析结论。通过标准:能解释“采样窗口/开销/结论置信度”。 1) 对生产诊断有安全边界(采样时长、权限、数据脱敏);2) 结论能映射到可执行改动;3) 改动有回归与监控。 1) JFR 的事件模型是什么? 2) Arthas 的价值是什么,适合解决什么问题? P0:JFR 官方介绍与 API(4–8h)。 P0:async-profiler(3–5h)。 P1:Arthas 简介(2–3h)。
专家 能建设团队级诊断流程与工具箱;能把 profiling/诊断融入发布与回归体系;能指导复杂事故快速收敛。 任务:定义“线上诊断操作手册”(何时用 JFR/何时用 heap dump/何时用 Arthas)。通过标准:新人可按手册完成一次定位演练并复现实验结果。 1) 形成“证据链模板”:指标→日志→trace→profiling→根因→修复→回归;2) 将工具使用最小化风险(权限、时间、审计)。 1) 如何控制诊断工具对系统的扰动? 2) 如何在缺少复现条件下仍做出高置信度结论? P0:JDK Mission Control / JMC 项目(持续)。 P1:SRE 的 troubleshooting/monitoring 原则(持续)。

技能域:系统设计与容量规划(SLO、负载、降级、数据与演进)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 能画出服务的基本组件图;能给出粗略容量估算(QPS/线程/连接)。 任务:为一个简单 REST 服务写“简版设计说明”(接口、数据、依赖、异常)。通过标准:接口语义可测试;有基本容量假设与风险点。 1) 超时/重试有上限;2) 输入校验明确;3) 错误码/异常可观测。 1) 什么是“黄金四信号”? 2) 你会如何估算线程池大小? P0:SRE 监控(黄金信号)章节(2–4h)。 P1:K8s Deployment 基础(2–3h)。
中级 能设计缓存/异步化/限流与降级;能用压测数据更新容量模型;能定义关键 SLI。 任务:对服务做一次容量规划与压测,并定义告警。通过标准:告警基于 SLI(延迟/错误率/饱和度);容量结论可复现。 1) 关键依赖调用有超时与熔断;2) 资源隔离(线程池/连接池);3) 指标命名与标签可聚合。 1) 为什么饱和度(saturation)是必须监控项? 2) 你如何设计压测让结论可信? P0:Prometheus instrumentation 指南(2–4h)。 P1:Grafana Dashboard/Alerting(3–6h)。
高级 能设计过载保护与恢复策略;能把发布/回滚与容量联动;能做“有约束的可扩展设计”。 任务:实现并演练一次“过载保护”(限流/排队/降级/熔断),并形成 runbook。通过标准:过载时系统保持可用核心功能;恢复流程清晰。 1) 降级路径可观测且可压测;2) 发布包含金丝雀与回滚策略;3) 健康探针区分 readiness/liveness。 1) 过载时为什么“排队”也可能是坏事? 2) readiness 与 liveness 如何配合发布/扩缩容? P0:SRE Workbook(Managing Load/Overload/Incident 等目录按需读,持续)。 P1:K8s 探针与流量切换(2–4h)。
专家 能建立组织级容量规划与成本治理;能把系统设计与团队结构/交付节奏对齐。 任务:推动“容量+成本+可靠性”季度治理。通过标准:关键服务有 SLO 与容量预算;DORA 指标有持续改善;架构演进有路线图。 1) 设计文档包含:SLO/容量/回滚/观测/安全;2) 变更以小批量推进并可衡量收益;3) 团队实践能支持快速流动。 1) 如何把 DORA 指标用于改进而不是“考核绑架”? 2) 团队结构如何影响架构边界与交付速度? P0:团队与组织设计(Team Topologies,8–12h)。 P1:系统性能方法论(Systems Performance,持续)。 P1:DORA 指标(持续运营)。

技能域:软技能与团队实践(代码评审、事故响应、复盘文化、效率指标)

等级 可观测行为/产出 示例任务(含通过标准) 代码片段要求(评审要点) 面试题/自测题 学习资源(优先级/时长/主要参考)
初级 PR 描述清晰;能接受评审并改进;能在需求不清时及时澄清。 任务:完成一次“高质量 PR”:背景、方案、测试、风险。通过标准:评审意见能闭环;无返工级缺陷。 1) 代码可读性优先;2) 注释解释“为什么”,不是“做了什么”;3) 变更拆小。 1) 什么样的 PR 描述算合格? 2) 你如何处理评审分歧? P0:SRE 的有效故障排查/协作原则(2–4h)。
中级 能主导模块级技术方案讨论;能推动团队形成共识;能做基本 mentoring。 任务:主持一次技术评审会(含记录与决议)。通过标准:结论可执行;后续行动项有负责人和截止时间。 1) 代码评审关注点从“风格”升级到“契约/并发/性能/安全”;2) 能给出可量化建议。 1) 如何定义团队的“可接受技术债”? 2) 如何设计可执行的编码规范? P0:监控与告警原则(帮助形成团队共同语言,2–4h)。
高级 能在事故中组织协作、稳定情绪、快速收敛;能输出复盘并推动改进;能建立 on-call/runbook 体系雏形。 任务:完成一次“事故演练 + 复盘”。通过标准:复盘包含时间线、根因、纠正/预防措施(CAPA),并在迭代中落实。 1) 事故期间变更冻结与回滚策略明确;2) 复盘避免指责,聚焦系统性改进;3) runbook 可操作。 1) 复盘里“根因”与“诱因”如何区分? 2) 什么告警应该 page 人? P0:SRE Incident Response / Postmortem Culture(6–10h)。
专家 能建立组织级持续改进系统(复盘文化、指标、培训);能把跨团队协作问题变成可行动的流程改造。 任务:推动 DORA 指标与复盘机制成为“默认动作”。通过标准:指标能持续改进;复盘行动项完成率可追踪;新人培训体系可复用。 1) 对组织级流程设计(发布、回滚、告警、评审)有模板化产物;2) 对团队负荷与认知负载有治理策略。 1) 如何避免指标被“游戏化”? 2) 如何把一次事故转化为长期能力? P0:DORA 指标官方指南(持续)。 P1:团队拓扑与认知负载(Team Topologies,持续)。

训练路径与练习项目

各技能域的短期练习、周练与 8–12 周项目(按域给可执行清单)

技能域 短期练习(1–2 小时/次) 周练(每周 3–6 小时) 8–12 周项目(跨域综合)与验收产出
语言与基础库 HashMap/Stream 写 3 个小函数:去重、分组、TopK,并解释复杂度与惰性行为。 每周做一次 API 重构:减少副作用/清晰契约/补测试。 项目中产出:内部 SDK/公共模块 + 版本演进说明 + 示例与测试(可作为团队模板)。
JVM 与内存模型 复现 1 次 OOM 或 GC 频繁,记录现象与参数。 每周读 1 小节 JLS 第 17 章并配一个小并发实验(可见性/重排)。 项目中产出:GC/内存基线(参数、指标、报警阈值)+ 一次完整内存问题定位报告(含证据)。
并发与性能 ThreadPoolExecutor 写 2 套不同队列策略并解释差异。 每周做一次 JMH 对比(两个实现/参数),写“结论+注意事项”。 项目中产出:性能回归门禁(基准/压测/Profiling)+ 火焰图/JFR 证据 + 回归对比报告。
框架原理 复现一次事务失效/代理问题并写修复 note。 每周挑 1 个 MyBatis/Spring 行为点写最小复现(缓存、传播、批处理)。 项目中产出:事务/缓存/批处理最佳实践文档 + 用例测试集(回滚/异常/一致性)。
工程能力 配置 surefire 报告 + 失败时定位到用例。 每周补齐一类工程门禁:测试、镜像构建、告警。 项目中产出:容器化 + K8s 探针 + 指标/告警 + 安全基线(含反序列化过滤与 OWASP 对照)。
工具链与调试 用 jstack/VisualVM 抓一次线程 dump。 每周做一次“证据链演练”:指标→日志→trace→profiling。 项目中产出:线上诊断手册(JFR/async-profiler/MAT/Arthas)+ 操作审计与风险控制。
系统设计与容量规划 写 1 页“接口+依赖+失败语义”简版设计。 每周更新容量模型:把压测数据反哺线程/连接/缓存策略。 项目中产出:SLO/SLI 草案、过载保护演练、压测+容量规划报告、runbook。
软技能与团队实践 用“复盘模板”复盘一个线上/演练问题。 每周主持一次技术分享或 code review 主题(并发/事务/性能/安全)。 项目中产出:复盘机制 + DORA 指标采集方案(哪怕是简化版)+ 团队规范/模板。

建议的 8–12 周综合项目题目(“一题打通八域”)

构建一个“高并发订单/任务处理服务”(可简化为单体或拆成 2–3 服务),要求包含:

  1. 并发写入与幂等(线程池隔离、队列背压);2) MyBatis 批处理与事务边界;3) 可观测性(三件套+告警);4) 容器化与 K8s 探针;5) 性能基线(JMH/压测)与 profiling 证据(JFR/async-profiler);6) 安全基线(至少覆盖“反序列化风险处置”、配置硬化与 OWASP Top 10 对照项的自检);7) 故障演练与复盘。

评估方法与自测表

自测与导师评审打分表(建议 0–3 分制)

评分口径:
0=不了解或无法独立完成;1=在指导下完成;2=能独立完成并解释;3=能形成方法/模板并指导他人复现。

维度 关键证据(必须可追溯) 自评(0–3) 导师评(0–3) 备注/行动项
语言与基础库 一次高质量重构 PR + 测试;能解释关键契约(equals/hashCode、Stream 惰性)。
JVM 与内存模型 一份 GC/内存分析报告(含工具输出或日志证据);能解释 happens-before。
并发与性能 至少 1 个 JMH 基准 + 1 次 profiling 产物(火焰图或 JFR)+ 回归结论。
框架原理 事务传播/代理/缓存等最小复现用例 + 修复方案文档。
工程能力 CI 可复现(测试报告)、容器镜像构建、告警规则与仪表盘。
工具链与调试 一次 thread dump + 一次 heap dump 或 JFR 分析(含结论与步骤)。
系统设计与容量规划 设计文档(含 SLI/容量/过载保护)+ 压测与容量报告。
软技能与团队实践 一次事故演练与复盘(行动项闭环);DORA 指标采集方案草案。

“定位问题”导师评审模板(强制证据链)

要求输出一页纸(或一个文档章节)固定结构:
现象与影响 → 关键指标变化(含时间点)→ 复现/对照 → 工具输出(thread/heap/JFR/flame 等)→ 根因假设 → 验证实验 → 修复与回归 → 长期预防。该模板与 SRE 的监控、告警与事故响应思想保持一致。

学习资源索引(优先级与时长建议)

说明:P0=必须读/常查;P1=强化;P2=扩展。时长为“初次通读的有效学习时间”,不含反复查阅。

资源 类型 适用域 优先级/时长 价值定位(你要从中得到什么)
Java Language Specification(JLS) 规范 语言、并发、内存模型 P0 / 8–12h(分段) 用规范“定锚”语言与 JMM 行为,避免凭经验争论。
Java Virtual Machine Specification(JVMS,SE21) 规范 JVM、类加载、内存区 P0 / 4–6h(核心章节) 形成 JVM 运行时模型(heap/method area/stack 等)。
HotSpot GC Tuning Guide(SE21) 官方指南 GC、调参、日志 P0 / 4–8h 用“目标—指标—参数”的方式理解 GC 选择与调优。
OpenJDK JMH 官方工具 性能基准 P0 / 4–6h 提供可信 microbenchmark 方法,避免“伪性能结论”。
OpenJDK jcstress 官方工具 并发正确性 P1 / 4–6h 用压力测试发现极端竞态,验证并发语义。
async-profiler 工具官网/源码 Profiling P0 / 3–5h 低开销采样,输出火焰图并减少 safepoint bias 影响。
火焰图(Flame Graphs) 方法论/工具 性能分析 P0 / 2–3h 建立“从 CPU 成本到代码路径”的视觉化理解。
JDK Flight Recorder(JFR) 官方工具 观测/诊断 P0 / 3–6h 统一事件模型,支持低开销持续观测与事后分析。
VisualVM 工具官网 诊断 P1 / 2–4h 结合 JDK 工具做离线/在线分析(dump、采样等)。
Eclipse MAT 工具官网 内存分析 P1 / 3–5h retained size、引用链、泄漏嫌疑报告。
Spring 官方文档(IoC/AOP/事务) 官方文档 框架原理 P0 / 8–12h(分专题) 代理、事务传播、AOP 机制与默认行为边界。
MyBatis 官方文档(缓存/执行器) 官方文档(含中文) 数据访问 P0 / 4–6h local/二级缓存生命周期、ExecutorType、flushCache 等。
Micrometer Concepts 官方文档 指标 P0 / 3–6h Timer/Counter/Gauge 的正确使用与维度模型。
Prometheus Instrumentation / Histograms 官方文档 指标工程 P0 / 3–6h 指标类型选择与直方图实践,避免不可聚合陷阱。
OpenTelemetry Spec(signals/OTLP/logs) 官方规范 Tracing/Logs P0 / 6–10h(分段) 统一 trace/metric/log 数据模型与上下文关联。
Docker Docs(镜像/构建/最佳实践) 官方文档 部署 P0 / 4–6h 镜像概念、多阶段构建、缓存与可复现性。
Kubernetes Docs(Deployment/Probe/StatefulSet) 官方文档 部署/稳定性 P0 / 6–10h 探针、滚动更新、状态管理与流量切换。
Oracle Java Secure Coding Guidelines & 反序列化防护(含 JEP 290) 官方指南/规范 安全 P0 / 4–8h 序列化过滤、输入验证与默认拒绝策略。
OWASP Top 10(2025/2021) 官方清单 安全基线 P0 / 3–5h 把安全风险变成可对照的工程检查项。
Google SRE Book / Workbook(监控/告警/事故/复盘/负载) 官方公开内容 可靠性/团队实践 P0 / 持续 指标驱动的可靠性工程、复盘文化与过载治理。
DORA Metrics Guide(dora.dev) 官方指南 工程效率 P0 / 2–3h + 持续运营 交付吞吐与不稳定性指标定义与采集口径。
Team Topologies(第二版) 书/官网 团队与架构协同 P1 / 8–12h 用团队交互模式与认知负载解释组织与架构的耦合。
Systems Performance(Brendan Gregg) 书/官网 性能方法论 P1 / 10–20h(选读) 用系统方法论解释性能现象,避免局部最优。

12 周训练计划周级日程表(面向“有项目经验的 Java 工程师”)

假设投入:工作日每天 60–90 分钟 + 周末 3–5 小时。每周必须产出“可审阅物”(文档/报告/代码/图表/工具输出),否则视为未完成。训练节奏参考 SRE 的监控与复盘理念:每周都要有可验证反馈。

周次 周一–周五(每天 60–90 分钟) 周末(3–5 小时) 本周验收产出(必须提交)
第 1 周 复盘语言基础库契约:equals/hashCode、HashMap 性能参数、Stream 惰性。 写一个小库:缓存/工具函数 + 单元测试;配置 surefire 报告。 1) PR + 测试报告 2) 一页“契约清单”
第 2 周 JLS 并发章节入门:happens-before、final/可见性(先理解概念与边界)。 做 2 个小并发实验(错误示例 + 修复对照),记录现象。 1) 并发实验笔记 2) 最小复现代码
第 3 周 JVM 运行时数据区与 OOM 类型梳理(heap/method area/stack)。 复现一次 OOM 或内存增长并写报告模板(现象→证据→解释)。 1) OOM 复现/报告 2) 参数与现象记录
第 4 周 GC 基础:收集器选择、停顿与吞吐权衡、日志字段熟悉。 为项目加 GC 日志与基本监控;写一份“基线参数说明”。 1) GC 基线文档 2) 一次 GC 日志解读示例
第 5 周 并发工具与线程池:ThreadPoolExecutor 参数/队列/拒绝策略。 写“任务处理器”并做压测;输出线程池配置建议。 1) 线程池配置说明 2) 压测结果与结论
第 6 周 JMH 入门:写 1–2 个 microbenchmark,学习避免伪结论。 做一次实现对比(例如两种缓存/队列/序列化方式),写结论。 1) JMH 代码 2) 基准结果与注意事项
第 7 周 框架原理:Spring IoC/AOP 代理机制与事务传播。 复现并修复一次事务失效;写出“踩坑卡片”。 1) 最小复现 2) 修复方案与解释
第 8 周 MyBatis:ExecutorType、local cache/2nd level cache 生命周期与风险。 把写入链路做成批处理并补齐异常/回滚用例。 1) 批处理改造 PR 2) 测试用例集
第 9 周 可观测性:Prometheus 指标设计与“可行动告警”;Micrometer 的 Timer/Counter/Gauge。 建 1 个仪表盘 + 3 条告警规则(含降噪说明)。 1) 指标清单 2) Dashboard/Alert 说明
第 10 周 Tracing/Logs:OpenTelemetry 上下文关联与 OTLP。 打通 trace ↔ log 关联(哪怕本地简化),演练一次定位。 1) 定位演练报告 2) 采集/导出配置
第 11 周 工具链诊断:JFR 与 async-profiler(采样窗口、开销、解读)。 对项目跑一次 profiling,给出热点与改动建议并回归。 1) 火焰图或 JFR 证据 2) 回归对比
第 12 周 安全与发布:反序列化过滤/JEP 290,OWASP Top 10 自检;K8s 探针与回滚思路。 做一次故障演练(过载/依赖失败/异常输入)+ 复盘。 1) 安全自检清单与整改 2) 演练复盘 + 行动项闭环

以上 12 周计划的“终局验收”不是背题,而是:你能拿出一套跨域证据链(正确性、性能、稳定性、安全、交付效率)证明自己在真实约束下做出了可复现的工程结论与改进。

高级软件工程师、高级大数据分析师、人工智能专家

close
arrow_upward