Sharing my preparation strategy for offers from Fb, Google, MSFT etc.
I have a post out sharing my offer numbers(under Compensation topic). People Pm'd me asking about my preparation startegy and interview experiences, hence this post.
Total 5.5 years exp, MS in CS.
Currently SDE2 in Amazon. My team is good, only issue is I have been working 65-70hrs/week on avg consistently for past 6months or so. Was planning on switching team but decided why not try a new company. Also I have spent almost 5 years in Amazon itself, so seems great time to look out.
Prep started in Jan, hit up my friends and contacts in Fb,Google, Apple and MSFT for referral, and schedule phone screens for mid Feb.
Firstly went through all the fundamentals for following topics ,
Data structures - Tree(bst, n ary),Graph, Priority Queues, Linkedlist and Trie
Algorithms- Searching , sorting, some Greedy variants, backtracking and finally DP.
Alogrithmic analysis(Big O)
Spend around an hour or two on each. Mostly refreshing them and getting absolute clarity on fundamentals.
Resources - Google search to find University's pdf or.ppt for each topics.
I decided to use Java(since that is what I used last 5 years) , so got well versed.with general collections library, priority queues , impicit conversions and all tools I could use to crank out code.
For practice, Cracking the coding interview was God send. For each topic worked through the topics. Solved around 15-20% of problems and rest read and understood them. I didn't use whiteboard but rather laptop to practise and made a point to ask for laptop in interviews
Leetcode, unlike many others , I just did around 50 or so problems. All mediums.
System design -
Current work in Amazon involves distributed applications so that definitely helped.
I have been lucky to design , get reviews by PE build tier 1 systems. Also went through the experience of being burnt by wrong decisions on tradeoffs and the fixing them. Hence I think the experience gives another dimension to just theoretical knowledge.
CAP theorem, Flp , issues with asynchronous distributed systems. Protocols for consensus (Paxos). Variations on Consistency (Linearzable to eventual and everything. in between). General components to scale systems(load balancers, statelessness etc). Nuances related to replication and partioning. Consistent hashing and assignment mappings etc.
Papers to definitely read
Paxos made easy
Original dynamo paper
Chord or Pastry DHT.
Timeline for prep were,
Start of Jan to Mid Jan - Refreshed each topic
Mid Jan- mid Feb - Atleast go through each topic in Cracking the coding interview(reading and understanding mostly)
Late Feb - Phone screens
Practise more problems from cracking coding interview Feb and March. Mostly weekends and sporadically during week.
March last week and Early April week interviews.
Whole April, team matches and waiting for approvals.
Later April early May offers.
I'll add/edit more if I remember something.
I'll create a separate post for interview experience.