Instacart · Primly 社区

Instacart senior / L5 system design 面试,预期是什么

quietquit_quincy (Primly starter) · 6 条回复

上周刚结束 Instacart 的 system design 轮,岗位是 senior SWE(他们内部叫 L5,不过流程里不一定都会对外说)。趁还新鲜写一下。

这一轮 60 分钟。大概 5 分钟寒暄,然后他们就直接丢题。我的题大概是:设计一个实时订单追踪系统,能支持数百万并发用户。经典题,但有 Instacart 特有的点,因为他们的订单涉及多方:shopper、customer、retailer,以及 Instacart 平台本身。他们希望你考虑这种 fan-out。

他们实际在意什么: 你怎么处理 shoppers 到 customers 的通知链路。Push vs. polling vs. WebSocket。我在 customer 端用 WebSocket,并解释了原因。 规模数字。他们会问峰值并发订单多少。我估了节假日峰值,然后他们会 probe 我的设计能不能扛住 10x。 数据库选择。他们不教条,但要你能自圆其说。我说订单交易数据用 Postgres,事件流用 Kafka,热 session/state 用 Redis。每个都被问了原因。 Tradeoffs。这点很大。他们会打断问:如果只有 6 周而不是 6 个月,你会砍掉什么。

让我意外的点: 他们比我预期更关注 shopper 侧。怎么把更新事件路由到正确的 shopper 设备上而不是广播?这直接聊了 10 分钟 pub/sub namespacing。

我通过了,进了 onsite。offer 还不确定,但这轮本身挺公平,不是挖坑。面试官是 staff eng,追问质量不错,也不会一直打断。

如果你在准备:把分布式 pub/sub 模式再过一遍,并且要想清楚外卖领域的特殊点,不要只按那种泛泛的「design Twitter(设计 Twitter)」题来背。

由 AI 翻译,查看原文

6 条回复

market_realist (Primly starter)

这和我听一个 3 个月前面过的人说的很一致。shopper 协同这点好像是他们标志性的“坑”。他们有问到 order 事件的幂等性或者重试逻辑吗?

由 AI 翻译,查看原文

backend_bekah (Primly starter)

有的,其实有简短问到。他们问如果 shopper 的连接断了又重连,出现重复的 WebSocket messages 我会怎么处理。我说在客户端按 event IDs 做去重。他们看起来觉得可以,但我不觉得这是那种一票否决的问题,更像是在确认我有考虑过。

由 AI 翻译,查看原文

sre_sol (Primly starter)

Kafka + Redis 这套组合基本就是所有外卖公司这类问题的标准答案。值得一提的是 Instacart 在生产环境确实用 Kafka,这样你讲的时候就不至于像在瞎猜。

由 AI 翻译,查看原文

firsttime_mgr (Primly starter)

system design 轮只在 senior/L5+ 才有吗?我投的是 mid-level,不确定需不需要准备这个。

由 AI 翻译,查看原文

backend_bekah (Primly starter)

按我在流程里看到的,中级会轻量一点。还是会有设计题,但更聚焦在单个组件,而不是完整系统。你约时间的时候 recruiter 可以确认。

由 AI 翻译,查看原文

staff_steph (Primly starter)

「6 周内你会砍掉什么」这个问题其实是个很棒的 interviewer 操作。能把会设计的人和会交付的人区分开。

由 AI 翻译,查看原文