Uber Interview Experience(Software Engineer II) - 6 Rounds
Summary
I went through Uber's interview process for a Software Engineer II role and was ultimately rejected, receiving a Strong Hire for most rounds but a No Hire for the HLD round.
Full Experience
I recently went through the Uber Interview process and sadly was not able to secure an offer. Sharing my experience to the community so it can help others prepare better as it helped me too.
1. Online Assessment
- 2 DSA Questions (Not Remember the questions exactly)
- One was based on Graph and can be solved by DSU efficiently, one was String operations related
- Difficulty Medium Hard
2. BPS Round (Business Phone Screen)
This round only involves one Graph related question (medium - hard)
You have given number of allowed itineraries and you need to design an algorithm that takes a list of allowed itineraries as input and identify the itinerary with the most visited unique cities
Input:
Chennai -> Hyderabad
Hyderabad -> Bangalore
Bangalore -> Delhi
Hyderabad -> Delhi
Expected Output: Chennai->Hyderabad->Bangalore->Delhi
You need to print the longest route from starting point to end.
Key Idea
If you run the dfs from every node and comparing which node will give us the longest path then it will be O(N^2) as dfs complexity O(n) and run for each node O(n).
And as you noticed already there will be overlapping subproblems, so to save extra time complexity you need to save the length for each node in some array or table and just return from there if you reach that node.
In that way you don't need to visit the particular node once again. Interviewer was good with this approach and implemented the solution.
Discussion around Space and time complexity happened. In the end, you need to think of various test cases which your code is covering and in my case, I didn't think of if there is any cycle in the itinerary, but interviewer was also not expecting this test case. So it was a Strong Hire.
Coding Round
Earliest Full Connectivity Timestamp
We have a log of Uber rides when passengers shared their rides together through Uber Share. The log string is sorted chronologically.
Example Log:
167001 Alice shared-ride-with Bob
167003 Charlie shared-ride-with Dan
167008 Bob shared-ride-with Charlie
167010 Alice shared-ride-with Eve
167020 Bob shared-ride-with Dan
Given this log set and list of all possible riders write a function that returns the earliest timestamp when all riders become connected through car shared network. Riders are connected, if they shared a ride.
Key Idea
Problem started with BFS approach and it'll be again quadratic complexity. So implemented the DSU approach here. You need to implement the code from scratch input parsing and graph everything. (Originally timestamp was of 12 digits)
Discussion around space and time complexity happened. and then Follow up question popped.
Follow Up
Riders can also block each other. Log can include blocking event which can break a connection. How would you update your solution to handle these events and find earliest timestamp.
I gave approach with DSU while computing the graph but I missed few cases and in the end I couldn't think much due to time shortage so I explained the BFS approach.
Feedback was HIRE.
LLD Round
Design the key value store which can perform the following operations with constant time complexity
- V get(K)
- (K,V) getRandom()
- void put(K,V)
- V delete(K)
This was the standard problem and as I'm doing coding in C++. I quickly code it from scratch and cover all the cases and run on different test cases.
In the end, Interviewer asked me to implement the template class type instead of just int-int pair types and I completed the coding and also executed the cases.
Overall Feedback was Strong Hire
HLD Round
Before scheduling HLD round, I didn't get any response for my previous round until 10 days and then I send the follow up email and then they scheduled the next interview.
Little Background: Currently I'm in Security & networking company, coding in C++. So HLD was not my strong suite, so I tried to prepare well for this.
HLD Round is most important of all of them (Bar Raiser Round)
Design Stock Broker Notification Framework:
External Source will send us the data in form
{ Stock Symbol, Price, Closing Price }
A set of users registered on your service who are subscribed to set of stocks. You need to design a system with requirement that if any stock price jumps or drops 5% as compared to closing price, send a push notifications to all the users
I started designing and used the Kafka for event ingestion, and used Postgres DB for storing users with stocks subscriptions.
There was a flaw in my design as I was hitting the DB everytime, interviewer tried to correct me and after 1-2 hints, I was able to design it. In the end, separated the threshold calculating service and send filtered out events to other service for DB Lookup for the Users for that particular stock.
In the end, there were questions around DB choice, I used the postgres as 50k QPS can be handled via sharding done by stock symbols but system can be write heavy occasionally, so I told them we can use Cassandra as well but it may suffer consistency.
Discussion around At Most Once notification, Dead Letter Queue, Idempotency key.
In the end, I was a little dicey about the feedback as I have taken few hints and missed few cases.
HM Round
Behavioural Round
- Discussion around most interesting or crucial project done till now
- Have you work across multiple teams? Team Collaboration
- How you handled the feedback received from seniors?
Questions asked around Experience
Interviewer didn't ask standard questions may be they're tired to hear just standard answers for all of them
Preparation Tips
- Strong Grip on DSA (especially Graph, DP)
- Practice real world design questions
- Be structured in LLD and HLD problems
- Prepare behavioural questions thoroughly (Don't write this off, because I saw many candidates rejected in HM round as well)
- Focus on Communication and Tradeoffs
- For HLD I used HelloInterview youtube channel + TechGranth
- For LLD, I used CoderArmy + TechGranth
Verdict : Rejected
I was a little dicey about my HLD round and I got to know that it was No Hire for HLD round and I got Strong Hire + Hire for all the other rounds including HM as well. Recruiter told me I can re-appear after 6 months.
Complete process took around 2 months due to some holidays and availability issue.
Didn't make it this time, but every interview adds experience, clarity, and resilience. Taking the learnings forward and continuing the grind.
The goal remains the same.
Hope this helps. Happy to answer questions.
Also please suggest me some good resources for HLD
Interview Questions (5)
Longest Itinerary Route
Given a list of allowed itineraries represented as directed edges between cities, find the itinerary (path) that visits the most unique cities. The path should start from a starting city and end at a destination city, and you must output the longest route.
Example Input:
Chennai -> Hyderabad
Hyderabad -> Bangalore
Bangalore -> Delhi
Hyderabad -> Delhi
Expected Output: Chennai->Hyderabad->Bangalore->Delhi
Earliest Full Connectivity Timestamp
We have a chronologically sorted log of shared‑ride events. Each line contains a timestamp and two riders who shared a ride. Riders become connected if there is a chain of shared rides between them. Return the earliest timestamp when all riders are connected in a single component.
Example Log:
167001 Alice shared-ride-with Bob
167003 Charlie shared-ride-with Dan
167008 Bob shared-ride-with Charlie
167010 Alice shared-ride-with Eve
167020 Bob shared-ride-with Dan
Handling Block Events in Ride Sharing Connectivity
Extending the previous problem, the log may also contain blocking events where a rider blocks another rider, breaking the existing connection. Update the solution to handle these events and still determine the earliest timestamp when all riders become fully connected.
Constant Time Key‑Value Store Design
Design a key‑value store that supports the following operations in O(1) time:
- V get(K)
- (K,V) getRandom()
- void put(K,V)
- V delete(K)
Stock Broker Notification Framework
Design a system that receives real‑time stock price updates ({Stock Symbol, Price, Closing Price}) and notifies subscribed users when the price moves up or down by more than 5% compared to the closing price.
Preparation Tips
- Strong grip on DSA (especially Graph, DP)
- Practice real‑world design questions
- Be structured in LLD and HLD problems
- Prepare behavioural questions thoroughly (don't write this off, because I saw many candidates rejected in HM round as well)
- Focus on communication and tradeoffs
- For HLD I used HelloInterview YouTube channel + TechGranth
- For LLD I used CoderArmy + TechGranth