我走了两次 Snowflake 的 SWE loop。第一次挂了,第二次拿了 offer。如果让我从零重新来一遍,我从第一天起会做的不一样的事如下。
Coding 准备: 他们是 Leetcode 风格的轮次。Medium 难度是基线,但会给 senior 候选人更难的题。图、树、sliding window、union-find。题不算偏门,但时间压力很真实,而且面试官看的是你解题时怎么沟通,不只是你能不能解出来。
如果重来:我会刷 Neetcode 150,重点是模式,不是单道题。要知道自己为什么这么做,而不只是做出来能过。
System design: 这是我第一次 loop 翻车的地方。他们在乎跟 Snowflake 相关的问题:data warehousing、distributed query execution、ingestion pipelines、columnar storage。我带着泛泛的分布式系统知识进去,结果他们一问在超大 columnstore 上怎么做 query optimization,我当场露馅。
如果重来:我会读 Snowflake 公开的架构论文和博客。他们有几篇工程博客讲 virtual warehouse model,以及怎么把 storage 和 compute 分离。把这些读了,掌握他们的词汇体系。
Behavioral: 他们有一套 competency rubric:Collaboration、Ownership、Drive。每个 behavioral 问题都在评估其中一个维度。把你在每个维度上最强的故事想清楚,并且准备好短版(2 分钟)和长版(4 分钟),看面试官想听到多细。
第一次 loop 我讲的是有趣的故事。第二次 loop 我讲的是相关的故事。差别就在于你知道他们到底在评什么。
其他也很重要的杂项: 研究产品。如果你面的是 platform team,要知道 Snowpark 是什么。要知道 Snowflake 在 governance 上的做法和竞品有什么区别。有可能会问,即使不问,也能传递你是真的想来,而不是海投。
第二次 loop 总准备时间:大概 6 周,每天 1-2 小时。感觉刚刚好。