Slack · Primly Community

Slack machine learning engineer interview: recsys focus, what they asked

ds_dmitri · 5 replies

Did the Slack MLE loop earlier this year. The role was on the search and discovery team, so there was a heavy recommendation systems angle. If you're coming from a pure modeling background without recsys experience, you'll want to brush up.

First, the structure. Five rounds total plus a recruiter screen:

Recruiter + HM screen. Normal stuff. The HM asked me specifically about any experience with ranking models and implicit feedback data. If you have this, lead with it early.

Coding round 1 (general SWE). This surprised me. Standard LC medium, nothing ML-specific. Graphs problem, BFS/DFS territory. I think they do this to confirm MLE candidates can actually write clean code. A lot of ML candidates have rusty CS fundamentals. Don't skip this.

Coding round 2 (ML-specific). Python, numpy, implementing things from scratch. I had to implement a cosine similarity function and then optimize it for a batch of vectors. Then they asked me to write a simple gradient descent update step. The bar here felt like: can you connect the math to actual code, or do you just call sklearn?

ML design round. The main event. The prompt: design a search ranking model for Slack's search feature. This is open-ended on purpose. I structured it as: problem framing, data sources and signals, feature engineering, model choice, training setup, serving/latency constraints, metrics and evaluation, A/B testing plan. I talked about transformer-based semantic search, BM25 as a baseline, learning-to-rank (LTR) with LambdaMART as a middle path. They asked hard questions about cold start (what happens for a brand new workspace with no usage data) and feedback loops (how do you avoid reinforcing bad results). Spend real time on this round if you can.

Behavioral round. One from the bar raiser program. Asked about a time I shipped something that failed in production, how I dealt with ambiguity on a past project, and one values question about working in a mission-driven environment. They care about communication here, not just technical chops.

The loop felt well-designed for an MLE role. It wasn't just a SWE interview with 'also you like ML right?' stapled on.

Timeline: recruiter screen to offer was 4.5 weeks. Debrief took longer than expected, about a week and a half. I was told this was normal for ML roles because the hiring committee is larger.

Comp for a senior MLE (L5 equivalent): base in the 200-220 range, RSUs on top. I'm SF-based so YMMV. Did not get counter data from other offers so I can't say how much room there was.

5 replies

ux_uma

The cold start question is one I've seen across basically every recsys loop. There's no perfect answer but they want to hear you acknowledge the problem and propose something reasonable: content-based fallback, exploration bias, zero-shot with embeddings. Good to have a go-to framing ready.

returner_ren

Is the ML design round whiteboard-style or did they have a doc you annotated? I always tense up when I don't know the format in advance.

ml_mike

Virtual whiteboard, basically a shared Google doc / drawing tool. I structured it as a written outline that I talked through rather than drawing boxes. They were fine with either approach from what I could tell. I'd ask your recruiter before the round so you can decide how you want to prep.

growth_gabe

Good detail on the LTR vs transformer tradeoff. That's a real design question for any search product: do you need semantic understanding out of the box or is the volume high enough that a well-tuned LTR model gets you most of the way there cheaper and faster.

analyst_ana

Appreciate the comp data point even if rough. SF L5 senior MLE in the 200-220 base range tracks with what I've seen on blind and levels.fyi, so that feels plausible.