I applied to the job through their career website. The interview process had the following rounds:
1. Recruiter call (30 minutes/Online): We discussed my qualifications and fit for the company. This was a standard recruiter call.
2. Live coding with hiring manager (60 minutes/Online): After a brief introduction, I solved a Leetcode 200 (Number of islands) variant. Passing this round led to an onsite interview.
3. Design & Architecture, New Problem (60 minutes/Onsite): I designed a chat system, as same as in Alex Xu's "System Design Interview – An insider's guide." We discussed how to scale it to Uber's scale.
4. Data Structures (60 minutes/Onsite): I solved a Leetcode 692 (top k frequent words) variant and discussed alternative solutions and their advantages/disadvantages.
5. Collaboration & Leadership, Design & Architecture - Previously Solved Problem Interview (75 minutes/Onsite): We conducted a behavioral interview and I presented a previously designed system architecture by me. The interviewer asked about the architecture, my involvement, potential failures, and decision-making steps.
6. Depth in specialization (60 minutes/Onsite): I solved a Leetcode 791 (custom sort string) variant and discussed production implementation and backend service architecture.
Unfortunately, I was rejected after completing all rounds. The feedback call revealed that I struggled to scale the design to Uber's scale in the third interview and missed how to implement my solution in production in the final interview.
I found three issues with the interview process:
Discrimination: Everyone except the recruiter seemed to look down on me due to my lack of experience at a big company, which was demoralizing.
Excessive coding rounds: Solving three Leetcode questions seemed excessive.
Same-day interviews without advancement: Completing all interviews on the same day, even after being rejected in the third round, was a waste of time.
Overall, I felt that this process lacked identity and was designed to hire only from other FAANG companies.