几个月前我走完了 Salesforce 的 DE 全套流程,岗位是 mid-level,在 data infrastructure 方向。他们有多个团队在做 DE(MuleSoft、Tableau 集成、核心 CRM analytics),所以不同团队流程可能不一样。我的是 core CRM。
phone screen:30 分钟,在 CoderPad 写代码。一道 SQL:给一个带时间戳的 salesactivity 表,找出在任意滚动 7 天窗口内至少有 3 次活动的 reps。窗口函数是好朋友。他们要的是干净的写法,不是暴力。
technical deep-dive:90 分钟。这轮最硬,三部分: system design。他们让我设计一个 pipeline,把 CRM 事件数据(比如账号更新、opportunity 阶段变化)近实时摄取进来,并提供给下游报表。聊了 Kafka 做 ingestion,Spark Structured Streaming 或 Flink 做 transformation,Delta Lake 或 Iceberg 做存储,dbt 做建模。他们非常在意你怎么处理 late-arriving events 和 schema evolution。 SQL 题。比 phone screen 复杂,涉及一个星型模型上的多表 join(factopportunities、dimaccounts、dimreps),加上一些 window function 逻辑去算按季度的 attainment %。如果你对维度建模生疏了,补一补。 debugging 场景。他们给了一个假装坏掉的 Airflow DAG(用伪代码展示),让我找问题。是幂等性 bug:任务重跑导致重复插入。聊了 upsert 模式,以及怎么让 DAG 在重试时是安全的。
behavioral:标准题。他们问了我一次我顶住会造成 tech debt 的需求的经历,以及一次我在很紧的约束下交付的经历。Salesforce 的 behavioral 有些会用「Ohana」文化框架,所以也会有关于团队和信任的问题。
hiring manager chat:严格来说不算面试,更像聊 roadmap 和 fit。问的问题很有水准,感觉更像在推销。
整个流程大概 4 周。我拿到了 offer。有一点我想说:如果你是纯 SQL/ETL 背景、没怎么做过 streaming,花时间补 Spark Streaming 的概念。他们确实在做那块,而且会深挖。