My Interview Experience at Uber [L5A Offer — Sr. Software Engineer]
Hello everyone,
Since I joined back Uber, multiple people have reached out to know about the interview experience at Uber and how to prepare. I have tried to collate the interview experience in this article. I hope this helps you.
Preparation
For a Software Engineer position at Uber, you should be prepared in the following 2 verticals and I have mentioned some of the resources that I used for my preparation for the L5A (Sr. Software Engineer) position.
Data Structures and Algorithms
- Leetcode Blind 75 Questions : Clear your basic concepts first on the widely used and asked Data Structures and then start practicing different problems. See where you are stuck and which area is difficult for you to solve within a stipulated time window.
- Grind75 by TechInterviewHandbook
System Design and Architecture
- Grokking the System Design Interview : Learn how to design systems at scale by referring to some of the main examples mentioned here like TinyURL, Facebook, Twitter, Uber, etc.
- Refer to some YouTube channels for further preparation like codeKarle, ByteByteGo, TechDummiesNarendraL
- https://github.com/donnemartin/system-design-primer
Interviews
There were a total of 5 rounds in my Interview Process for an L5A role, but the process is similar for an L4 role as well. You should also clarify the entire process once with your recruiting coordinator.
Round 1: Coding BPS (1 hr)
This was an Elimination Round where 1 coding question was asked to me around Leetcode Medium level difficulty. It can focus on core knowledge of DSA along with the basic knowledge of writing good classes, having a modular structure, good naming conventions of your variables and classes, etc.
If you clear this round, the next 4 rounds are going to be scheduled for you irrespective of your performance in the subsequent rounds.
Round 2: Algorithms and Data Structures (1 hr)
This is a core Software Engineering round where the major focus is on Algorithms and Data Structures. The first 5 minutes will be taken in the introductions of the panelists and the candidate, and the last 5 minutes will be reserved for any questions. You will have 50 minutes for the discussion related to coding problems.
I was asked 3 questions in total. 1st question was based on Dynamic Programming with a Leetcode Medium level difficulty, and I was able to provide a working solution in the next 15 minutes, then a follow-up question was asked on that, which was again solved in the next 15 mins. By this time, I had 15 more mins, so the panelist asked 1 more question where the requirement was not to implement the working solution. So, I explained my approach verbally, and then we moved to the section where I asked questions about the team.
Round 3: Depth In Specialization (1 hr)
This is the second coding round but the major focus here is not on Algorithms and Data Structures but how well do you write a production-ready code. Some of the factors that are considered in your code are: creating different classes for different responsibilities following SRP, creating objects of classes and using object-oriented programming to call the respective methods, having good naming conventions for variables and methods, having proper indentations that make the code readable, etc.
I was able to implement different classes and methods, also solve the core problem with the right set of data structures at the same time. The last 10 minutes were again taken for the questions.
Round 4: Design and Architecture (New Problem) (1hr)
The system Design round is an important one for the L5 role where your capabilities as a Sr. Software Engineer are tested. This round generally involves a Greenfield problem statement where you have to clarify the requirements first, estimate the resources needed, lay out a high-level design for the system, and then deep dive into the low-level design including API design and Database design. Once all of this is ready, you should also address the bottlenecks and possible failure points, and propose some solutions to scale out your system to handle high load.
Round 5: Collaboration and Leadership, Design and Architecture (Previously Solved Problem) (1 hr 15 mins)
This round is conducted by a Manager and is a mixture of Behavioural questions as well as a discussion on the Previously Designed systems.
In my interview, for the first 45 minutes, we discussed the projects I have worked on previously, the design decisions I took there, what the learnings were, what could have been done better, and how would you approach the same problem statement now.
Next 30 minutes we discussed how to approach leadership challenges, how to resolve conflicts better, how to better collaborate with peers, and what should be the standard practices to have a good culture in the team.
After these rounds, the recruiting coordinator reached out to me with the interview feedback and the offer details 🎊
I joined Uber on 1st April 2024, and it has been 1 month since I have been working at Uber at the time of writing this interview experience (1st May 2024).
Also, this is not the first time I have been working for Uber, I previously worked at Uber from July 2021 to November 2022. I have been a part of a different team this time, but everyone from the new team as well as the old team has been so welcoming, much much thanks to everyone ❤️
Feel free to connect with me on LinkedIn. Adios 👋
All the very best for your future interview experiences 🤞