Tech IndustryMay 10, 2018
Amazonbloglog

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. Background - 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. Bit manipulations 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. Theory wise, 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 Chubby Paxos made easy Kafka 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.

Add a comment
New
restandves May 10, 2018

Wait so did u get any offers yet

LinkedIn Lebr0n May 10, 2018

Yes. Good offers - FB, G, MSFT, etc

Oracle Howmany May 10, 2018

Plus Amazon and Apple

LinkedIn Lebr0n May 10, 2018

Awesome experience! Thanks OP! You only did 50 lc. How were the interview questions? Were they harder than what you practiced? Were you able to solve all in < O(n^2) time?

Amazon bloglog OP May 10, 2018

Yeah did only 50lc, but worked thorough cracking coding interview. Regarding interview diffculty, G~Airbnb >>> Fb~Appl >>>>>>Msft. Btw, got rejected from Airbnb. Both G and Airbnb had graph/dp , enjoyed solving those. Fb was tamer and mostly straightforward. MSFT was I would say lc easy maybe medium or two, it was unexpectedly easy. I'll see if I find time to pen down interview experiences. Also I think difficult is blown way out of proportion on net. Even some harder questions are asked with not expectations of solving it fully but to see how you think through. Sorry did not take a look at LC hard(intentionally to not get demotivated :) )

Daimler google2be May 10, 2018

Amazing!

Microsoft Helloooo May 10, 2018

Just curious, why didn’t you try for Uber, Airbnb and other unicorns? Looking at your knowledge in distributed system, you deserve E5 :-)

Amazon bloglog OP May 10, 2018

I did Airbnb and got rejected :). Rest I did not have contacts/friends to get referral and did not want to put effort in pinging recruiters and try to get someone to respond.

Oracle HairyLeson May 11, 2018

Were Airbnb questions hard? Did they ask complicated graph problems?

Microsoft helper_ May 10, 2018

I hope you’re not trolling. Just doing 50 questions of leetcode is definitely not enough. You must be preparing long before you really started preparing.

Amazon bloglog OP May 10, 2018

Nope not trolling , people are fixating on leetcode however I did work through the whole cracking the coding interview book(which itself has lots of questions). Again clear fundamentals + coding practice should be sufficient. YMMV though.

Microsoft helper_ May 10, 2018

Yeah cracking has 189 problems. That makes it 239 problems in total. Ok that’s a sizable number to get through.

New
Dey May 10, 2018

I think I know where I fucked up, didn’t study enough. Leetcode medium is already being asked in phone screenings so I guess next time I wouldn’t schedule a phone screen until I have completely mastered all basics. I guess it won’t happen again as I have another year to get really good. Putting all my effort into this. Thanks for sharing OP

IBM 6969696969 May 10, 2018

How did you like working at Amazon? You said you built tier 1 services, was that at AWS? Don't answer the latter question if you're not comfortable.

Amazon bloglog OP May 10, 2018

My experience at Amazon hasn't been that bad. One thing , middle managers have too much influence and power over reporting employees, so you definitely need to choose a good manager.

BetterWorks B.B.8 May 10, 2018

Nice, I had a very similar timeline of events as you. To add some of my own strategy to this thread: I went all in on LC, using tags to go through each of the categories that OP listed, do a handful of problems in each category (ramping up in difficulty). I do a second round through all the categories again to reinforce after the first pass, so this ended up being something like 150+ problems. Also my emphasis is to make sure I've seen as many problems as I can and associated question types with the solution algo. Thus to prevent wasting time, I'll google the answer if I'm stuck/stumped for 30+ min. It's easier to think of it as training for muscle memory / recognizing patterns rather than training yourself to "devise algos from scratch." This is important because companies like Google will avoid LC problems, but there are only so many derivative questions one can come up with. I know this may be an anomaly, but I was barely asked any DP problems or LC hard. My suggestion is to tackle a few LC hard, learn the sol but don't stress over them. For system design and general interview I also utilized these two guides: https://github.com/jwasham/coding-interview-university/blob/master/README.md https://github.com/donnemartin/system-design-primer

Amazon bloglog OP May 10, 2018

Thanks for sharing, btw where are you headed now ?

BetterWorks B.B.8 May 10, 2018

FB also! Starting very soon!

Cisco archvile May 10, 2018

Congrats

WalmartLabs ahahaha May 10, 2018

Good!

Amazon SMYu17 May 10, 2018

Which companies let you use the laptop when you asked?

Amazon bloglog OP May 10, 2018

Google, Facebook and Airbnb. Btw, you need to ask for laptop and it is not a default option.

Amazon nah breh May 10, 2018

At what point did you ask? Like via email ahead of time or when the interview started?