今年早些时候我走完了 coinbase 的 senior 面试流程(大概对应 L5)。想专门写一下 system design 这一轮,因为网上几乎没有新的信息。
这一轮是 60 分钟。一个面试官,有时会有第二个旁听。他们前几分钟给你一个题目,然后希望你来主导。题目我看到的比较偏 fintech/支付方向。我那题大概是:设计一个系统,每秒处理数百万笔加密交易,并且有 exactly-once 的投递语义。对 coinbase 来说不意外,但你得真的懂分布式系统里「exactly once」是什么意思,而不是只会把词说出来。
他们在意的点,我感觉是:
先问澄清问题。 他们会注意你是不是一上来就开始画框图。先花 5 分钟问清规模、一致性要求、故障模式。我在设计前问了是 eventual 还是 strong consistency,面试官明显放松了。
懂点 crypto 相关会加分,但不是必需。 我被追问了 transaction 的幂等性问题,这是任何 senior 做分布式的人都应该知道的。你不需要知道 mempool 是什么,但你得知道怎么设计一个幂等的支付处理层。
tradeoff 讨论权重很高。 选一个方案,解释为什么,然后在被质疑时认真讨论替代方案。我选 kafka 被 pushback 了,得要么 defend 要么 pivot。他们想看的是思考过程,不是最终答案。
time management:他们节奏很快。别花 30 分钟在数据模型上。画个大概,承认取舍,然后往下走。我在扩展性那块没讲完,感觉有影响,不过最后还是拿到 offer。
有个我没想到的点:他们在最后问了 observability。要提前准备好你会怎么在线上监控这个系统。不是泛泛地说 metrics,而是具体到哪些故障条件会触发告警。这题感觉就是区分 L5 和 L4 的信号。
整体门槛很真实但也公平。coinbase 的 L5,大概相当于 meta 的 E5 或者 google 的 SWE III 的预期。可能纯 leetcode 的要求略低一点,但对分布式系统深度的要求更高。