上个月做了 Goldman Sachs senior engineering 的 system design 面试,platform 角色。这里是我实际遇到的 vs 我以为会遇到的。
我以为:很泛的分布式系统题,比如 design Twitter 或 design URL shortener。
实际:设计一个实时 trade confirmation notification system。要支持每天数百万笔交易,给 client-facing apps 亚秒级投递,可审计以满足合规,并且在下游 notification service 不可用时要优雅降级。
a finance context is real。他们在意你理解 at-least-once vs exactly-once delivery 这种在高风险金融场景下的差别。idempotency key 在这里的重要性,确实比设计社交 feed 时更高。
他们评估什么:我能看出来他们在看: 你会不会在上架构前先定义 SLO 你会不会主动提 failure mode 你怎么处理 data consistency vs availability 的取舍(以及你是否意识到有取舍) 能不能推理 operational 问题:monitoring、alerting、runbooks
我感觉 60% 的信号来自我怎么框需求、怎么问澄清问题。实际选哪些组件反而没那么重要。
senior/vice president track 的级别预期:他们想看你主导对话。我一旦把方向定得比较稳,面试官就更安静了,我觉得是刻意的。如果你等着被引导,基本就不在他们期望的 level。
时长 45 分钟。我前 8-10 分钟都在做需求和范围澄清,感觉挺久,但面试官看起来完全 OK。
提醒一下:Goldman 的面试官经常会把 operational 取舍问得比 startup 深很多。「how would you handle a kafka partition lag spike at market open(如果开盘时 kafka partition lag 突增,你会怎么处理)」就是别人可能会真的问的问题。值得准备一个答案。