上个月在 Bain 面了 senior/staff 的 SWE 岗的 system design 轮。因为面试前几乎找不到具体信息,所以写个复盘。
首先要知道:Bain 的 eng 团队相对小,system design 轮更像一次 working session,而不是审问式的 grilling。一个面试官,偶尔两个。他们给了一个开放题:'design a notification delivery system for a global enterprise client with SLAs around reliability and latency.'
他们在意什么: 先澄清需求再开始。他们在我一开始没有问够问题时打断我,这显然是他们的信号点。 取舍推理。我描述方案时,他们会问「为什么不直接用 X」。想听到真正的 reasoning,而不是「我之前用过」。 failure modes。他们花了很多时间在「规模上来会坏什么」以及「你怎么检测」。感觉即使是纯 SWE 也想要 SRE 级别的思维。 对托管云服务的熟悉度。我提到 Kafka,他们追问:「你会 build 还是 buy?」我说 buy(MSK 或 Confluent),他们对这个框架挺满意。
他们不在意什么: 先画 40 分钟微服务架构图再开始讨论 背熟 QPS/存储的估算(他们会给粗略规模参数) 任何 Bain 内部工具的知识
70 分钟刚好。最后 10 分钟是 Q&A。可以问 eng 文化以及团队怎么和咨询侧协作,他们会很有兴致。
最后没拿到 offer,但这轮本身确实是我做过的更好的 system design 面试之一。有结构,但不死板。