Lyft · Primly 社区

Lyft data engineer 面试:pipelines 和 SQL,2026 年他们实际考什么

de_derek (Primly starter) · 6 条回复

我 1 月走完了 Lyft 的 data engineering 面试。我是 senior DE(7 年经验),面的是 senior IC 岗。下面是实际结构和他们在乎什么。

Loop 结构: SQL/data modeling 轮(1 小时) Pipeline design / system design 轮(1 小时) Coding 轮(Python,45 分钟) Behavioral(45 分钟) HM chat

SQL 和 data modeling: 这是最硬的一轮。分两部分:先一道 SQL 题,然后一道 data modeling。

SQL:window functions、聚合、以及一个子查询,题目用的是 Lyft 的核心业务域(rides、drivers、timestamps)。题目是:计算过去 30 天里,每个城市司机在 10 秒内接单的 rides 占比,然后按这个指标给城市排名。听起来很直接,但 schema 里有一些坑,和取消单是怎么记录的有关。

Data modeling:设计一个 schema,用来支撑一个 dashboard,展示每周司机收入,并按 ride type 和 market 拆分。他们想看你是否理解 normalized 的 OLTP schema 和你在 Snowflake 或 Redshift 里为了分析查询实际会怎么建表的区别。我画了一个 fact-dimension 模型,然后他们追问我会怎么处理司机属性的 slowly changing dimensions。

Pipeline design: 给了一个很贴近 Lyft 的场景:来自活跃司机的一条 GPS pings 流,构建一个 pipeline,近实时计算 ETA accuracy。这就是经典 streaming:Kafka ingestion,一个有状态的处理层(他们特别问了 Flink,但 Spark Streaming 也可以),windowing 策略,latency 和 throughput 的取舍,以及如果下游服务挂了你怎么 backfill。

他们不只是问你会用什么技术,还会问 SLA 会怎么定,以及你怎么知道自己有没有没达标。监控一定要有答案:你会埋哪些指标,alert 在哪里触发,谁会被 paged。

Python coding: 更像数据处理题,而不是纯算法题。给你一组 trip records(dict 列表),算一些聚合指标,并处理一些脏数据(null、重复)。他们希望代码干净、可读。他们还让我写了两三个 unit tests。

整体来说:Lyft 的 DE 面试挺扎实。他们考的是实际 DE 技能(streaming、建模、SQL 深度),不是泛泛的 SWE 算法。如果你 pipelines 很熟,也会为分析查询建模,这个 loop 是可控的。对我来说最难的是 SQL 轮,主要是因为 schema 的坑。

由 AI 翻译,查看原文

6 条回复

ds_dmitri (Primly starter)

SCD(slowly changing dimensions)这题我几乎没见过 DE 候选人会专门准备,但它在面试里一直在抓人。如果你要进任何 data engineering 的 loop,SCD 各种类型一定要背到滚瓜烂熟。

由 AI 翻译,查看原文

de_derek (Primly starter)

完全同意。尤其是 SCD type 2。你要是解释不清楚为什么要加 startdate/enddate,而不是直接覆盖那一行,不管你 Spark 多厉害,都会显得很 junior。

由 AI 翻译,查看原文

analyst_ana (Primly starter)

等等我现在就去查 SCD type 2,因为我完全不知道 DE 面试还会考这个

由 AI 翻译,查看原文

content_cole (Primly starter)

挺有意思他们会特别问 Flink。大多数公司在面试里还是默认 Spark Streaming。很高兴看到他们确实跟上了行业里正在发生的东西。

由 AI 翻译,查看原文

de_derek (Primly starter)

Lyft 的数据栈挺现代的。他们做实时这块用 Flink 有一阵了。这不是陷阱题,是我说会用有状态的 stream processor 之后,他们很自然地追问你会选哪个、为什么。

由 AI 翻译,查看原文

Primly Team

在 senior 的 DE loops 里,有一个环节经常被低估:SQL 或建模题里那层假设和数据质量。就算题目看起来只是「算个指标」,考官也常常会先看你在写查询前,怎么定义人群范围、时间边界、以及事件语义。

一个实用的答题结构: 用大白话复述指标,然后列出你会处理的边界情况(延迟事件、重复、取消、缺失时间戳)。 为每张表和最终输出都明确粒度(grain)。 加 2 到 3 个你会跑的校验查询(按天行数、acceptance 时间分布、join 基数检查)。 做建模时,直接问“what is the fact table event(事实表事件是什么)”和“what dimensions are slowly changing,(哪些维度是缓慢变化的,)”,再补充你会怎么回填并保持一致性。

你在面试的 SQL 或 dashboard schema 里,遇到过哪些最意外的「坑」?你是怎么快速发现的?

由 AI 翻译,查看原文