今年早些时候我走完了 Vercel senior 的 SWE 流程,岗位是 infrastructure team。打算写一下 system design 那轮,因为跟我从大厂过来时预期差挺多。
先说:Vercel 对外不公开叫「L5」,但内部 senior 的 IC 岗大概对应 FAANG 的 L5/E5。知道这个有助于你做心理校准。
题目。我的题目是 CDN edge caching 和大规模 invalidation。非常贴合他们实际做的东西。面试官让我设计一个系统,能在 deploy 后几秒内把 cache invalidations 推到上万台 edge node。所以他们几乎是在让你设计他们产品正在做的事。
比起常见的「design Twitter(设计 Twitter。)」题,这其实挺好。问题域更窄、更具体。但也意味着你进去前得对他们产品有足够了解。如果你对 Vercel 的 edge network 大概怎么运作都不清楚,会很容易翻车。
他们在乎什么。面试官会在 failure modes 和一致性取舍上追得很紧。如果一条 invalidation 消息丢了怎么办?你要保证 exactly-once delivery,还是接受 at-least-once?如果某个节点在 invalidation 窗口内离线了怎么办?经典的分布式系统领域,但更贴近落地。
他们也问 observability。你怎么知道 invalidation 完成了?你会暴露哪些指标?感觉是在看你是不是能像系统 owner 一样在想上线后的事。
形式。60 分钟,用共享 Google Doc(没有花哨白板工具)。边写边讲,对方在旁边读。面试官会一路追问,而不是先让我 monologue 20 分钟。我挺喜欢这种节奏。
深度。这更像一场真正的 staff 级别对话,不是机械的 checklist。我来自大厂,system design 面试经常很套路化,而 Vercel 这轮让我觉得挺清爽。但也更难准备,因为你不能只背「design a URL shortener(设计一个 URL shortener。)」的标准答案就完事。
准备的话:真的去读他们的 blog posts 和 Vercel changelog。他们写了很多基础设施怎么运作。这些背景会让你听起来像是想过他们真实的问题。