Uber SE 2 | Selected
Summary
I successfully navigated multiple rounds of interviews at Uber for an SE 2 role, culminating in an offer. The process included an Online Assessment, DSA-focused screening and technical rounds, a System Design round, a Hiring Manager discussion, and an additional DSA round.
Full Experience
Online Assessment
With 2.5+ years of experience as an SDE2, I applied to Uber through an employee referral and received an online assessment link within 3-4 days. The assessment consisted of 4 DSA-based questions. I fully solved the first two, achieved 15/20 test cases for the third, and for the fourth, I only had time for a brute-force approach, passing 6/20 test cases. The total time allotted was 70 minutes, and the difficulty level of the questions increased progressively. Although I'm unsure about the exact cutoff, I received a call from the recruiter shortly after to schedule a DSA-based screening round.
Screening Round
This was a DSA-based round, featuring a medium to hard difficulty question. It was similar to the LeetCode problem Longest Continuous Subarray With Absolute Diff Less Than or Equal To Limit. I began by articulating a brute-force approach and then iteratively refined it to an O(N log N) solution using a priority queue. I successfully wrote working code for this optimized approach. Three to four days later, the recruiter informed me that I had cleared the screening round and my four-round interview loop would be scheduled. I believe my iterative refinement of the solution and clear communication, moving from brute-force to optimization, were key to my success in this round.
Round 1: DSA
This round was another DSA-based one, with a medium to hard difficulty problem. It was similar to the HackerRank challenge Haunted House. Initially, I struggled to fully grasp the problem statement. However, with the interviewer's guidance and a few hints, I was able to formulate a brute-force solution and quickly coded it. Unfortunately, I couldn't optimize the solution further, despite discussing several data structures with the interviewer. I felt this round didn't go well and wasn't optimistic about advancing, but I maintained a positive attitude and continued with the process.
Round 2: DSA (Originally LLD)
I was informed that this round would be focused on LLD (Domain Specialization), but it turned out to be another hard-difficulty DSA problem, similar to the LeetCode question Bus Routes. I discussed a couple of graph-based approaches with the interviewer, who appeared satisfied with my overall strategy, though he had a few clarifying questions. I proceeded to code a working solution on my first attempt. We then discussed various aspects of the code, including edge cases and time complexity. Overall, I felt this round went quite well. My focus areas included clear approach communication, writing clean and working code, handling edge cases, and demonstrating a strong understanding of time and space complexity.
Round 3: System Design
In this system design round, I was tasked with designing a single central authentication system to grant access to multiple portals. As an extension, the interviewer asked me to incorporate an OTP (One-Time Password) mechanism. I was able to construct a robust system diagram, addressing scalability, database choices, DB schema, APIs and their schemas, and failure scenarios. I initially overlooked some failure scenarios but managed to discuss them at a high level due to time constraints. While not perfect, the round went well. The interviewer was particularly pleased with my system diagram, choice of databases, and database schema.
Round 4: Hiring Manager
This was the Hiring Manager round, which primarily involved 3-4 situation-based behavioral questions. Examples included how I would handle conflict with a peer or deliver a project under a tight deadline. For each question, I structured my answers using the STAR method, detailing my projects and actions. The interviewer also interjected with a few technical questions related to my past projects. Overall, this round went very well, and clear communication was essential.
Additional Round
Approximately two weeks later, the recruiter contacted me, stating that they needed more clarity on a DSA round and asked if I was open to an additional interview. This additional round took 2-3 weeks to schedule. It was a medium-difficulty DSA round. Initially, I approached the problem as a graph-based one, proposing a brute-force Dijkstra's algorithm. The interviewer prompted me to optimize. After asking a few clarification questions, I realized the problem could be rephrased as an N-ary tree problem, similar to finding the maximum path sum in a tree. I coded a clean solution, requiring only one or two minor fixes for correct output. As an extension, the interviewer asked me to compute the distance between two nodes in that tree. I quickly implemented a clean BFS-based solution, which worked correctly on the first attempt. The interviewer seemed satisfied with both solutions.
About a week later, I received a call from the recruiter informing me that I had cleared all rounds, and I received the official offer letter on the same day.
Interview Questions (6)
Design a single central authentication system that grants access to multiple portals. As an extension, integrate an OTP (One-Time Password) mechanism into the system.
Initially presented as a graph problem, I identified it could be simplified to finding the maximum path sum in an N-ary tree. I implemented a clean solution for this.
As an extension to the previous N-ary tree problem, I was asked to compute the distance between any two nodes in that tree.
Preparation Tips
For DSA rounds, I would strongly advise practicing medium and hard-level questions previously asked by Uber. This targeted practice, along with a general focus on data structures and algorithms, proved very helpful for my preparation.