跳到正文

系统设计面试练习

在共享白板上端到端设计一个系统。Vera 会看你画的内容、就着它提问,并一次改变一个条件,看哪里会出问题。最后你会拿到一份引用你推理过程的报告。

Vera 用英文面试你,就像你正在准备的美国面试一样。注册、应用和报告也都是英文的。

时长
45–50 分钟
设计
一个系统,端到端
提示
最多两次小提示
白板
Vera 能看懂的共享白板

这一轮怎么进行

  1. 01

    需求和范围

    Vera 用一两句话说明题目,然后请你提问。在画任何框之前,先确定系统必须做什么、规模多大,以及你的假设。

  2. 02

    高层设计

    端到端走一遍主要流程。准备好被问 API、数据模型,以及为什么选这种存储。

  3. 03

    深入细节

    Vera 会挑出风险最大或讲得最少的部分,问它实际上怎么工作,而不是它叫什么。

  4. 04

    扩展和故障

    一次一个变化:负载增长十倍、某个节点在请求中途故障、某个 key 变成热点。什么会先出问题,用户又会看到什么?

  5. 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 分钟。

在各个岗位中

开始之前,先看看反馈

由真实报告流程生成的完整报告,学生是虚构的,面试是按脚本进行的。

常见问题

需要画图,还是只用说?

都要。你一边说一边在共享白板上画框和箭头,Vera 会看你新加的内容并就此提问,就像面试官站在你身后看你画一样。

会有哪些变化?

在扩展和故障阶段,Vera 一次只改变一个条件,比如负载变成十倍、某个节点在请求中途挂掉,或者出现热点 key,然后问你什么会先出问题、用户会看到什么。

数据科学、机器学习和量化岗位也有系统设计面试吗?

有。数据科学设计的是实验、指标体系或分析数据管道。机器学习设计的是生产环境的机器学习系统。量化设计的是撮合引擎、行情处理程序或低延迟数据管道。

Vera 会告诉我正确答案吗?

不会。如果你问 Vera 怎么看,你会得到一个简短、平衡的分析:某个方案带来什么、付出什么代价,但绝不会给出结论。之后的报告会告诉你哪里做得好、哪里需要改。

Mockich 怎么用 · 所有轮次和岗位