我走过 Citadel 的 SWE 面试 loop 两次。第一次 onsite 后被拒,第二次拿到 offer。差别几乎完全在准备质量和具体程度。
如果从第一天重来,我会这样做。
Coding 准备。别只刷 LeetCode medium 和 hard。练习写你真的会提交的代码。用有意义的变量名。写干净的 helper function。在逻辑不直观的地方加一点简短行内注释。计时的不只是做出解法,还要计时你把它讲出来,就像队友第一次冷读你的代码一样。Citadel 面试官看代码的方式跟看 PR 很像。图题、堆题、以及所有涉及有序数据结构的题,在我两次 loop 都出现了。
System design 准备。你需要带着金融领域视角。练习设计:一个不能丢事件的实时行情数据摄取 Pipeline,一个有严格一致性要求的投资组合对账系统,一个交易 API 的限流层。泛用的「设计社交 feed」准备是必要但不够。重点读一读金融场景下 eventual consistency 和 strong consistency 的取舍。
Behavioral 准备。Citadel 会问:高压下协作、和技术很强的同事产生分歧时怎么推进、在信息不完整时如何做决策。STAR 格式可用,但故事要有牙齿。那种泛泛的「我们合作得很好」会很扣分。故事里细节要具体,带一点张力反而更好。
领域知识。你不需要是金融人。但你应该大致知道 market maker 做什么,为什么交易里 latency 很关键,以及「front office vs back office」技术意味着什么。读个四小时左右就能达到能聊的程度,值得。
时间线。我第二次大概准备了六周。第一次只准备了两周,自己还挺自信,结果其实明显半生不熟。别犯这个错。