Data Engineer SQL + Python 面试准备指南:Meta、Google、Amazon、TikTok 常见考法
面向北美华人候选人的 Data Engineer 面试准备指南:系统讲解 SQL、Python、日志处理、数据管道、ETL、窗口函数、JOIN、数据建模和 pipeline design 的准备方法。
Data Engineer 面试和 SDE 面试最大的区别是:它不是只看算法,而是同时考 SQL、Python、数据建模、ETL、pipeline design、数据质量和业务理解。Meta、Google、Amazon、TikTok、Snowflake、Stripe、DoorDash 这些公司的 DE 面试,常常会在 45-60 分钟里连续考多道 SQL 和 Python 小题,节奏非常紧。
很多北美华人候选人技术基础不差,但准备 DE 面试时容易走偏:只刷 LeetCode,SQL 只会基础 JOIN,Python 只会写算法题,不熟悉日志、表结构、数据质量和 pipeline 场景。结果面试中题目不难,却因为速度、边界和表达不稳而失分。
这篇文章会从 SQL、Python 和 pipeline 三条线拆解 Data Engineer 面试该怎么准备。
DE 面试的常见结构
不同公司流程不同,但技术筛选常见组合是:
- 20-30 分钟 SQL,2-4 道题
- 20-30 分钟 Python,2-4 道题
- 简短项目 / pipeline 追问
- onsite 中加入 data modeling、ETL design、system design、behavioral
有些公司节奏非常快,平均 5-8 分钟就要完成一道题。你没有太多时间慢慢试错,所以必须提前形成题型反射。
SQL:窗口函数是分水岭
Data Engineer SQL 面试通常不会只考 GROUP BY。你至少要熟练掌握:
JOIN:inner、left、self join、anti join- aggregation:
COUNT DISTINCT、分组统计、条件聚合 - window function:
ROW_NUMBER、RANK、DENSE_RANK、LAG、LEAD - CTE:把复杂逻辑拆成可读步骤
- date handling:按天、周、月聚合,rolling window
- retention / funnel / cohort
- missing data 和 duplicate data
- query optimization:partition、index、pre-aggregation
如果面试官问“找 top 3 books with highest lifetime value with more than 10 copies”,它不只是排序题。你要先搞清楚 lifetime value 的定义、copy count 从哪张表来、是否需要过滤已下架或未归还记录,然后再写查询。
SQL 答题节奏
一个稳定流程是:
- 先复述业务问题。
- 确认表结构和 grain。
- 说明需要哪些 JOIN 和过滤。
- 用 CTE 分步骤写。
- 最后检查 duplicate、NULL、日期边界。
不要一上来写嵌套很深的 SQL。DE 面试官通常更喜欢可读、可 debug 的查询。
Python:更像数据处理,不是算法竞赛
DE Python 面试常见题包括:
- 解析 log entries,判断事件是否合法
- 根据嵌套数组或字典聚合数据
- 计算用户分数、排名、状态
- 处理 closed / open locations 这类层级数据
- CSV / JSON parsing
- streaming aggregation
- deduplication 和 validation
这类题通常不需要复杂算法,但需要你写得快、清楚、边界稳。
常用数据结构:
dict:按 user_id、book_id、office_id 聚合set:去重、状态是否合法defaultdict:分组统计Counter:频次deque:滑动窗口- list of tuples:排序和时间序列
Log validation 怎么准备
日志题很常见。比如给一串事件,判断登录、登出、借书、还书、进入、离开是否合理。核心是维护状态集合。
答题时要先定义状态:
- 当前哪些用户 active
- 哪些资源已被占用
- 哪些事件顺序非法
- 重复事件如何处理
- 缺失事件是否直接 false
不要把所有 if 写得很散。可以写成:
for event in logs:
parse event
validate transition
update state
return final_state_is_valid
这类题的 edge cases 比算法更重要。
SQL + Python 的组合考法
很多 DE 面试会先用 SQL 查表,再用 Python 做后处理,或者反过来让你解释一个 pipeline 应该在哪一层处理。
你需要能回答:
- 哪些逻辑应该放 SQL,哪些放 Python?
- 如果数据量很大,Python 单机是否撑得住?
- 是否可以预聚合 summary table?
- 如果要每天跑,如何做 incremental processing?
- 如果数据有 late arrival,怎么处理?
一个简单原则:
- 大规模过滤、JOIN、聚合优先放在 warehouse / Spark
- 复杂业务规则、API 调用、文件处理可以放 Python
- 需要复用的核心指标最好沉淀成 model 或 summary table
Data Modeling:先搞清楚 grain
DE 面试里最容易被忽略的是 grain。表的每一行到底代表什么?
例如订单表可以是一行一个 order,也可以是一行一个 order item。事件表可以是一行一个 user event,也可以是一行一个 session summary。grain 不清楚,SQL 很容易重复计数。
回答 data modeling 时,先说:
- fact table 是什么
- dimension table 是什么
- primary key / foreign key 是什么
- 一行数据的粒度是什么
- 时间字段有几个:event_time、ingestion_time、processing_time
- 是否支持 slowly changing dimension
如果你能主动指出 grain 和 duplicate risk,面试官通常会觉得你是真做过数据工程。
Pipeline Design:不要只说 Airflow + Spark
Data Engineer system design 不是背工具名。你要讲数据如何从 source 到 sink:
- Source:DB、Kafka、API、log、file
- Ingestion:batch、stream、CDC
- Storage:raw、staging、curated、warehouse
- Transform:SQL、Spark、dbt、Flink
- Quality:schema check、null check、dedup、freshness
- Orchestration:Airflow、Dagster、cron
- Monitoring:SLA、row count、latency、error rate
- Consumers:dashboard、ML feature、downstream service
面试官经常会追问:如果数据迟到怎么办?如果某天 row count 突然少 80% 怎么办?如果上游 schema 变了怎么办?如果 backfill 需要重跑半年数据怎么办?
这些问题比“用什么工具”更重要。
北美华人候选人的常见失分点
第一,SQL 写得对但讲不清业务含义。
DE 面试不是 SQL 考试。你要解释指标定义、表关系和边界。
第二,Python 写成 LeetCode 风格。
变量名短、逻辑挤在一起、没有状态解释。DE Python 更看重可读性。
第三,不问 grain。
很多 SQL 错误来自重复计数。面试前必须养成问 grain 的习惯。
第四,不会讲数据质量。
真实 DE 工作里,数据质量和监控很重要。面试中主动提到 freshness、completeness、dedup、schema drift,会加分。
两周准备计划
第 1-4 天:SQL 高频题
每天练 5 道 SQL:window function、self join、retention、funnel、top-k、anti join、rolling metrics。每道题都用 CTE 写清楚。
第 5-7 天:Python 数据处理
练 log validation、nested aggregation、CSV / JSON parsing、sliding window、dedup、state machine。每道题都加 edge cases。
第 8-10 天:数据建模和 pipeline
练订单、支付、用户行为、推荐系统、内容互动、实验分析。每题都说清楚 fact / dimension、grain、quality checks。
第 11-14 天:完整 mock
做一轮 60 分钟 DE technical screen:3 道 SQL + 3 道 Python。再做一轮 pipeline design mock。
相关阅读
- Data Engineer SQL 高频题全解析:窗口函数和复杂查询专项
- Python 面试题完整指南:补 Python coding 基础
- Data Engineer 面试准备指南:完整 DE 准备路径
- TikTok Data Engineer 面经:了解 DE onsite 场景
需要 DE 面试专项辅导?
Data Engineer 面试最难的是 SQL、Python、pipeline 和业务解释同时在线。Interview Coach Pro 可以帮你做 SQL/Python technical screen mock、数据建模、ETL design 和项目 deep dive。
相关面试辅导
如果你正在准备类似面试,可以直接从下面的专项辅导开始。