上周二收到了拒信。四轮,包含最后的 onsite,所以比前面那种早早挂掉的更扎心。趁记忆还新鲜写下来,因为我真觉得能帮到别人,说实话也能帮到我自己。
简单背景:我面的是他们 payments infrastructure team 的 L4 SWE。Recruiter 沟通很到位,流程也挺有条理。我挺喜欢这一点。
我觉得自己栽在哪
Coding 那轮还行。不简单,但我做下了两道中等题,也按时回答了关于时间复杂度的 follow-up。我对这些比较有把握。
System design 那轮是我翻车的地方。题目大概是:设计一个 payment retry system,要处理指数退避、幂等、以及失败分类。我概念上懂,但我太快就往浅层答案跑了。我在没把需求钉死之前就先画了高层图。面试官一直在问「what are you optimizing for」(你在优化什么),而我一直试图用画更多框来回答。
后来我才知道(一个拿到 offer 的朋友跟我说)Stripe 真的很看重你能不能证明你理解“实际问题”,而不只是会说分布式系统的术语。他们想看到你慢慢把 failure mode 想清楚,而不是急着冲到方案。
Behavioral 那轮
当时我觉得挺顺。回头看,我的回答可能太空了。我很多时候默认用「我们」,其实应该更多说「我」。这是一个很典型的信号,说明你在回避。Stripe 的 STAR 问题似乎特别看重 impact。「实际结果是什么」这类追问换了个说法问了三次。
我会怎么做不同
System design:前 5-10 分钟先把需求和约束讲出来,出声说清楚。至少问够 3 个澄清问题再动笔画图。先想 failure modes,再想 happy path。
Behavioral:第一场面试前先写 6-8 个具体故事。不是要点,而是真正能说出来的短文。你“有”的故事和你真正开口练过的故事差别巨大。
Take-home 不在我的流程里,但我听说 Stripe 某些岗位会用。把它当生产代码写,不要当成刷题。
我基本已经释怀了。L4 走到最后一轮被 Stripe 拒掉也不算什么都没拿到。但能具体知道为什么,比那种「我们选择了其他候选人」的模糊反馈更有用。