上个月刚在 D.E. Shaw 面完一个 senior SWE loop。system design 这一轮是我最近记忆里最有意思的一次,所以分享下笔记。
形式
一位面试官,50 分钟。我拿到的是白板风格的共享文档,不是实际画图工具。面试官明显很技术,全程都会追问,不是最后才问。
他们问了什么
我被要求设计一个实时 market data 分发系统。公司做 quant trading,所以重点很快就变成:延迟要求、顺序保证、开盘时如何应对 burst、以及怎么权衡数据丢失 vs. 延迟。
他们不只是想看你会背分布式系统教科书。他们要你围绕领域约束推理。当你要把 tick data 同时推给 10 个 trading desk 时,「eventually consistent」到底意味着什么?如果有一个 consumer 比其他人慢会怎样?
加分点: 明确讲清取舍,而不是只列选项 sizing 估算是推理得出的,不是背出来的数字 表达清楚“正确”的架构高度依赖 SLA 要求
没那么重要的
我没有深入到具体 AWS 服务名。他们看起来更在意架构推理,而不是你到底选 SQS 还是 Kafka(我提了 Kafka,他们让我抽象地描述我需要 broker 具备哪些性质)。
对于 senior,也就是实际上对标 L5 的岗位,准备好他们会在你给出答案后更用力地追问。我的面试官一直在问「10 倍负载时先坏哪」以及「如果 latency budget 从 10 毫秒变成 50 微秒,你会怎么改」。
整体感觉更像真实的工程对话,而不是刁钻题。但你得真的懂分布式系统,不只是会术语。