Pre-Screening Test
Questions:
- Format: 4 problems, 70 minutes.
- Performance: Solved the first two questions completely (leetcode easy). Skipped the 3rd question and passed ~30% of test cases for the 4th question (leetcode medium).
- Verdict: Passed to the screening round.
Round 1: Screening (DSA)
Questions:
- Problem: Jump Game.
Candidate's Approach
Solved using O(N²) DP and passed the tests. Discussed the possibility of an O(N) solution but didn't write the code.
Interviewer's Feedback
No feedback provided.
Round 2: DSA
Questions:
- Problem: K Closest Points to Origin.
Candidate's Approach
Solved and successfully ran the code within the time limit.
Interviewer's Feedback
Strong Yes.
Round 3: Low-Level Design (LLD)
Questions:
- Problem: Pub-Sub System.
Candidate's Approach
Explained push-based and pull-based models, along with class structures and functionalities. Couldn't run the code but covered all design aspects.
Interviewer's Feedback
Yes.
Round 4: Hiring Manager (HM)
Questions:
- Topics Discussed:
- Past projects.
- Motivation for joining Uber.
- Preferred location and tech stack.
- Favorite language and algorithm.
- Hobbies and other related questions.
Candidate's Approach
No approach provided.
Interviewer's Feedback
Strong Yes.
Bar Raiser Round (HLD)
Questions:
- Problem: Design a WhatsApp Chat System.
Candidate's Approach
Focused on WebSockets and messaging queues.
Interviewer's Feedback
Yes.
Outcome
- Selection: Received confirmation of selection. Offer letter to follow.
Preparation
- Solved 30+ medium Uber-tagged problems in two weeks.
- Prior to that, practiced over 200 problems on LeetCode, mostly medium-level, though I wasn't actively programming for some time.
- Took an extra week to prepare for design rounds.
- Used C++ for DSA, Java for LLD, and watched random YouTube videos for HLD preparation.
- Reviewed key points in my CV before interviews.