Slack · Primly 社区

Slack machine learning engineer 面试:recsys 侧重点,他们都问了什么

ds_dmitri (Primly starter) · 5 条回复

今年早些时候走了 Slack 的 MLE loop。岗位在 search and discovery team,所以推荐系统相关内容比重很大。如果你是纯建模背景、没做过 recsys,建议补一下。

先说结构。总共五轮加一轮 recruiter screen:

Recruiter + HM screen。 常规内容。HM 会专门问我有没有 ranking model 和 implicit feedback 数据的经验。如果你有,一开始就优先讲。

Coding round 1(通用 SWE)。 这个挺意外的。标准 LC medium,没有 ML 专项。图相关题,BFS/DFS 那类。我觉得他们这么做是为了确认 MLE 候选人真的能写干净的代码。很多 ML 候选人 CS 基础会生疏,别跳过这块。

Coding round 2(ML 专项)。 Python、numpy,从零实现。让我实现 cosine similarity,然后把它优化成对一批向量做批处理。接着又让我写一个简单的 gradient descent 更新步骤。这里的门槛感觉是:你能不能把数学落到代码上,还是只会调 sklearn。

ML design round。 重头戏。题目是:为 Slack 的 search 功能设计一个 search ranking model。这题就是故意开放式的。我按这个结构来讲:问题定义、数据来源和信号、特征工程、模型选择、训练配置、线上 serving 和延迟约束、指标和评估、A/B 测试计划。我聊了 transformer-based semantic search、BM25 作为 baseline、learning-to-rank(LTR)用 LambdaMART 作为中间路线。他们追问很硬,比如 cold start(一个全新 workspace 没有使用数据怎么办)和 feedback loop(怎么避免把烂结果越推越烂)。能的话这轮多花时间准备。

Behavioral round。 来自 bar raiser program 的面试官。问了我一次我上线的东西在生产环境失败的经历、我在过往项目里如何处理不确定性,以及一个关于在 mission-driven 环境里工作的价值观问题。他们更看重沟通能力,不只是技术。

整体来说,这个 loop 对 MLE 岗位的设计挺合理。不是那种“其实是 SWE 面试,只是顺手问一句你是不是也喜欢 ML”那种拼接感。

时间线:从 recruiter screen 到拿 offer 是 4.5 周。debrief 比我预期久,大概一周半。我被告知 ML 岗位这是正常的,因为 hiring committee 更大。

Comp(senior MLE,约等于 L5):base 200-220 区间,上面再加 RSUs。我在 SF,所以 YMMV。我没有从其他 offer 拿到 counter 数据,所以也说不准谈判空间有多大。

由 AI 翻译,查看原文

5 条回复

ux_uma (Primly starter)

冷启动问题基本我在几乎所有 recsys 的面试环节都见过。没有完美答案,但他们想听到你承认问题存在,并提出一个合理方案:content-based 兜底、引入 exploration bias、用 embeddings 做 zero-shot。最好提前准备一套固定的表述框架。

由 AI 翻译,查看原文

returner_ren (Primly starter)

ML design 这一轮是白板那种形式吗,还是给你一份 doc 让你在上面标注?我每次不知道提前的形式就会特别紧张。

由 AI 翻译,查看原文

ml_mike (Primly starter)

就是虚拟白板,本质上是共享的 Google doc 或绘图工具。我用的是写出来的大纲再口头讲,而不是画框图。从我的感受来看,他们两种方式都能接受。我会建议你在那轮之前问一下 recruiter,这样你能决定自己想怎么准备。

由 AI 翻译,查看原文

growth_gabe (Primly starter)

关于 LTR 和 transformer 取舍的细节讲得很好。这对任何搜索产品都是个真实的设计问题:你是需要开箱即用的语义理解,还是流量足够大,以至于一个调得很好的 LTR 模型就能以更低成本、更快速度把效果做到八九成。

由 AI 翻译,查看原文

analyst_ana (Primly starter)

感谢这个薪酬数据点,即使很粗略也很有用。SF L5 senior MLE base 在 200-220 这个区间,跟我在 blind 和 levels.fyi 看到的差不多,所以听起来挺可信的。

由 AI 翻译,查看原文