← Back to Directory

Uber interview notes, page 32 of 61

Large Enterprises

Most of these Uber write-ups come from Software Engineers (407), then Data Scientists (78) and Machine Learning Engineers (65). The most reported rounds are the technical phone screen (387), the system design round (95), the product sense round (46) and the onsite coding round (23).

609 interview notes · updated Aug 2026

Uber·Machine Learning Engineer·Onsite - System Design / Architecture

May 2026
Did a system design round at Uber for an MLE role, focused entirely on building a recommendation system for a food delivery app. Pretty deep dive, they really wanted to see how you'd handle scale and latency constraints together, not just one or the other.
  • Design a personalized recommendation system for a food delivery platform, covering homepage ranking of nearby restaurants and dishes.
  • How would you incorporate real-time signals like recent searches, current cart contents, weather, and time of day into your recommendations?
  • How do you handle cold-start for both new users and newly onboarded restaurants?
  • Walk me through how you'd set up A/B testing infrastructure and define guardrail metrics for this recommendation system.
  • What feedback loops and biases should you watch out for in a recommendation system like this, and how would you mitigate them?
  • How would you ensure the system meets a sub-200ms p99 latency requirement at the scale of hundreds of millions of users?

“This is the kind of question where you can go in ten different directions and none of them feel wrong, which is actually worse than having one clear path.”

View Post

Uber·Software Engineer·Technical Phone Screen

May 2026
Uber SWE interview that went deep on a data structure design problem and then pivoted into concurrency pretty fast. The coding part felt manageable but the follow-up on thread safety is where things got interesting.
  • Design a FirstUnique class that supports two operations: one that returns the first unique value seen in a stream (or -1 if there isn't one), and one that appends a new value to the stream.
  • How would you make this class thread-safe if multiple threads are calling add() and showFirstUnique() concurrently? Walk through your locking options and the trade-offs.

“I went with a HashMap for counts and a LinkedHashSet to track insertion-ordered uniques.”

View Post

Uber·Software Engineer·Technical Phone Screen

May 2026
Interviewed for a software engineering role at Uber, got a BST problem that seemed straightforward until the follow-up hit. The follow-up is where things got interesting and honestly where I felt underprepared.
  • Given the root of a binary search tree and an integer k, return the k-th smallest value in the tree (1-indexed).

“In-order traversal, pretty textbook.”

View Post

Uber·Software Engineer·Onsite - System Design / Architecture

May 2026
Uber system design round for a software engineering role. The whole session was basically one big distributed systems problem about scheduling data at scale. Pretty intense if you haven't touched MapReduce in a while.
  • Design a MapReduce pipeline that takes large-scale user scheduling data (busy time intervals) and computes common free time slots of at least a given duration d for a specified group of users. Walk through the map outputs, partitioning strategy, reduce logic, time discretization, handling data skew, and how you'd validate correctness at scale.

“This was a lot to hold in your head at once.”

View Post

Uber·Machine Learning Engineer·Technical Phone Screen

May 2026
Uber ML engineer interview with a backtracking problem. Pretty standard coding round, nothing too exotic, but the deduplication logic is the part that trips people up if you haven't seen it before.
  • Given a list of integers that may contain duplicates, return all unique permutations.

“The core trick is sorting first and then skipping a number at the current recursion level if it's identical to the previous one and that previous one wasn't used.”

View Post

Uber·Data Scientist·Technical Phone Screen

May 2026
Uber data scientist interview that was essentially a statistics gauntlet disguised as a single question. The problem packed in about six different concepts at once and I was not fully prepared for how deep they wanted me to go on each layer.
  • Walk through the full sample size calculation for a two-arm signup A/B test: baseline conversion 6%, relative uplift target of 5%, two-sided alpha 0.05, 80% power, unequal traffic split of 2:1 control to treatment, 15% bot sessions removed after the fact, clustered sessions with mean 1.4 sessions per user and ICC of 0.03, and 8% attrition from data quality filters. Include the design effect for clustering, attrition adjustment, allocation ratio correction, and convert to days given 120k sessions per day. Also explain what breaks if variance is mis-specified or if someone peeks at results mid-test.

“This question wrecked me a little.”

View Post

Uber·Software Engineer·Technical Phone Screen

May 2026
Uber SWE interview with a graph/clustering problem that looks deceptively simple until you realize it's just connected components. Clean problem, well-defined, nothing too tricky about the setup.
  • You have n balls on a 2D plane, each with coordinates. Two balls attract each other if their Euclidean distance is strictly less than a threshold d. Attraction is transitive, so connected balls form a cluster. Each time step you pick one unabsorbed ball and absorb its entire connected cluster. What is the minimum number of time steps to absorb all balls?

“Took me a beat to see past the physics flavor of the problem.”

View Post

Uber·Software Engineer·Technical Phone Screen

May 2026
Uber SWE interview that threw a spatial data structures problem at me, specifically building a point quadtree from scratch with range queries. Not your typical LeetCode grind session, this one required actually understanding how the data structure works under the hood, including some tricky edge cases around coincident points and boundary semantics.
  • Design and implement a point quadtree for storing 2D geographic coordinates that supports efficient rectangular range queries, including insert and query operations with correct handling of edge cases like duplicate coordinates and boundary points.

“I knew what a quadtree was in theory but had never actually coded one.”

View Post

Uber·Data Scientist·Technical Phone Screen

May 2026
Uber DS interview, heavy on SQL and stats. Three questions, all technical, no fluff. The kind of session where you're writing window functions and explaining CUPED variance reduction back to back and hoping your brain doesn't stall out.
  • For a specific experiment, write a SQL query that computes a 7-day rolling median of shown ETA and the daily request-to-completion conversion rate per city, across a date range. You need to generate a full date spine so days with zero requests still appear, restrict to riders who signed up before a cutoff date, and handle time zones by truncating timestamps at UTC midnight.
  • Write a SQL query to estimate a difference-in-differences conversion uplift at the city level, comparing treated vs control riders across a pre-period and a post-period. Riders can appear in both treatment and control across different trips, so the exposure label should be at the trip level, not the rider level.
  • In Python pseudocode, implement CUPED-adjusted conversion at the rider level using pre-period conversion as the covariate. Estimate theta as cov(Y, X) / var(X), compute the adjusted outcome, then estimate the treatment vs control uplift with cluster-robust standard errors at the rider or city level.

“The date spine part is what got me.”

View Post

Uber·Software Engineer·Technical Phone Screen

May 2026
One round at Uber for a software engineering role, basically just a single coding problem but they pushed hard on it. They wanted the full progression from brute force up to linear time, plus test cases, so it wasn't just 'write the solution and move on.'
  • Given a linked list where each node has a next pointer and a random pointer that can point to any node in the list (or null), write a deep copy of the list. Walk through a brute force approach, then optimize it, targeting O(n) time. Include test cases.

“They wanted the whole journey, not just the optimal answer.”

View Post