大概六周前面了 senior 的 SWE role(他们叫 L4/L5 对标,大概是那个范围)。来个脑内 dump,因为我当时真希望有人写过类似的。
先说结论:Mercury 是 fintech,system design 这轮非常偏这个方向。别指望是那种通用的「design Twitter」(设计 Twitter(设计一个类似 Twitter 的系统))prompt。我的 prompt 基本是:设计一个资金流转系统,支持 ACH、wire transfers 和内部 ledger entries,同时让账户保持 eventual consistency。对,欢迎来到 fintech。
面试官很强。不对抗,但会追问每一个假设。我说要用 Kafka 的 event-driven architecture,他们就问 duplicate events 怎么处理。我说 idempotency keys,他们就继续追问大规模下这些 key 怎么生成。整个过程像是在跟真正做过这套东西的人聊天,而不是照着 rubric 打勾的人。
他们最在意的点: Failure handling。Kafka consumer 如果处理到一半 crash 了会怎么样?怎么避免账户被 double-debit? Consistency vs. availability 的 tradeoffs。他们不是要一个标准答案,而是要你把每个选择的代价讲清楚。 Observability。我很晚才提 metrics + alerting,面试官立刻问我为什么没更早提。很合理。 Regulatory/compliance 的边界。他们不指望你懂银行法,但希望你能意识到某些数据需要 audit trail。
结构上:10-15 分钟澄清需求,然后我主导设计,然后他们开始挑漏洞。总共大概 60 分钟。
我本来是大厂分布式系统背景,我觉得这反而有帮助。但你需要把这些知识翻译成金融正确性:idempotency、ledger double-entry patterns、regulatory holds。如果你之前只设计过内容 feed,建议这轮前花点时间看看 distributed ledger patterns。
我过了这轮进 final 了。最后没拿到 offer(我猜是 leveling 没谈拢),但这轮 design loop 本身是我这轮面试季里更好的一次。