上个月刚在 Wayfair 做完 senior 的 SWE loop,系统设计那轮是最有意思的部分,所以发个拆解。
先说下:Wayfair 对外不公开 L1/L2/L5 这种标签,但内部他们大概会把 senior IC 映射到多数公司叫的 L5/E5。recruiter 说这个级别叫 Senior SWE 2。背景参考:我 9 年经验,偏后端,分布式系统方向。
形式。 60 分钟,一个面试官(是我面试团队里的 senior SWE,不是那种通用的 bar raiser)。没有 leetcode,全程做设计。我拿到的题大概是:为大型电商 catalog 设计一个实时的库存和定价 feed。很符合 Wayfair 的风格。
他们真正关心的点。 面试官会很用力地追问: 当成千上万的 SKU 同时更新时,你怎么处理写入争用 存储层面一致性 vs. 可用性的取舍(他们内部是 Postgres 和 Cassandra 混用,所以知道什么时候选哪个很重要) 你的设计在高负载下怎么降级(circuit breakers、backpressure) 粗略的容量估算:存储、吞吐、延迟目标
不知道 Wayfair 专有工具不会扣分。他们不期待你知道。想看的是结构化思考,以及你能不能对自己的设计做反向质疑。
让我意外的点。 面试官明确说:「我不是在找完美架构,我在看你怎么在取舍中前进。」他们让我为我刚做的两个决策站到对立面去辩护。对 senior 这个角色来说,这种要求也很像 staff 级别的 bar。
对我有用的准备。 深入准备事件驱动架构和 CDC(change data capture),因为 Wayfair 底层大量用这些。也建议专门看 catalog 和 inventory 系统。Designing Data-Intensive Applications 这本书在概念上覆盖了你需要的 90%。
有一点我不太喜欢:没有书面 spec,也没有白板,就是一个共享的 Google Doc。如果你习惯用画图工具,得适应一下。
总体来说这轮挺公平,也很有内容。欢迎提问。
6 条回复
pivot_pat (Primly starter)
CDC 这题在电商规模下感受完全不一样。他们有没有问过你怎么处理 flash sale 场景:pricing feed 落后于真实库存?我听说这是个很经典的 Wayfair 问题。
由 AI 翻译,查看原文
remote_swe_42 (Primly starter)
对,就是这样。他们是这么问的:“your pricing microservice just got a 10x traffic spike, how does the rest of the system behave?(你的 pricing microservice 流量突然暴涨 10 倍,系统其他部分会怎么表现?)” 我讲了 eventual consistency window,以及在 frontend 上提示 stale-price 警告,而不是把购买流程卡住。他们看起来挺满意这个思路。
由 AI 翻译,查看原文
qa_quinn (Primly starter)
那种「为自己做过的决定站到对立面去辩护」的要求确实是个信号。所有会这么做的公司,在 senior+ 的门槛上通常都挺强。大厂也会这么做,但经常是放在 debrief 里,现场不会明说。Wayfair 在面试过程中就直接做这件事,我觉得是个绿旗。
由 AI 翻译,查看原文
hardware_hugo (Primly starter)
system design 那轮会涉及 frontend 的点吗,比如 catalog 数据怎么高效渲染,才能撑住几百万个产品?还是完全就是 backend/infra 的范围?
由 AI 翻译,查看原文
remote_swe_42 (Primly starter)
我的 loop 是纯 backend,不过我申请的也是 backend 岗。我感觉 fullstack 或 frontend 的系统设计轮可能会涉及 CDN 策略、客户端缓存,以及你怎么处理过期的 UI 数据。他们确实提到他们的 frontend 很重度 React,如果你是做这块的。
由 AI 翻译,查看原文
finance_faye (Primly starter)
认真问:system design 那轮到底有多少是在真实评估系统性思考,多少只是检查你有没有读过 Designing Data-Intensive Applications?因为很多这种题现在都太容易被“背熟”了,我都怀疑他们到底能从中得到什么信号。
由 AI 翻译,查看原文