cswork / libraryOpen practice workspace

Interview experiences · Uber

Uber Senior+ Machine Learning Engineer Interview Experience — Withdrew After a Possible L5A-to-L4 Downlevel

WithdrewTech screenInterviewed 2026-04

I interviewed for a Sr MLE / MLE role. The whole process was pretty short — in the end, after HR indicated I might get downleveled from L5A to L4, I decided not to move forward, so this is basically a withdrawal report. The first round was mainly a project deep dive. It opened with self-introductions, then the interviewer asked me to walk through a recent representative project. I talked about a…

I interviewed for a Sr MLE / MLE role. The whole process was pretty short — in the end, after HR indicated I might get downleveled from L5A to L4, I decided not to move forward, so this is basically a withdrawal report.

The first round was mainly a project deep dive. It opened with self-introductions, then the interviewer asked me to walk through a recent representative project. I talked about a GenAI/agent-related project — business background, system design, model/data pipeline, evaluation, and the tradeoffs after launch. After hearing it, the interviewer said it might not be a great match for their team's direction, because this team's opening is more pricing / marketplace / growth modeling. I felt a bit awkward at that point, because plenty of teams these days are also doing agent or LLM-related work, but they probably wanted to hear about pricing, causal inference, ranking, forecasting, experimentation/metrics — more business-facing ML projects.

The coding question didn't come with a LeetCode number. Roughly:

You're given a black-box convex function F(x) — you can only get the function value at a point by calling F(x). The input is the function F and a search interval [a, b]; the task is to find the x that minimizes F(x) (or the minimum value) within that interval. You can assume F is convex/unimodal over the interval.

I used ternary search. Each round:

m1 = left + (right - left) / 3
m2 = right - (right - left) / 3

compare F(m1) and F(m2):
  if F(m1) < F(m2): the minimum is on the left or in the middle, right = m2
  else: the minimum is on the right or in the middle, left = m1

loop for a fixed number of iterations, or until the interval is small enough,
then return (left + right) / 2 as the approximate argmin, and call F(x) to get the minimum value.

Complexity:
Time: O(k), where k is the number of iterations; if written in terms of precision epsilon, it's O(log((b-a)/epsilon))
Space: O(1)

The interviewer didn't push hard on optimizing it, since a black-box function has no gradient and you can't differentiate it directly, so ternary search is the natural approach. Extra points worth discussing: for a discrete integer domain you need to be careful about the termination condition and brute-force check the remaining small interval at the end; for a continuous domain, you control precision with epsilon or a fixed number of iterations.

Overall impression:

This round didn't feel like pure LeetCode grinding — it was more like they check project fit first, then give you an optimization/numerical-search style algorithm question. My takeaway: if you're interviewing with a pricing team, it's probably better to prepare a project deep-dive story that's closer to pricing / prediction / experimentation / business metric optimization, rather than framing everything purely from a GenAI/agent angle.

Comments

Nothing here yet.

Join in on CSWork →