I applied for a Software Engineer II position at Uber in in April. I received an email from a recruiter in May. Here is the interview process:
I received a link for a Code Signal assessment with three problems. One was easy, two were easy-medium. I solved the first two completely and wrote a brute force solution for the third problem, which resulted in a 50% score. I later realized that the third problem wasn't difficult and just required a clever observation.
This was a one-hour phone screen round. The problem was: "Given a number N, find the smallest palindrome that is greater than N."
I provided some solutions, like taking the current number, reversing half of the digits, and ensuring it's greater than N. I mentioned that there are several cases to handle. I coded a solution that would work for about 70% of the test cases, and the interviewer said it was okay to solve for certain cases.
I coded the solution, ran it on some inputs they asked, and it ran successfully.
This was another DSA round. It was a medium problem, and I was able to provide a solution in time.
Uber calls this round "Depth in Specialization." It's basically a DSA round, but the solution has to be written using OOP and the code should be modular. I use Java in my regular work but use C++ for DSA. This was another medium DSA problem. I coded in Java to use OOP features but had to use some Map<pair<int,int>, double>. Since I haven't used many data structures in Java, the interviewer told me to use Google. I coded the solution but ran into some compilation errors, and time was up. The interviewer said he was okay with the solution, but we couldn't run it.
This is basically a high-level design round. Problem Statement: "We are getting data of a user watching a movie every 1 minute. We have to build a dashboard that shows the top 10 movies/series each 1 hour. A user can watch movies that are longer than 1 hour."
Solution 1 I gave: store this data into Kafka -> from Kafka do some aggregation on {user, set<movies>} and then do some count} -> dashboard service. They asked a few more questions about whether we could do better and what if we need to calculate the top movies for a day or 1 week. So I gave a different solution. Solution 2: Kafka -> write data to an hourly partition s3://.../date=acutal-date/hour=actual-hr/ -> run a batch job every 1 hour and do the aggregation. Now we can calculate the top movies for any number of hours (1, 24, 24*7 hr) etc.
During this interview, I felt the interviewer wasn't very satisfied. My explanation wasn't very good, as I didn't prepare for the design round.
This was a managerial round. After the introduction, they asked me about my current project architecture, which took about 30 minutes. Some questions were about how I handle conflicts, how I estimate tasks, and some more behavioral questions. I felt this round went very well. The hiring manager seemed happy with my current project architecture and answers.
Verdict: After a week, I received a thank you email from the recruiter. They didn't share any feedback.