Uber | Senior Software Engineer | Bangalore | March 2025
Summary
I interviewed for a Senior Software Engineer role at Uber in Bangalore and was rejected due to issues in the managerial and low-level design rounds. The process included an online assessment, two coding rounds, a managerial interview, high-level design, and low-level design.
Full Experience
I am currently working as a Senior Software Engineer in a fintech company with a total of 5.5 years of experience. Below is my interview experience with Uber.
Round 1: Online Assessment (OA) on Codility
This round was an online assessment conducted on Codility. I don't remember the exact questions, but they were related to arrays, hashmaps, and OOPS concepts.
Round 2: Pre-Screening
-
Coding Question
Problem: Sort an array by comparing the squares of each number.
Solution: I implemented a brute-force solution first and then optimized it using a two-pointer approach.
-
Follow-up Problem: Extend the solution to find the kth largest element.
Discussion: We discussed code cleanup, modularity, and removing the auxiliary array for the second question.
Round 3: Coding
Problem:
Given an n-ary tree (each edge is a directed edge from parent to children) with each node as a character, find the length of the longest two paths from top to bottom such that no two consecutive characters are the same.
Follow-up:
Problem: The edges in the n-ary tree are now undirected, and the path can be in any direction. Find the longest path.
Solution:
I was able to solve the question, although it took some time due to the complexity of the n-ary tree. I used a DFS approach combined with sorting to find the top 2 longest valid children for each node. I returned the current character + the max child string during each recursion while keeping track of the global answer variable to compare with the longest path (including a second max length child, if it existed). The logic was similar to the "max path sum in a binary search tree" problem.
Round 4: Managerial Interview
I was asked to draw and explain the components of my previous project and justify any non-functional requirements with my design.
Below questions were asked to judge my past expeirnece.
- Discussed cross-team collaboration. Provide examples of working with different teams on various aspects of the project.
- Explain a situation where I had a conflict with a colleague and how I resolved it.
- Share an example where I took on a leadership role to ensure a project met deadlines and objectives. How did you organize the work, and what challenges did you overcome?
- Share an example of an unrelated project I took over to ensure it met standards and deadlines. How did you achieve that, how did you track success etc.
Round 5: High-Level Design (HLD)
Problem: Design a system to notify users if a stock price changes by x% compared to its last closing price. The stock exchange is providing the following information:
- Stock name
- Current price
- Previous closing price
Round 6: Low-Level Design (LLD)
Problem: Write code to create a publisher-consumer model where multiple producers publish messages to a queue, and multiple consumers can consume messages from the queue. System can have multiple such queues.
Solution: I created all required entities and had PublisherQueueSubscription and ConsumerQueueSubscription stored as a HashMap/List in a subscription repository. My design followed a synchronous approach where the message was deleted from the queue once all consumers received it by getting he front message. I also proposed an asynchronous solution, where each consumer would have its own local queue to poll messages (similar to how Amazon SQS/SNS works).
Verdict: Rejected
Reason:
- Managerial Round: I was told that I could not provide more complex answers.
- LLD Round: I overcomplicated my solution and was not able to write running code at the end due to some syntax issues.
The recruiter encouraged me to apply again in a few months.
Interview Questions (11)
Problem: Sort an array by comparing the squares of each number.
Problem: Extend the solution to find the kth largest element. Discussion: We discussed code cleanup, modularity, and removing the auxiliary array for the second question.
Given an n-ary tree (each edge is a directed edge from parent to children) with each node as a character, find the length of the longest two paths from top to bottom such that no two consecutive characters are the same.
Problem: The edges in the n-ary tree are now undirected, and the path can be in any direction. Find the longest path.
I was asked to draw and explain the components of my previous project and justify any non-functional requirements with my design.
Discussed cross-team collaboration. Provide examples of working with different teams on various aspects of the project.
Explain a situation where I had a conflict with a colleague and how I resolved it.
Share an example where I took on a leadership role to ensure a project met deadlines and objectives. How did you organize the work, and what challenges did you overcome?
Share an example of an unrelated project I took over to ensure it met standards and deadlines. How did you achieve that, how did you track success etc.
Problem: Design a system to notify users if a stock price changes by x% compared to its last closing price. The stock exchange is providing the following information:
- Stock name
- Current price
- Previous closing price
Problem: Write code to create a publisher-consumer model where multiple producers publish messages to a queue, and multiple consumers can consume messages from the queue. System can have multiple such queues.