2026 年初在 McDonald's Global Technology 面了一个 Staff SWE 职位。最后没接 offer(comp 差距,故事很长),但 system design 那轮其实是我这轮求职里做过的更好的几轮之一,值得记录。
形式: 60 分钟,两位面试官(一个 tech lead,一个 senior engineer)。Google Meet + 共享的数字白板。
他们给的题: 设计 McDonald's 的移动端点单后端。要处理并发订单、餐厅产能,并且当餐厅本地连接掉线时要能优雅降级。
表面听起来有点噱头,但实际上是个很好的 system design 题,因为约束很真实: 高读量(浏览菜单)vs 中等写量(下单) 硬延迟要求:用户确认订单不应等待超过 2 秒 分区容错很重要:餐厅断网不应该把整个点单系统搞瘫 他们在门店有自研 POS 硬件,所以你的设计必须考虑一个 edge compute 层
他们追问的点: 我先给了一个标准的 API gateway + order service + restaurant service 拓扑。他们追问:订单到餐厅但 POS 离线怎么办?怎么 reconcile?这里用 event-driven 还是 polling 也可以?
我选了 event-driven(Kafka 或类似),离线可用的 edge 设备,本地 queue,重连后同步。他们看起来挺喜欢我在他们问之前就先把 failure modes 说出来。
他们不太在意的点: 我具体选什么数据库。他们问了我为什么选 Postgres 而不是 Cassandra,但不是要一个标准答案,更看重理由。
对 staff-level 候选人: 他们想看我能主动推进对话,而不是等人带。他们最后还问了一个“你会怎么带团队实现这个”的问题,感觉是在做 L 调整的 bar check。
准备一个扎实的「带 edge compute 的分布式系统」设计题。这就是他们的题型风格。