Lesson 0015 · 系统设计 · Phase 4 实战 · 毕业课
模拟面试 II + 工作迁移
与你的 Mission 的关系
这是毕业课,两件事:① 一道更难的题(网约车,考验实时性与地理数据两个新维度);② 把四步框架迁移到工作里——写一份真实的架构决策文档(ADR)。面试是快照,工作才是主场;这半节课让课程资产永久跟着你。
§1 · 模拟面试 II题目
「设计一个网约车系统(Uber 简化版)。」
补充设定:单城市先行;核心流程 = 乘客叫车 → 匹配附近司机 → 行程中位置实时共享 → 结束计费。这是实时系统题:位置每 4 秒更新一次,匹配要秒级响应。
相比通知系统,这道题新考两个维度:地理空间索引(怎么找 3 公里内的空闲司机)和高频实时流(百万司机位置不断更新)。地理索引的工业答案是 GeoHash/H3 多边形网格[1]。
§2 · 开始模拟
§3 · 工作迁移把框架焊进日常
面试四步框架在工作里的对应物就是 ADR(Architecture Decision Record,架构决策记录)——业界标准格式见 adr.github.io[2]。它不是官僚文档,而是把「权衡说出口」变成团队资产:半年后新人问「为什么当初用 Kafka 不用 RabbitMQ」,答案就在 ADR 里。
📋 一页纸 ADR 模板(对应四步框架,点击可复制)
# ADR-NNNN:{决策标题,如「订单库分片方案:按 user_id 哈希」}
日期 / 状态(提议中 / 已接受 / 已废弃) / 决策人
## 1. 背景与约束(← 四步 Step 1)
我们面临什么问题?硬约束:规模数字、SLA、团队现状、deadline。
【放你的估算数字,注明来源】
## 2. 备选方案与权衡(← Step 2 & 4)
### 方案 A:{…}
- 优点:…;代价:…;失效边界:数据量/流量达到 ___ 时不再适用
### 方案 B:{…}
- 同上
## 3. 决策(← Step 3)
选择方案 __,目标架构图(一图胜千言)。
## 4. 后果与跟进(← Step 4 的诚实)
我们接受了什么代价?什么信号出现时必须重新评估?(如「分片
键 user_id 的倾斜超过 3:1 时触发二次拆分评估」)
迁移任务(本周最重要的 45 分钟)
用上面的模板,为你工作中的一个真实决策写一份 ADR——已做的决策就写复盘版(为什么当初这么选),待做的决策就写提议版。写完贴给老师,我按「这个 ADR 能否说服一个聪明但不知情的同事」标准反馈。
晋升视角:ADR 是晋升答辩的现成素材——「主导了 X 的架构决策,权衡 A/B 后选择…,上线后…」比「参与了 X 项目」强一个职级。
§4 · 毕业路线课程之后去哪
- 深度升级:逐章精读 DDIA(第 2 版)——本课程每课都标注了对应章节,现在你有了挂钩知识,读它会快很多[3];
- 持续输入:订阅 ByteByteGo newsletter,每周一道图解案例;把有趣的贴回来讨论;
- 社区实战:去 r/SystemDesign 贴一份你的设计(就用 L8/L12/L13 的白板稿),接收陌生工程师的真实批评——这是「智慧」环节的最后一块拼图;
- 保持手感:每月一道新题白板 25 分钟(题库:ByteByteGo「Top 25」、System Design Primer 案例列表);间隔重复让技能不生锈;
- 随时回来:工作里遇到任何架构难题、面试前想约真实模拟、或者只想核对一个权衡——直接找老师。
§5 · 延伸资源
- 对照答案:Alex Xu《System Design Interview Vol.2》「 proximity / ride-hailing」相关章节[4]
- Uber H3 官网:六边形地理网格的交互演示[1]
- System Design Primer:更多案例题清单,当作月度自测题库[5]
- r/SystemDesign:把你最好的设计发出去接受真实世界的检验
🎓 课程完成了,但师生关系没有。真实模拟面试(我追问、你答、我点评)、ADR 反馈、或者下次晋升答辩前把这份 ADR 拿来对练——随时开口。