我可以使用 AI 练习系统设计面试吗?
作者 Aaron Cao · 更新于

可以。AI 可以帮助你演练需求分析、容量估算、架构讲解和权衡取舍。让它每次只问一个问题,并在你完成前不要给出建议方案。请自行绘制架构图、核实技术反馈,并反复练习你难以讲清楚的部分。
如何让 AI 像面试官一样提问?
如果 AI 立即给出完整架构,你就失去了练习自主决策的机会。以下设置会让你继续为答案负责,并通过具体的面试官提示词和规则延后提示。
在支持对话式指令的 AI 工具中使用以下提示词:
请扮演高级后端工程师职位的系统设计面试官。让我设计一个 Webhook 投递服务。先让我澄清需求,再提出组件方案。每次只问一个问题,并等待我回答。质疑我对流量、投递保证和故障的假设。除非我主动要求,否则不要展示参考架构或提供提示。在我完成后,请引用我回答中的具体例子,指出遗漏和可疑论断。
将职位和问题替换成你的目标。如果 AI 开始替你完成设计,请让它继续以提问为主。请大声回答,并在对话过程中同步绘图,即使你必须在工具中输入总结也应如此。
如需了解 SubcueAI 的练习服务,请访问模拟面试页面。
限时模拟面试应涵盖哪些内容?
开始前先设定练习时间。以下建议的 40 分钟安排是一份演练计划,并不代表任何雇主的实际面试形式:
- 需求,5 分钟:明确用户、核心操作、不包含的功能以及可接受的延迟。对于 Webhook,应澄清顺序是否重要,以及成功投递意味着什么。
- 估算,5 分钟:说明事件量、负载大小、每个事件的目标数量以及峰值负载假设。始终写明单位。
- 初步设计,15 分钟:勾画事件接入、持久化存储、投递队列、工作进程和客户端点。追踪一个事件在系统中的完整流程,并解释每次确认。
- 深入探讨,10 分钟:选择一个风险,例如重复投递、目标端过载或工作进程故障。解释应对方法及其代价。
- 总结,5 分钟:概括设计、其中最薄弱的假设以及下一步要调查的内容。
让需求成为选择组件的依据。例如,在决定如何持久化事件之前,先解释进程崩溃时哪些数据必须保留。如果模拟面试暴露了知识缺口,请先完成本次练习,再学习相应内容并重新演练讲解。
如何练习容量计算和故障场景?
设想一名后端工程师正在为高级平台职位准备 Webhook 投递系统模拟面试。假设工作负载为每天 10 百万个事件、每个事件对应一个目标,并且负载大小为 1 KB。AI 询问某个客户的端点中断一小时后会发生什么。
从你能够解释清楚的计算开始:10,000,000 除以 86,400,平均约为每秒 116 个事件。另行假设峰值为平均值的十倍,则每秒大约会有 1,160 次初始投递尝试。重试会在这些初始尝试之外增加额外流量。
按十进制单位计算,事件负载总量约为每天 10 GB,尚未计入元数据、索引、复制和其他开销。这些是练习假设,并非生产环境的实测数据。要估算该中断客户的积压量,首先需要确定发往该客户的事件比例。
然后让 AI 逐一追问以下场景:
- 确认丢失:接收方已处理事件,但发送方从未收到其响应。请解释重试为何可能导致副作用重复发生,以及应在哪里进行去重。
- 目标端缓慢:某个客户占用了工作进程容量。请解释并发限制、重试退避和隔离机制如何保护其他客户。
- 工作进程崩溃:工作进程在投递期间停止。请说明哪些内容仍会持久保存、任务何时可以再次尝试,以及如何处理重复事件。
如需练习其他问题,请查看面试题库指南。
如何复盘反馈并选择需要重复练习的内容?
接受评分前,先要求对方提供依据。有效的复盘应指出你说过或遗漏的内容,解释其后果,并给出需要重新审视的具体问题。
- 需求:你的设计是否覆盖了约定的范围和投递预期?
- 数值:单位是否一致?你是否区分了平均负载、峰值负载和重试流量?
- 架构:你能否通过架构图追踪成功请求和故障场景的完整流程?
- 权衡:你是否解释了合理的替代方案,以及不采用该方案的后果?
- 沟通:你是否先解释为什么需要某个组件,再讨论其实现方式?
AI 可能会虚构服务能力、算错估算结果,或推荐无法解决既定问题的组件。请自行重新计算,并依据权威文档核实有争议的技术论断。让评审者区分违反需求与在多个有效设计之间表达偏好。
将绘图持续纳入练习流程。纯文本反馈无法检查其未收到的架构图,而支持图像的反馈仍可能忽略不一致之处。请检查箭头、数据存储、确认机制和口头讲解是否相互一致。
在没有提示的情况下重复练习最薄弱的部分,然后尝试约束条件有所变化的相关问题。记录自己能否独立解释各项决策。同伴或经验丰富的面试官可以进一步检查含糊的推理;仅凭 AI 评分无法证明你已准备充分。