Hi All,
This is my first offer from one of FAANG companies after a decade of IT experience. So, I wanted to contribute to the LC community with my experience.
Applying for FAANG: I never applied directly on FAANG job portals or referred by anyone. I was always reached out by Recruiters for positions in LinkedIn. So, I would advise anyone reading this and not getting FAANG calls to improve on their LinkedIn profile. Pointers for good LinkedIn profile: (https://www.topresume.com/career-advice/10-ways-to-create-a-winning-linkedin-profile). important ones are 1) create attractive summary 2) ask for recommendations from your colleagues from each company / college friends / lecturers 3) increase your connections to increase your visibility on being searched... i used LinkedIn 1 month trail to increase my connections... in summary, treat ur LinkedIn profile as your social resume...
Previous FAANG attempts:
Current attempts:
Amazon April 2020 (Signed NDA, can't reveal questions):
Phone Interview (1hr): 10 mins LP + 30 mins LC medium + 10 mins - system design teaser + 10 mins Q/A
Onsite Virtual (Each round 50 mins):
Round 1 (Coding): 15 mins LP + 30 mins LC medium + 5 mins Q/A
Round 2 (Coding): 10 mins LP + 35 mins (not in leetcode, coding+OOP focus)+ 5 mins Q/A
Round 3 (Coding): 15 mins LP + 30 mins (similar to project dependencies in CTCI) + 5 mins Q/A
Round 4 (System design): 10 mins LP + design question not in *** (35 mins) + 5 mins Q/A
Microsoft April/May 2020 (Signed NDA, can't reveal questions):
Tech Screening (1hr): 15 mins coding (LC easy) + 10 mins knowledge based + 30 mins system design
Onsite Virtual (each 1 hour):
Round 1: 45 mins system design + 10 mins coding teaser + 5 mins Q/A
Round 2: 55 mins - two system design questions (1 discussion, 1 coding type) + 5 mins Q/A
Round 3: 50 mins - Coding + OOAD
Round 4: Hiring manager + behavioral
Facebook April/May 2020 (Signed NDA, can't reveal questions):
Tech Screening (45 mins): Coding (LC medium) 30 mins + Followup on same problem (10 mins) + 5 mins Q/A
Onsite Virtual (each round 45 mins):
Round 1 (Coding): 2 LC medium questions + 1 LC easy - solved all 3
Round 2 (Behavioral/Coding): 25 mins behavioral + 10 mins coding teaser (not in LC)
Round 3 (Coding): 1 LC medium + other medium (not in LC) - solved both
Round 4 (Design/Architecture): system design question not in ***.
Round 5 (Coding): 1 LC medium with followup + 1 LC medium -solved 1st, 2nd explained approach + halfway code
Followup System Design (1 week later): Similar to one in ***
Interview Preparation:
Leetcode premium (like company wise filter/sort by frequency etc..)
Solved Amazon, Microsoft, Facebook interview cards in LC Premium before each interview. similar inteterview cards exist for Google, Netflix, Apple etc..
System Design
Behavioral
Data Structures/Algorithms Prep
If you want refresher on data structures (by Google engineer, William Fiset):
https://www.youtube.com/playlist?list=PLDV1Zeh2NRsB6SWUrDFW2RmDotAfPbeHu
or refer to Abdul Bari's on udemy/youtube.
tech interview handbook https://yangshun.github.io/tech-interview-handbook/introduction
LC PREP:
I started doing leetcode around late 2018 and completed about 200 problems before giving interviews in Amazon and Google around Feb/March 2019. With Google, my bad luck then was mis-understanding the problem, and jumping into the code wasting about 25 mins of phone interview time. Then I stopped doing leetcode for about 10 months due to personal reasons.
In 2020, COVID situation helped a bit in doing more leetcode, as I'm not stepping out like before, eventually completing about 140+ problems in a span of 6 weeks before my interviews.
I also tried doing Leetcode weekly contests to judge where I stand when solving unknown problems in a time frame. My best was solving 3 problems in about 10+ contests but never solved all 4 problems in the contest. Based on my feeling, if you are able to consistently solve 2 or 3+ problems continuously for about 8+ contests, you are in a good position to give FAANG interviews. after each contest, look for solutions which you couldn't solve within contest, and understand how you could have solved them... important thing with contest is it increases your courage/ability to solve unseen problems.. unseen problems are likely in FAANGs...
When solving LC problems, here is my general approach:
System Design Prep:
This is not straight forward like LC problems. So, it is continuous learning, so even if you think you know everything, you may not.
My advice is to do following depending on available time for you:
Read a chapter/topic in book 'Designing Data Intensive Applications' (everyday to have a consistency)
Read a topic system design primer (if not option 1) (https://github.com/donnemartin/system-design-primer)
Watch tech talk videos from top companies (youtube, scale, infoq, aws reInvent etc)
Learn distributed system design patterns (eg: micro service patterns, self healing design etc)
Read FAANG and other top company engineering blogs to see how they solved interesting problems they came across. (https://github.com/donnemartin/system-design-primer#company-engineering-blogs)
Software engineering daily has some podcasts posted every week (listen to your interested areas)
Grooking system design (has step by step approach) good for interviews.. (read 1 problem every day before interviews)
Once you are at a comfortable stage, start practising with your friends 1-on-1 mocks either using whiteboard if you have (or) using online drawing tools like google drawing.
Be prepared to expect questions outside of ***, or whatever problems you have seen so far in an interview.
System design expectations are different for each role, experience, and company you are interviewing with. I feel Recruiters generally give good pointers about areas where you will be evaluated, so try to use that to see how you may be judged in the interview.
My approach for solving system design in an interview:
Make your own notes on below items which you can refer to the day before each interview as a quick reference.
Lastly, If you fail in the interview, don't worry!! after the interview, try to analyse your performance, and note down where you could have done better so you go strong next time. I honestly felt I gave best attempts at Facebook and Microsoft despite no offers. sometimes, i guess luck also needs to favor us despite our hard work..
Hope this post helps at least a few people!!! Upvote if you like it!! All the best for your interviews!!