终于在 2026 Q1 走完了一次 Uber data engineer loop,目标是 senior DE(大概相当于他们数据岗的 L5)。按 DE track 写一下,因为大多数帖子都在讲 SWE。
流程结构: 我面的是 senior DE,总共四轮:Coding(Python/SQL)、数据系统设计、数据建模、behavioral。
Coding 轮: 给的是一道 Python 题,不是 SQL,这点挺意外。题目是高效处理和转换 log 数据。大概是:给你一条 record 流,按时间桶做聚合,并处理一些晚到数据的边界情况。晚到数据的处理也被追问了,结合他们规模,这很合理。
SQL 是以另一种方式出现的:在数据建模那轮,他们让我基于刚刚设计的 schema 写一个 query。所以它不是纯 SQL 轮,而是嵌在建模题里。
数据系统设计: 这是最重的一轮。prompt 大概是搭一个 pipeline:摄取 ride events,做转换,然后提供给 analytics 和近实时 dashboard。我需要设计 ingestion 层、存储层和 serving 层。
Kafka 也聊到了(他们内部用得很重)。他们追问 exactly-once semantics,这类话题永远很有趣。还问了 schema evolution,以及怎么处理 breaking changes。我提了 Protobuf + schema registry。面试官在这块聊得很深。
Spark vs Flink 的取舍也聊到了。我主张 streaming 路径用 Flink,batch 历史回填用 Spark。他们看起来认同,但追问了同时跑两套系统的运维复杂度。
数据建模轮: 维度表、事实表、慢变维。很经典的内容,但在 senior 级别他们要的是细腻度:什么时候用 SCD Type 2,什么时候只要 append-only logs?怎么在规模下做 schema migration?
我希望自己多准备的:分布式系统里的 exactly-once 保证,以及数据 contract/schema evolution 这一块。这两部分被问到了,但我当时没有我想要的那么锋利。