去年春天走了 Starbucks 的 tech loop,面的是 senior SWE(他们内部叫 L5,不过对外不太公开 level)。分享下笔记,因为我去之前也找不到什么好信息。
system design 这一轮是 60 分钟,两位工程师。没有 LeetCode 风格 coding,纯设计讨论。他们给的题大概是:为一个高流量移动 app 设计下单和积分(loyalty points)系统。很符合他们品牌,但题目其实挺好,能覆盖很多有意思的问题。
他们在探什么: 你怎么处理并发写(比如两个 tab 同时想用同一笔积分) 菜单目录在上千个门店、带区域差异时的可扩展性 移动端和 backend 之间的 API 设计 缓存策略,尤其是菜单展示这种读多 vs 下单提交这种写多 故障模式和重试行为
他们并不是要完美答案。有个面试官一开始就明确说:「我们更在意你怎么权衡取舍,而不是最后落到某个特定设计。」我很认真对待这句话,一直把推理过程讲出来。
第二位工程师前 30 分钟几乎不问问题,直到我开始聊基于队列的订单处理和 dead letter queue 才突然来劲。教训:把异步处理主动提出来,会很对味。
一个坑:他们问了 multi-region。我没专门准备过这个。没把 loop 面崩,但确实让我有点措手不及。如果你要面这轮:CAP 基础要熟,尤其要能在积分场景下聊最终一致性。
整体设计难度:扎实的 mid-level FAANG system design bar,不是 Google 那种难度。标准分布式系统话题准备过就没问题。咖啡业务背景反而是礼物,因为你可以把真实用户场景讲得很具体。
从 design 轮到收到 offer 大概 12 天。细节问题也欢迎问。