系统设计面试练习
在共享白板上端到端设计一个系统。Vera 会看你画的内容、就着它提问,并一次改变一个条件,看哪里会出问题。最后你会拿到一份引用你推理过程的报告。
Vera 用英文面试你,就像你正在准备的美国面试一样。注册、应用和报告也都是英文的。
- 45–50 分钟
- 一个系统,端到端
- 最多两次小提示
- Vera 能看懂的共享白板
这一轮怎么进行
- 01
需求和范围
Vera 用一两句话说明题目,然后请你提问。在画任何框之前,先确定系统必须做什么、规模多大,以及你的假设。
- 02
高层设计
端到端走一遍主要流程。准备好被问 API、数据模型,以及为什么选这种存储。
- 03
深入细节
Vera 会挑出风险最大或讲得最少的部分,问它实际上怎么工作,而不是它叫什么。
- 04
扩展和故障
一次一个变化:负载增长十倍、某个节点在请求中途故障、某个 key 变成热点。什么会先出问题,用户又会看到什么?
- 05
收尾
说出你的设计中最薄弱的部分、你会怎么监控和上线,以及第二版会加些什么。
报告评哪些方面
每项能力都会对照你所在级别的标准线打 1 到 5 分,并附上评分所依据的原话和你说出它们的时间。报告最后会给出下一步最该改的一件事。
- 需求与范围 Requirements and scoping
- 结构与主导节奏 Structure and driving
- API 与数据模型 API and data model
- 架构 Architecture
- 深度 Depth
- 取舍 Trade-offs
- 扩展与故障处理 Scale and failure handling
- 沟通 Communication
Lead 级别还会评: 可运维性与成本(Operability and cost)、范围与影响力(Scope and influence)。
真实面试中这一轮怎么进行
系统设计面试通常持续 45 到 60 分钟,步骤大体相同:澄清需求,勾勒 API 和数据,画出一个能端到端跑通的简单设计,深入讲两三个部分,最后讨论瓶颈和改进。根据我们读过的备考指南,最常见的失败方式是时间用完了,却没有拿出一个完整连贯的设计。
阅读完整指南(英文)Regular 和 Lead 级别
- Regular
- Vera 会温和地引导。如果你直接开始画框,会先被问需求和规模;如果卡住了,会得到一个关于下一部分的小提示。
- Lead
- Vera 不会帮你安排结构。由你主导节奏,挑出有风险的部分,并讲到成本、运维和对团队的影响。只要提到一项技术,你就会被问它在这里具体怎么工作。
时长:Regular 级别 45 分钟,Lead 级别 50 分钟。
在各个岗位中
- 软件工程(英文)
系统设计。端到端设计一个大规模服务,并讲清取舍。
- 数据科学(英文)
指标与实验设计。设计一个实验、一套指标体系或一条分析数据管道。
- 机器学习(英文)
机器学习系统设计。设计一个生产环境的机器学习系统:数据、训练、上线服务和监控。
- 量化开发(C++)(英文)
低延迟系统设计。设计一个撮合引擎、行情处理程序或低延迟数据管道。
开始之前,先看看反馈
由真实报告流程生成的完整报告,学生是虚构的,面试是按脚本进行的。
常见问题
需要画图,还是只用说?
都要。你一边说一边在共享白板上画框和箭头,Vera 会看你新加的内容并就此提问,就像面试官站在你身后看你画一样。
会有哪些变化?
在扩展和故障阶段,Vera 一次只改变一个条件,比如负载变成十倍、某个节点在请求中途挂掉,或者出现热点 key,然后问你什么会先出问题、用户会看到什么。
数据科学、机器学习和量化岗位也有系统设计面试吗?
有。数据科学设计的是实验、指标体系或分析数据管道。机器学习设计的是生产环境的机器学习系统。量化设计的是撮合引擎、行情处理程序或低延迟数据管道。
Vera 会告诉我正确答案吗?
不会。如果你问 Vera 怎么看,你会得到一个简短、平衡的分析:某个方案带来什么、付出什么代价,但绝不会给出结论。之后的报告会告诉你哪里做得好、哪里需要改。