刚结束一个 senior SWE 职位的全套面试(他们说大概相当于 L5),想分享一下 system design 这一轮的细节,因为我面之前几乎找不到什么具体信息。
设计面是 60 分钟,两位面试官。形式比较开放:我拿到一个白板题(远程虚拟白板),要求我设计一个系统,用来处理并路由大量结构化的 AI 生成输出。可以理解为跟他们真实基础设施比较贴近的东西,不是那种通用的「design Twitter(设计 Twitter。)」题。
他们真正关心的是: Reliability 和 fault tolerance。有个面试官一直追问下游 consumer 挂了怎么办。我得当场画出重试逻辑、dead-letter queues、以及 backpressure 的处理。 Latency vs. throughput 的取舍。他们会逼你说你是在优化 p50 还是 p99,以及原因。 数据一致性。不是考你分布式八股,而是很现实:两个 replica 分叉后,用户体验会是什么样,你怎么把它呈现出来?
这一轮他们没有让我实现任何东西,不写代码。就是聊架构、画框图、为取舍辩护。
Calibration 备注:我有大概 8 年 backend 经验,偏分布式系统。这轮的问题感觉是按真的做过大规模系统的人来校准的,不是按背过 system design 书的人来校准。如果你只做过 leetcode + 看书准备,这轮会很快把差距暴露出来。
总时长 55 分钟,最后大概 5 分钟 Q&A。有个面试官明显更 senior,主要由他来深挖。另一个负责记笔记。
准备建议:我会更关注你工作里做过的真实取舍,而不是去套教科书模板。他们似乎真的想看我怎么思考,而不是我是否落在某个特定架构上。
如果大家想问更具体的方向,我也愿意回答后续问题。