刚结束 State Street 的 senior/staff 级别 loop,想专门把 system design 这部分记下来,因为几乎找不到相关资料。
先说范围。他们不会让你设计 Uber 或 Twitter。题目偏 finance-adjacent。我拿到的 prompt 大概是:设计一个系统,处理每日 end-of-day 的 fund NAV 计算,并在规定的 SLA 窗口内提供给下游报表系统。
听起来很领域化,但本质是一个数据管道设计题。涉及的点包括: 幂等性和 exactly-once 处理(这是一个大主题) 基于队列的工作分发 vs 批处理的权衡 如何做重试和 dead-letter queue,又不造成重复计数 可观测性:如何在 SLA 到期前知道计算结果过期或错误 服务之间的数据契约
他们不是在考你会不会金融。他们会把领域讲清楚,让你能用工程视角解题。他们考的是:你能不能在一个受监管环境里推导可靠性,因为算错数字真的很严重。
我踩坑的点: 我太快走 happy path。面试官一直问「what happens if X fails here(如果这里 X 挂了会发生什么?)」,我每次都能答对,但我没有主动把 failure mode 自己先抛出来。面完我才意识到,在 State Street,主动识别 failure mode 和 audit trail 是他们很重的信号。这不只是分布式系统的好习惯,而是他们工程师日常就必须这么做。
答得不错的部分: 我提出先把所有状态迁移写入一个 append-only log,再做任何动作,面试官明显更投入。这个模式很符合他们的合规心态。
级别校准:我面的是 senior(他们内部对标 principal 的级别)。Staff-track 的候选人可能会遇到更难的 scope,并且更强调跨团队的设计决策。
onsite 后大概一周拿到反馈。他们说设计很强,但会给我 senior band 而不是 staff,因为我在 behavioral 里没有展示足够多「组织影响力」的例子。所以这里的 level 讨论会延伸到 behavioral,不只是技术。