Uber India L5 (SSE) Interview experience
Summary
I successfully navigated a multi-round interview process at Uber India for an L5 Staff Software Engineer role, which spanned approximately two months, ultimately resulting in an offer.
Full Experience
My interview journey for the Staff Software Engineer L5 position at Uber India consisted of five comprehensive rounds, stretching over roughly two months.
Round 1: Data Structures & Algorithms
This round focused on a complex DSA problem involving a binary tree. The problem description itself was quite detailed and involved player interactions and point calculations based on node visitation order and timing.
Round 2: Data Structures & Algorithms
The second DSA round presented a problem where I had to process a 2D location map and a query array. The goal was to identify robots that could satisfy specific movement conditions based on distances to blockers, including map boundaries.
Round 3: High-Level Design
In this round, the discussion revolved around designing a system for real-time aggregated metrics for Uber Eats restaurants. The key requirements were to calculate total order values and top K food items over various time intervals, emphasizing real-time updates.
Round 4: Low-Level Design
This round required me to implement a meeting room booking system with fixed room numbers and varying sizes. I needed to handle booking availability, maintain history, and abstract different scheduling implementations, with the expectation of delivering fully working code within an hour.
Round 5: Hiring Manager Round
The final round was with the Hiring Manager. It began with standard behavioral questions. Following that, I was asked to deep-dive into the complete architecture of the most complex system I had built previously. The manager posed numerous follow-up questions concerning design trade-offs, challenges, learnings, and my technology stack choices during my explanation.
Interview Questions (5)
There is a binary tree with each node having value and also reference to parent pointer. A starts from root Node and B starts from some leaf node. Calculate the maximum points A can collect if A moves downward and B moves up with below condition:
- If node is visited by B first, A gets 0 and vice versa
- If both visits at the same time, both gets half value
Given two inputs:
First input is the location map, a 2D array:
| O | E | E | E | X |
| E | O | X | X | X |
| E | E | E | E | E |
| X | E | O | E | E |
| X | E | X | E | X |
O = Robot, E = Empty, X = blocker
Second input is the query array. It’s a 1D array consisting of distance to the closest blocker in the order from left, top, bottom and right:
[2, 2, 4, 1]
This means distance of 2 to the left blocker, 2 to the top blocker, 4 to the bottom blocker and 1 to the right blocker.
Note: The location map boundary is also considered a blocker, meaning if the robot hits the boundary it also means it’s hitting the blocker.
Return the coordinates of all robots who can satisfy the move given by the second input.
Consider food orders placed from different restaurants via the Uber Eats app. Restaurant owners want to view aggregated metrics related to their orders in real-time:
- Total value of all orders placed in their restaurant for various time intervals - last 1 hour, 1 day, 1 week
- List of top k food items that were ordered from their restaurant for various time intervals - last 1 hour, 1 day, 1 week
Metrics should be real-time as much as possible.
There are a fixed number of meeting rooms with various sizes. Given a start time and end time, I needed to book an available meeting room. I also had to maintain past booking history of meeting rooms. The interviewer expected me to abstract different types of implementations for meeting room scheduling. Fully working code was expected within 1 hour.
The interviewer asked me to explain the complete architecture of the most complex system I had built in my past. This was followed by many follow-up questions during my explanation, covering design trade-offs, challenges faced, learnings, and choices of tech stack.