大概六周前我走完了 Block data engineer 的面试 loop。分享一下,因为我准备时几乎找不到信息。
recruiter screen 很标准。他们想确认你做过真实的东西,不只是对 sample dataset 写过查询。我提了我以前做 event-driven pipelines 的经验,这点挺加分。
phone screen(45 分钟,对面是一个 senior DE) 先过简历,然后立刻切到 SQL 题。题目是 session windowing:给一张原始 clickstream 表,用 30 分钟无操作间隔来定义 session,并计算 session 级指标。挺复杂的。他们想看我把边界情况讲出来,不只是写出答案。会用到 window function、NULL 处理,大概率还要写一两个 CTE。
他们还问了:「how would you design a pipeline to keep this computation up to date as new events come in?」(你会怎么设计一个 pipeline,随着新事件进来,让这个计算保持最新?)所以你需要同时懂 batch 和 streaming 概念。kafka、spark、flink、airflow 在我的回答里都很自然地提到了。
onsite(4 轮) SQL/分析:两题,一题是漏斗分析(各支付步骤的转化率),另一题是 cohort 留存表。都非常依赖窗口函数。 数据建模:给一些产品背景(Square merchant dashboard),设计维度模型。fact 表、slowly changing dims、grain 的选择。他们很看你选择背后的「为什么」。 数据系统设计:设计一个近实时 fraud signal pipeline。这轮最难。延迟 vs. 成本怎么取舍,哪些算离线哪些算流式,怎么 backfill。 Behavioral:标准 STAR。跨团队影响力、事故复盘、和 stakeholder 意见不一致。
他们内部用 BigQuery,也提到 dbt,但说不要求你有直接经验。懂概念比懂工具更重要。
total 从第一次联系到 offer 大概 6 周。offer 在 SF 市场算有竞争力,但不是什么惊天数字。有兴趣的话我会在 comp 贴里分享。