周二下午我收到了 Databricks 的拒信,就在我最后一轮 virtual onsite 结束 3 小时后。这个速度可能本来就是信号,但当时我还处在那种「也许只是自动回执」的自我安慰窗口里。
我面的是 mid-level SWE,大概对应 L4。总共 6 轮,三周左右:phone screen,然后一个 take-home Spark coding challenge,然后 onsite 四轮 panel:分布式系统设计、coding(两轮)和 behavioral。
我觉得我输在:
分布式系统设计那轮。 题目很开放:设计一个能在规模下处理 late-arriving events 的 data pipeline。我画的方案还算合理,但我没有把它明确和 Databricks 的真实产品面联系起来:Delta Lake、structured streaming、lakehouse 架构。他们是数据公司,他们想看你理解他们真正解决过的问题。我讲得太泛了,本该更具体。
Take-home。 我题做对了,但 Spark 代码不够 idiomatic。我用了 pandas UDFs,本来应该用原生 Spark functions。对 200GB 的数据集来说,这差别很大。我知道这是风险,但还是交了。错误。
Behavioral 那轮。 我刚结束两年的职业空窗期。我解释得很诚实,但没有把 gap 讲成「我学到了什么、我怎么回来得不一样」。我只给了事实,没有叙事。他们可能在「growth mindset」上给我打低了。
如果重来一次,我会先花整整一周读 Delta Lake 文档和 Databricks 的 engineering blog,再去刷任何 LeetCode。coding 只是门槛。system design 才是你拉开差距的地方,而你靠懂他们的领域来拉开差距。
还有:要把职业空窗期的解释练到能说出口,不要只在脑子里想。Onsite 的 behavioral 节奏很快,你当下没有时间临时组织语言。
三个月后我去了别的地方。结果也还行。但这次很扎心,因为我觉得是可以修正的。