Round 1: 20 min LP, 40 min coding (DS)
- LC Medium (priority_queue + custom comparator). Solved perfectly.
- LC Medium (hashMap + set + custom comparator). Solved perfectly.
Round 2: 20 min LP, 40 min coding (Problem-solving)
- LC Hard (dynamic disjoint set with path compression + graph traversal). Solved perfectly.
- LC Medium (two-pointers or hashMap). Famous array problem. Immediately gave O(N^3) solution (NOT brute force), but I could not come up with a follow-up O(N^2) solution as we had only a few mins left.
Round 3: 30 min LP, 30 min coding (LLD)
- Medium (polymorphism + inheritance + pure virtual function). Solved perfectly.
Round 4: 60 min LP (bar-raiser)
- All LPs, and grilling follow ups on both technical & behavioral aspects of each answer. Felt like it went quite well!
Round 5: 40 min LP, 30 min system design (HLD)
- Medium from Grkkking the system design course. Solved perfectly.
Offer: Received offer in 48 hours. (May 24, 2022)
My Preparation (3 months):
- Textbook: Algorithms by Dasgupta. (1 month)
- Leetcode: 158 easy + 196 medium + 24 hard = 378 problems. (3 months)
- Completed amazon interview card + all explore cards in leetcode. Very helpful!
- Attended 10 weekly LC contests to emulate the time-sensitive interview experience. (2 months)
- Prepared 10-12 rock solid stories & tagged them all relevant amazon LPs. ( 2 weeks)
- Grkkking course for the system design. (1 month)
My Observations:
- Identifying patterns between questions are far more important than trying to solve a lot of questions.
- Leverage LC "list" feature to store and revisit the question/topic patterns or your favorite/tricky qns.
- Try LC explore card; greatly helpful in picking up the patterns.
- Consistently take part in LC weekly contests after you're somewhat confident with all DS topics.
- Solve same questions in all possible ways (recursion/iteration, bfs/dfs/disjointset, etc).
- After solving a question, review and implement any of top few most-voted solutions.
- Think out loud while coding in the interviews; whatever it is, please do not stop talking.
- LPs are super important, especially for amazon. Do mock interviews if you're not natural speaker.
- Preparing 10-15 solid LP stories are far more realistic than practicing on 50+ LP sample qns.
- Prepare a short/cheat note on those LP stories & glance at them during the interview if you get overwhelmed/blanked. Glancing at them will help you improvise!
- Do not repeat same LP story more than twice. Strike out used stories from the cheat sheet.
- Bar raiser can easily spot if you fake stories during the follow ups, therefore, mostly stick to the truths to articulate fluently.
- Grkkking course is enough in most cases for system design, which is essential if you want to clear SDE 2, otherwise they could downgrade you to SDE 1.