Uber SDE-2 Interview Experience || L4 || Bangalore
Summary
I successfully interviewed for the Uber SDE-2 position in Bangalore, which involved 5 rounds including a coding elimination, DSA, Low-Level Design, High-Level Design, and a Managerial discussion, ultimately leading to an offer.
Full Experience
I went through a comprehensive interview process for the SDE-2 (L4) role at Uber in Bangalore, initiated through a referral. With 3 years of experience as an SDE-1, I faced a total of 5 challenging rounds.
📌 Round 0 – Elimination Coding Round
This round featured a problem statement: Given an array of integers nums and an integer limit, return the size of the longest non-empty subarray such that the absolute difference between any two elements of this subarray is ≤ limit. This was similar to LeetCode 1438 and framed in a driver-cab domain context. I explained four distinct approaches step by step:
- Brute force (4 loops) to generate all subarrays and check conditions.
- An improved brute force (3 loops) to avoid redundant calculations.
- Further optimization (2 loops) by tracking min/max with sliding windows.
- The optimal solution (Deque + Sliding Window, O(n)) using two deques to maintain min/max.
The interviewer was very particular about base cases and required me to explain the time and space complexity for each approach. I successfully cleared this round.
📌 Round 1 – DSA + DSU Problem
I was given logs in the format UserA-Shared-UserB-timestamp, indicating that UserA and UserB shared a cab. The problem had two versions:
- For each log, return how many cabs are currently running.
- For a given set of logs, return the timestamp when all users get into one cab.
I initially started discussing DFS/BFS for connected components, but then shifted to a more optimal Disjoint Set Union (DSU) approach for handling the problem. I implemented DSU from scratch, explaining path compression and union by rank/size, and also detailed the time and space complexity for my solution. This round was also successful.
📌 Round 2 – Low-Level Design (LLD)
The problem statement was to design a Train-Platform Management System with functionalities to: assign trains to platforms based on input, query which train is at a given platform at a specific time, and query which platform a train is at for a specific time. I was expected to write runnable code in Java, explain design patterns, and walkthrough every step while coding. I designed core classes such as Train, Platform, Scheduler, and Schedule Manager. I coded using a minHeap strategy and then explained a random assigning strategy, focusing on writing extensible code. My primary focus was on implementing time-based queries and accurately mapping train schedules. The interviewer continuously cross-questioned my design choices and pushed me to deliver a clean design with working code within the 60–75 minute timeframe.
📌 Round 3 – High-Level Design (HLD)
This round involved designing the Uber Eats Homepage. I focused on several key areas:
- Location-based search, using concepts like GeoHashing and GeoIndexing.
- Designing APIs for the homepage and search results.
- Schema design for Restaurants, Dishes, and Orders.
- Choosing between SQL and NoSQL databases and justifying my choice.
- Implementing caching strategies for performance.
I also discussed how to capture metrics such as the most ordered restaurant, most ordered dish, and orders per restaurant. I utilized HackerRank’s design whiteboard/drawing tool to illustrate my architectural design. The interviewer was very friendly, listened attentively, and supported my approaches while also providing constructive feedback on my explanations.
📌 Round 4 – Managerial + Behavioural
This round was a discussion centered around my past work experience. We covered topics such as the good coding practices I followed, my specific roles in previous projects, and the ownership and impact of the work I delivered. Towards the end, the manager gave me approximately 15 minutes to ask questions about the team, the role, and available growth opportunities at Uber.
✅ Outcome
I am delighted to share that I finally received an offer for the Uber SDE-2 position in Bangalore! 🎉
Interview Questions (5)
We were given logs in the format UserA-Shared-UserB-timestamp, meaning UserA and UserB share a cab. Version 1: For each log, return how many cabs are currently running. Version 2: For a given set of logs, return the timestamp when all users get into one cab.
Design a Train-Platform Management System with functionalities to:
- Assign trains to platforms based on input.
- Query which train is at a given platform at a specific time.
- Query which platform a train is at, at a specific time.
Design the Uber Eats Homepage. Focus areas included:
- Location-based search (GeoHashing & GeoIndexing).
- API design for homepage and search results.
- Schema design for Restaurants, Dishes, Orders.
- Choice of database (SQL vs NoSQL) and justification.
- Use of caching for performance.
This round involved a discussion around my past work experience. Topics included good coding practices I followed, my specific role in previous projects, and the ownership and impact of my delivered work. I was also given about 15 minutes to ask questions about the team, the role, and growth opportunities.