i recently signed an offer with a FAANG company. Copy pasting info that I sent earlier to a DB member
Step 0: Where you start your prep depends on where you are right now. Answer these questions honestly (don’t worry, I was terrible in the beginning too) and I’ll tell you where to start:
how comfortable are you with programming in general? Do you have a good understanding of common data structures like arrays, dictionaries, stacks, Queues, etc? Do you have a decent understanding of depth first search and breadth first search? how comfortable are you with trees and graphs?
If you answer YES to above questions you are already in a good place to start...if you answered NO to above questions, you're still fine (I was in the same position last year)
Step 1: pick a programming language that you’re comfortable with. I used python. You can use any common ones like python, C/C++, Java, etc
Step 2: All you need is leetcode for DS and algo problems. But first, You can start with this book: https://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/0984782850
If you want to brush up on any topic you can use this book: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena-ebook/dp/B00B8139Z8/ref=mp_s_a_1_3?dchild=1&keywords=algorithm+design+manual&qid=1589754774&sprefix=algoithm+des&sr=8-3
Step 3: once you are good with solving simple problems from cracking the coding interview, you can jump to leetcode(https://leetcode.com/). Leetcode is the most popular platform used by people interviewing for top tech companies. Pick a set of problems that covers major topics. I used the following lists.
1. I started with the following list (75 problems) which covers major topics
https://leetcode.com/list/xi4ci4ig/
(source: https://www.teamblind.com/post/New-Year-Gift---Curated-List-of-Top-75-LeetCode-Questions-to-Save-Your-Time-OaM1orEU)
2. this one covers broader ground
https://leetcode.com/discuss/career/448285/List-of-questions-sorted-by-common-patterns.
Most of the interview problems come from these topics: trees and graphs(BFS,DFS), arrays, strings, recursion, binary search, linked lists, backtracking
so make sure, you work on these before you jump on to advanced topics like Dynamic programming
Step 4 (System Design, optional): You'll have System Design round(s) if you're aiming for E4 in FB/ L4 in Google or higher. This is a bit hard if you don't have much distributed systems experience. But here are some sources that are helpful.
You can start with system design primer: https://github.com/donnemartin/system-design-primer
you can check YouTube videos( Tushar roy, Gaurav sen) or read this book for system design concepts
https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable-ebook/dp/B06XPJML5D/ref=mp_s_a_1_3?dchild=1&keywords=designing+data-intensive+applications&qid=1589776963&sprefix=designing+&sr=8-3
And practice these problems:
https://www.educative.io/courses/grokking-the-system-design-interview
Step 5: Final step is doing company tagged problems in leetcode (available with leetcode premium subscription https://leetcode.com/subscribe/) and free mock interviews (https://www.pramp.com/#/, https://interviewing.io/)
Additional tips and resources:
1. for general questions & answers about tech interviews, referrals, tech life, etc from FAANG employees (https://www.rooftopslushie.com/, https://www.teamblind.com/)
2. You can pay for referrals or get your resume reviewed or ask questions (starting from $5, but $15-20 is a reasonable starting point) here: https://www.rooftopslushie.com/
3. For long-term DS& algo prep (this book is available in three versions: C++, Java, Python) especially for Google: https://www.amazon.com/Elements-Programming-Interviews-Insiders-Guide/dp/1479274836
This book has preparation plans ranging from a weekend to 4 months. This is the best possible resource with great problems and explanations
4. Boot-camp style resources: https://interviewcamp.io/(cheap and effective), https://www.interviewcake.com/ (cheap and effective), https://www.interviewkickstart.com/(expensive), https://www.outco.io/
5. For Salary info check: https://www.levels.fyi/, https://www.teamblind.com/salaryComparison
6. For referrals, Linkedin Premium is very useful. If you are trying for Google, you can search for 'google hiring', 'google recruiter',etc and then send messages to recruiters/hiring managers (whose linkedin intro mentions that they are hiring) in the search results. You can find a lot of resources online on what to send in the intro message. This approach is mostly a numbers game. So message as many people as you can.