🎯 高级工程师成长清单
相关笔记:[[DAY01-成长计划启动]] | [[DAY02-观察者模式]] | [[DAY02b-适配器模式]]
相关主题:[[索引-Python]] | [[索引-Java]] | [[索引-设计模式]]
📋 总纲
| 阶段 | 主题 | 天数 | 状态 |
|---|
| 一 | 设计模式与代码嗅觉 | 10天 | ▶ 进行中 |
| 二 | 代码组织与架构演进 | 8天 | ⏳ |
| 三 | 错误处理与防御性编程 | 5天 | ⏳ |
| 四 | 并发与异步(Python + Java) | 6天 | ⏳ |
| 五 | API 设计与接口思维 | 5天 | ⏳ |
| 六 | 测试策略与可测试性 | 5天 | ⏳ |
| 七 | 数据库设计与 ORM | 5天 | ⏳ |
| 八 | 系统设计入门 | 6天 | ⏳ |
| 九 | 综合实战 | 持续 | ⏳ |
阶段一:设计模式与代码嗅觉(10天)
每一课的格式:先扔烂代码 → 你找问题 → 我补刀 → 引出模式
| # | 主题 | 核心收获 | ✅ |
|---|
| 1 | 策略模式 | if-else 堆砌 → 策略查找表 | ✅ |
| 2 | 模板方法 | 固定骨架 vs 可变步骤 | ✅ |
| 3 | 观察者模式 | 核心逻辑和"顺便干的事"解耦 | ✅ |
| 4 | 适配器模式 | 接口不兼容时的粘合剂 | ✅ |
| 5 | SOLID-单一职责 | "这个类为什么改了?" | ⬜ |
| 7 | SOLID-开闭+依赖反转 | 不改旧代码加功能 | ⬜ |
| 8 | 组合 vs 继承 | 什么时候不能用继承 | ⬜ |
| 9 | 设计嗅觉综合 | 从一段 200 行烂代码找出全部问题 | ⬜ |
| 10 | 重构实战 | 把烂代码一步步改好 | ⬜ |
阶段二:代码组织与架构演进(8天)
从脚本 → 可维护工程的进化过程。
| # | 主题 | 核心收获 |
|---|
| 11 | 函数式思维 | 纯函数、副作用隔离、管道操作(Python) |
| 12 | 分层架构(三层) | Controller → Service → Repository 怎么切 |
| 13 | 依赖注入 | 别 new,传进来(Python + Java) |
| 14 | 模块化与包设计 | 一个项目应该有几个包/模块 |
| 15 | 配置管理 | 硬编码 → 环境变量 → 配置中心 |
| 16 | 中间件/Middleware | 请求进来出去之间做了什么 |
| 17 | 插件/SPI 架构 | 让第三方也能扩展你的系统 |
| 18 | 微服务思维导论 | 什么时候该拆?拆了怎么通信? |
阶段三:错误处理与防御性编程(5天)
| # | 主题 | 核心收获 |
|---|
| 19 | 错误类型与边界 | 系统错误 vs 业务错误 vs 编程错误 |
| 20 | 重试与退避 | 什么该重试?什么不该? |
| 21 | 超时与熔断 | 别让一个慢调用拖垮整个系统 |
| 22 | 优雅降级 | 挂了也别全挂 |
| 23 | 日志链路 | 从 A 到 Z 追踪一次请求 |
阶段四:并发与异步(6天)
| # | 主题 | Python | Java |
|---|
| 24 | 线程基础 & GIL | threading | Thread / Runnable |
| 25 | 线程池 | concurrent.futures | ExecutorService |
| 26 | async/await | asyncio | CompletableFuture |
| 27 | 锁与竞态 | Lock / RLock | synchronized / Lock |
| 28 | 生产者-消费者 | Queue | BlockingQueue |
| 29 | 实际案例 | 爬虫/定时任务 | Web 请求编排 |
阶段五:API 设计与接口思维(5天)
| # | 主题 | 核心收获 |
|---|
| 30 | RESTful 设计原则 | 资源、动词、状态码、版本 |
| 31 | 请求/响应规范 | 入参校验、统一返回、分页 |
| 32 | 认证与授权 | JWT、OAuth2、API Key |
| 33 | 接口版本兼容 | 向前兼容策略 |
| 34 | OpenAPI/Swagger | 接口文档即代码 |
阶段六:测试策略与可测试性(5天)
| # | 主题 | 核心收获 |
|---|
| 35 | 单元测试 | 测什么不测什么、mock 边界 |
| 36 | 集成测试 | 数据库/外部服务怎么测 |
| 37 | TDD 实战 | 先写测试再写代码的流程 |
| 38 | 可测试性设计 | 写代码时就想"这个怎么测" |
| 39 | 测试金字塔 | 80% 单元 + 15% 集成 + 5% E2E |
阶段七:数据库设计与 ORM(5天)
| # | 主题 | 核心收获 |
|---|
| 40 | 范式与反范式 | 什么时候拆?什么时候合? |
| 41 | 索引基础 | 什么样的查询走索引 |
| 42 | 事务与隔离级别 | ACID、脏读、幻读 |
| 43 | ORM 的正确用法 | N+1 查询、懒加载陷阱 |
| 44 | 迁移与版本控制 | 数据库变更怎么管理 |
阶段八:系统设计入门(6天)
| # | 主题 | 核心收获 |
|---|
| 45 | CAP 理论 | 一致性 vs 可用性 vs 分区容忍 |
| 46 | 缓存策略 | Redis、本地缓存、缓存穿透/击穿 |
| 47 | 消息队列 | 解耦、削峰、异步 |
| 48 | 负载均衡 | 轮询、哈希、一致性哈希 |
| 49 | 读写分离 / 分库分表 | 什么时候分、怎么分 |
| 50 | 设计一个系统 | URL 短链/聊天/秒杀(白板设计) |
📌 每日学习流程
1. 打开这个清单 → 看今天的主题
2. 我扔一段有问题的代码(或者一个概念让你解释)
3. 你找出问题 / 说出理解
4. 我补刀 + 引出模式 / 原理
5. 你写代码改造(或我来示范正确写法)
6. 我自动存学习记录到 F:\学习记录
✅ 进度追踪
阶段一:■■■■□□□□□□ 4/10
阶段二:□□□□□□□□□□ 0/8
阶段三:□□□□□□□□□□ 0/5
阶段四:□□□□□□□□□□ 0/6
阶段五:□□□□□□□□□□ 0/5
阶段六:□□□□□□□□□□ 0/5
阶段七:□□□□□□□□□□ 0/5
阶段八:□□□□□□□□□□ 0/6
⬆ 每次上课前我帮你更新这个进度条
📁 参考文档
| 文件 | 说明 |
|---|
[[Java笔记]] | Java 核心技术(含 Day1~12 + Spring + ZooKeeper 代码) |
[[JAVA面试题]] | Java 面试高频题(基础/高级/Spring/JVM/并发) |