大概两个月前面了 amex senior 的 SWE loop,重点说 system design 这一轮。给正在准备的人分享下笔记。
先说结论:amex 并不是想从 FAANG 挖 staff engineer,然后用大规模分布式系统谜题去压测。门槛是真有,但校准方式不一样。更像:扎实、懂生产环境、务实的设计。不是「how do you handle 10 million writes per second.(你会怎么处理每秒 1000 万次写入。)」。
我拿到的题是设计一个 payment authorization service,典型 fintech 题。他们真正关注的是: Idempotency。 不只是知道这个词。我得解释怎么端到端实现,覆盖重试和网络失败。问得很深。 Failure modes。 下游反欺诈服务变慢或不可用怎么办。优雅降级?排队?fail closed?他们在这点上追问很多。 数据一致性。 强一致 vs. 最终一致,以及各自什么时候适用于金融交易。我一开始说「强一致,永远」,他们就反问我。要有细腻的取舍。 可观测性。 他们会具体问告警怎么做,以及你怎么在客户打电话之前就知道出问题了。
他们不太在意的点:消息队列具体选型(Kafka vs. SQS,随便)、前端细节,或者按 Google 级别的数字做规模计算。
面试官是资深 SWE,不是 manager。她很协作,如果你往一个不太有产出的方向走,会给提示。整体更像「让我理解你怎么想」的对话,而不是挖坑。
总共 45 分钟。我建议前 8 到 10 分钟先澄清需求再画图。他们好像很认可我一开始就问了 SLA 目标。
定级备注:这是 senior / 大概 L5 等级的岗位,不是 staff。principal 的面试设计要求大概率更高,但我没法代表。