几个月前我完成了 Plaid data engineering loop,面的是 senior 的 DE 岗位。分享一下,因为 data eng 面试在不同公司差异太大了,我有两周都在准备错方向。
真实形式是:一轮 OA(偏 SQL)、一轮 live coding、一轮聚焦 data pipelines 的 system design、一轮 behavioral。加上 recruiter screen 一共五步。
OA SQL:比我预期难。不只是 join 和 group by。有一道题涉及带 partition 的 window function,另一道基本是递归 CTE,或者用 LAG/LEAD 的创意解法来做 gap-and-island 类问题。如果你一直对高级 SQL 偷懒,投递前最好补起来。我觉得按 SQL 的 LeetCode 来对标的话,OA 大概是 medium-hard。
Live coding:Python。一个数据处理题。给你一个类似 dataset 的结构,让你做 transform、处理 edge case,然后再针对更大输入做优化。感觉像真实的数据任务,不是纯算法题。懂 pandas 会加分,但他们也允许你只用纯 Python。
System design(最重要的一轮):设计一个金融数据 pipeline。背景非常 Plaid:想象你要大规模接入来自 bank connections 的实时交易数据,把不一致的银行返回格式做规范化,然后可靠地提供给下游应用。架构会长什么样?
我讲了:ingestion 层(用 Kafka 做 streaming)、normalization service(schema registry、处理缺失字段)、存储(data lake + 最近交易的热缓存)、失败 ingestion 的 retry logic、observability。面试官对「what happens when a bank returns malformed data(当银行返回格式错误的数据时会发生什么)」和「how do you handle schema drift over time.(你会如何处理随时间发生的 schema drift)」追问很狠。
金融数据补充:他们很在意可审计性。每一次 pipeline 的变更都要可追溯。我提了 immutable event logs,这点反馈很好。
总流程:从开始到结束大概 5 周。不算特别快,但也不慢。沟通挺顺畅。
senior DE 在 SF 的 comp:我拿到的 offer 大概 $220-240k TC,偏工资为主,跟纯 SWE 岗相比 equity 比较少。建议一定要问清楚 equity vesting schedule。