Uber | SDE | 6M intern | India [offer]
Summary
I interviewed for an SDE Intern role at Uber in India, which involved an online test, a machine coding round, a problem-solving round focused on dynamic programming, and an HR discussion. I successfully received an offer.
Full Experience
My Uber Internship Interview Experience was an on-campus process that started with an online test on Code-signal. I faced 3 coding problems of medium-hard level within 60 minutes.
The interviews were conducted on Zoom + Code-signal, consisting of 3 rounds.
Round 1: Machine Coding Round (40 minutes)
I was tasked with designing a Multi-Queue management System for a bank using Object-Oriented Programming. The discussion evolved from developing a simple queue management system with multiple counters to providing a solution for priority-based customers and calculating waiting times. My approach involved implementing a class with functionalities like getCounter and getWaitingTime, and I was able to implement all the required features.
Round 2: Problem Solving Round (40 minutes)
This round focused on a Dynamic Programming problem. The problem asked to return the total number of sets S of a given size n within a number range [l, r], where l <= Si <= r, and the sum of elements in S is divisible by 3. Repetition of elements was allowed. I started by defining the DP state and writing a recursive solution, which I then optimized using memoization. I also suggested ideas for further optimization involving case breaking and mathematical approaches, though I couldn't implement the most optimal solution due to time constraints.
Round 3: HR Round
This was a straightforward discussion about my prior experience and projects.
Interview Questions (2)
Design a Multi-Queue management System for a bank using Object Oriented Programming. It started with simple discussion to develop queue mangement system with multiple counter and ended with give the solution for priority based customer and waiting time of each customer in the bank.
Given a range of numbers [l,r]. Return the total number of sets S of a given size n where l <= Si <= r whose sum is divisible by 3. Repetition of elements is allowed in the set.
Preparation Tips
Based on my experience, I have a few suggestions for future candidates. For the machine coding round, it's crucial to be strictly time-bound, focusing on implementing and explaining your solution within 40 minutes. Writing clean and correct code is key, and be prepared to shorten your code for clarity. Explain your approach while coding to manage time effectively, and be ready to adapt your data structure if the interviewer modifies the question. A strong brush-up on DS knowledge and operations is essential.
For problem-solving rounds, remember that time is a strict constraint, and code quality and complexity are judged. If you can't immediately come up with the most optimal algorithm, implement a less optimal solution first; something is better than nothing. While interviewers might offer hints, be aware they often come with a penalty.
Overall, Uber interviews are very time-sensitive, so managing your time is critical. Focus on writing clean, short, and concise code whenever possible.