上个月刚结束 Stripe data engineering loop,面的是 senior DE 岗。想写一下,因为 Stripe 的 data eng 面试内容几乎不存在,我只能从 SWE 和 DS 的帖子里拼。
简版结论:比我预期难,更偏工程导向。SQL 重要,但不是主角。
流程长什么样:
Recruiter screen、technical phone screen,然后 4 轮 onsite。
Phone screen:SQL。他们给我一个 schema(像 transactions、merchants、events 这些表,感觉是内部 Stripe schema 的简化版),让我写越来越复杂的 query。我遇到 window function、一题 CTE 很重的 attribution、还有一题识别 event 数据异常。中高难。如果你只会基础聚合,得补课。
Onsite 轮次: 数据建模: 为一个新功能设计 schema。我拿到的是:设计一个支持 merchant 级别 payout timing 报表的数据模型。聊了很多 analytics 场景下 normalization vs. denormalization。他们会追问 slowly-changing dimension、分区策略、以及你怎么做 schema evolution 又不把下游 consumer 弄挂。 Pipeline 设计: 搭一个 pipeline 摄入原始 transaction events,做转换,然后产出 reconciliation 报表。不是「what tools would you use(你会用什么工具)」(你会用什么工具)这种,而是深挖正确性保证。怎么处理 late-arriving data?你怎么知道 pipeline 完整了?重试长什么样?这轮感觉就是 SWE 的 system design,只是换到数据基础设施。 Coding: Python。一题解析并转换结构化日志格式的问题。形式跟 SWE 的 coding 轮类似,算法深度轻一点,但更看重实现是否干净。 Values: 和其他岗位一样的价值观/behavioral 轮。准备好真实故事。
我会对准备的人说: Stripe 更在意数据正确性,不是数据量。问题不是「how do you process a petabyte(你怎么处理一个 PB)」(怎么处理一个 PB),而是「how do you know your numbers are right.(你怎么知道你的数字是对的。)」(你怎么知道你的数字是对的。)这就是 fintech 的取向。每个 pipeline 设计题背后都默认有一条「what if this is wrong(如果这错了怎么办)」(如果这错了怎么办)主线在跑。
他们问到的工具:Spark、Airflow、dbt。熟悉是预期,深耕一两个就够。
我拿到了 debrief,但没有 offer。反馈是我的 pipeline 设计轮很强,但在数据建模里的 schema evolution 问题上丢了分。合理。