刚结束 Morgan Stanley data engineer 的完整流程,面的是他们 enterprise data platform 组的 VP 级别 DE。趁记忆还新鲜分享一下,因为我准备时完全找不到靠谱的细节。
总共四轮: Recruiter screen(30 分钟,常规) 技术 SQL 和数据建模(60 分钟,一位面试官) 数据 pipeline 设计 / 架构(60 分钟,senior engineer 面试官) Behavioral(30 分钟,hiring manager)
没有传统意义上的 DSA live coding。这不是 LeetCode 重的 loop。非常聚焦 data engineering 这件事本身。
SQL 轮:
是真 SQL,不是伪代码。在共享编辑器里做。题目包括: 复杂 window functions(running totals、分区内 rank、做时间序列分析的 lag/lead) 多表 join 题,schema 像 trade history + account data。schema 会给。 一题问 query 性能:给你一个慢 query,你怎么诊断和修。想听到:看 query plan,看 indexes,考虑对大型时间序列表做 partitioning。
SQL 题比我在其他地方遇到的大多数 SQL 面试题都难。他们默认你是真的在用 SQL,不是只知道 SELECT 是什么。
Pipeline design 轮:
题目:设计一个 pipeline,摄入实时 market data,加工后用于下游 risk 计算,并以一种既支持历史查询又支持实时 dashboard 的方式存储。
他们想听到很具体的点:摄入用 Kafka vs 其他方案,batch vs streaming 处理(Spark、Flink 或类似),存储层选择(为什么 analytics 用 columnar),以及延迟 SLA。他们也会追问数据质量:消息乱序或重复怎么办。
金融领域在这里很关键。他们会追问「what happens if you miss a tick(如果你漏掉了一个 tick,会发生什么?)」,答案不是「晚点重试」,而是「我们怎么检测缺口,怎么 backfill,怎么告警」。
他们看起来熟悉的工具: Kafka、Spark、dbt、Snowflake,还有一些内部自研系统,他们提了名字但我没听过。