上个月刚面完 Cohere 的 system design 轮,岗位是 senior(大概相当于 L5)backend。之前在 big tech 待过,所以很好奇体验会有多不一样。结论:确实不一样,而且大多数方面都挺好。
他们实际问了什么
题目大概是:为一个企业客户设计一个系统,用来处理实时 completions 请求,并满足特定的延迟 SLA(他们给了个大概数,200ms p95 以内那种)。你需要自己推导怎么应对突发流量、队列管理、以及模型过载时的优雅降级。
这和经典的「design Twitter/Uber(设计 Twitter/Uber)」那种题风格差别挺大。他们会希望你能针对 ML model serving 来推理。熟悉这些概念会很加分: batching 以及它和延迟之间的权衡 async vs. sync inference 对确定性 prompt 的缓存策略 从概念层面理解 GPU memory 约束
……就够用了。你不需要是 ML researcher,但你得之前确实想过这类系统怎么做。
他们会追多深
在 senior 这个 level,他们会往运维层面追。怎么监控?在负载下最先坏的是哪里?如果是单租户客户流量突然涨 10 倍,你怎么处理?我在 failure modes 和监控上聊了差不多 20 分钟,更像一次正经的 SRE 对话,而不是纯设计题。
和 FAANG 有什么不同
在 big tech,system design 更像是在展示你知道那些经典套路(consistent hashing、用 Kafka 做 streaming、分片数据库)。Cohere 更偏探索式,更像是想看你的推理过程,而不是检查你有没有背过标准答案。面试官会挑战我的假设,但方式很协作。
不需要白板。可以屏幕共享,用 Excalidraw 或你喜欢的工具。面试官会积极参与,不是只在旁边看。
Level:senior IC,差不多 9 YOE,分布式系统背景。