Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第 40 章 系统设计模拟面试

本章提供基于题卡的限时模拟流程。候选人应在每个阶段主动报出假设、同步思考过程,并在结束时用自评问题复盘。

30 分钟:通用后端系统设计

本场使用三张题卡:Q-GEN-CAP-01Q-GEN-DATA-01Q-GEN-REL-02

阶段时长候选人任务面试官指引
开场与假设4 分钟确认业务目标、使用者、规模口径和非目标。只补充必要约束,记录候选人主动提出的假设。
容量推导7 分钟围绕 Q-GEN-CAP-01 给出计算口径,并把结果落到组件规模。追问峰谷差异和余量来源,观察推导是否自洽。
数据边界9 分钟围绕 Q-GEN-DATA-01 说明关键状态、读写路径与责任边界。要求明确每个关键状态的归属和更新顺序。
可靠性追问7 分钟围绕 Q-GEN-REL-02 处理调用失败、重复与恢复情形。改变一个失败条件,观察方案是否仍能闭环。
收束3 分钟总结方案、主要风险和下一步验证项。请候选人指出一个最需要取舍的决定。

面试官指引:

  • 按题卡顺序推进,不朗读题卡正文,也不提前给出实现选项。
  • 候选人跳过假设或量化依据时,要求其补足依据后再进入下一阶段。
  • 记录其是否能把容量、数据权威和失败处理连接为同一条链路。

候选人自评问题:

  • 我是否在开始阶段说明了范围、数量级和关键假设?
  • 我是否明确了关键状态的归属,以及读写路径的责任边界?
  • 我是否对失败、重试和重复结果给出了可以验证的处理方式?

45 分钟:电商专项系统设计

本场使用三张题卡:Q-ECOM-ARCH-001Q-ECOM-TRADE-026Q-ECOM-PEAK-004

阶段时长候选人任务面试官指引
业务边界7 分钟确认平台角色、交易范围和最重要的业务约束。用一个边界变化检查候选人的领域划分。
架构拆分11 分钟围绕 Q-ECOM-ARCH-001 给出服务边界、依赖关系和核心接口。追问边界两侧的数据归属与同步方式。
交易主线13 分钟围绕 Q-ECOM-TRADE-026 描述状态演进、触发条件和异常回退。在中途插入一个重复或乱序事件,要求候选人调整说明。
峰值追问9 分钟围绕 Q-ECOM-PEAK-004 说明峰值前准备、入口控制和压力转移。逐步提高流量或缩小资源,观察降级优先级。
收束与复盘5 分钟说明最关键的取舍、风险指标和验证计划。请候选人比较一个备选方案并作出选择。

面试官指引:

  • 先确认交易语义,再要求候选人画出架构与状态变化,避免只讨论组件名。
  • 每次追问只改变一个约束,保留候选人上一轮方案作为比较基线。
  • 重点观察服务边界、状态演进和峰值处理是否相互一致。

候选人自评问题:

  • 我是否先确定了业务边界与数据归属,再划分服务职责?
  • 我是否完整说明了交易状态的进入、退出和异常分支?
  • 我是否把峰值措施与日常架构的责任边界说清楚?

60 分钟:高级系统设计答辩

主案例使用 Q-ECOM-CASE-002。递进追问依次使用 Q-ECOM-SUPPLY-019Q-ECOM-TRADE-030Q-ECOM-PEAK-006

阶段时长候选人任务面试官指引
约束协商8 分钟明确目标、成功标准、规模口径、资源边界和不可接受的风险。至少引入一个冲突约束,要求候选人排序优先级。
白板架构15 分钟围绕 Q-ECOM-CASE-002 在白板画出入口、核心链路、状态存储与依赖关系。要求图中每条关键连线都说明方向、同步方式和失败后的去向。
递进追问一10 分钟围绕 Q-ECOM-SUPPLY-019 调整关键资源的并发控制与校验边界。追问高并发下的结果判定和恢复责任。
递进追问二10 分钟围绕 Q-ECOM-TRADE-030 补充请求去重、状态衔接和异常后的可恢复性。改变请求到达顺序,检查设计是否仍保持一致。
递进追问三8 分钟围绕 Q-ECOM-PEAK-006 说明入口保护、优先级和观测信号。要求候选人给出触发保护与解除保护的判断依据。
最终取舍讨论9 分钟比较两个可行方案,说明可靠性、成本、复杂度和演进上的取舍。质询最脆弱的假设,并要求候选人说明何时应推翻当前选择。

面试官指引:

  • 白板阶段只要求结构、边界和关键流向;细节应在递进追问中按需展开。
  • 每张追问题卡都以前一阶段方案为前提,要求候选人明确哪些结论保持不变、哪些需要修改。
  • 最终讨论聚焦决策依据,避免把答辩变成对题卡正文的复述。

候选人自评问题:

  • 我的白板是否让他人能看出边界、流向、状态位置和主要故障路径?
  • 我是否在每个递进追问后明确了保留的假设与修改的决定?
  • 我是否用业务影响、可靠性、成本和复杂度解释了最终取舍?