刚面完 Two Sigma 的流程,岗位是 senior 的 SWE(NYC,quant-tech track,不是 research)。想重点写一下 system design 那轮,因为我到处都找不到近期的信息。
这轮 60 分钟,两位面试官。给我的题目在 data infrastructure 领域。大概是:设计一个系统,能规模化接入 high-frequency trading 数据,近实时处理,并支持查询。听起来很细分,但技能点其实一样:分区策略、容错、consistency vs latency 的权衡。
它跟典型 FAANG system design 不一样的地方: 他们会猛追 failure modes。不只是「what happens if a node fails(如果一个节点挂了会发生什么?)」,而是级联场景。如果下游 consumer 变慢了怎么办?你的 ordering guarantees 会怎样? 他们明确让我推理成本权衡。比如到什么数据量,你基于 Kafka 的方案会变得不现实,需要换成自研? quant 的语境让低延迟比大多数 SD 面试更重要。有一段我得讨论 L1 cache vs heap 的取舍。
他们完全不 hostile,反而比我预期更协作。有个面试官画了一个我没想到的替代方案,让我对比我自己的方案。感觉更像 senior IC 的讨论,而不是考试。
准备上:Designing Data-Intensive Applications 算是基本盘,但你也需要专门想想金融数据场景。ordering、timestamping、exactly-once delivery 这类。
看起来 senior/L5 等效他们更看重深度而不是广度。他们会在一个组件上把你往深里压,而不是让你把所有东西浅浅过一遍。
整个流程是 5 轮:2 轮 coding,1 轮 system design,1 轮 behavioral,还有一轮 domain deep-dive,感觉像第二轮 system design 但更轻。onsite 后大概 ~10 个工作日给了 offer。