上个月完成了我在 Square 的 DE 全套面试。发这篇是因为我准备的时候没找到一篇靠谱的复盘。目标是 senior DE,偏 pipeline 和 platform。
Recruiter screen:30 分钟。主要聊背景、为什么 Square、我对 streaming vs. batch pipelines 的经验。我提到 Kafka 和 Flink 的经验,recruiter 标记这点很相关,因为 Square 跑的是实时交易平台,所以这里做 streaming 不是可选项。
Technical screen:偏 SQL。三道题,45 分钟。两道偏 analytics(聚合、window functions)。一道更偏数据建模:给一组业务需求,设计表结构。我画了一个 fact/dimension 模型,他们追问并让我讲 slowly changing dimensions。SCD 要熟。
Onsite(4 轮):
Pipeline design / system design:设计一个实时 pipeline 来检测重复交易。我讲了 Kafka 作为事件流,一个有状态的 Flink job 用窗口把交易聚合起来,然后按 idempotency key 检查重复,落到 Postgres 用于告警,同时落到 S3 用于历史分析。他们问了故障模式:Flink job 挂了怎么办?怎么保证 exactly-once?我们在 Kafka offsets 和 checkpointing 上聊了很久。
SQL round:比 phone screen 的查询更重。有一道题用了 recursive CTE(组织层级)。语法我知道,但练得不多。做出来了,但很慢。
Data modeling round:为 Square 的 seller analytics 产品设计数据模型。一个 merchant 的交易历史 schema 长什么样?随着时间怎么处理 schema changes?聊到了 versioning 和列级变更。
Behavioral:"Tell me about a pipeline that broke in production and how you handled it.(讲讲一个在生产环境里崩掉的 pipeline,以及你是怎么处理的。)" 这题要有故事。要有真实数字(SLA、data lag、业务影响)。
准备要点:Kafka + Flink 或 Spark Streaming,SQL(包括 window functions 和 CTEs),star schema vs. OBT,exactly-once 保证,以及一个来自你生产环境经历的扎实 incident story。
决定是在 onsite 后 7 个工作日出。通过并进入 offer 阶段。薪资讨论另开一帖。