These prerequisites are for Java interviewees only. Move onto the next section if you're prepping in a different language. If you have not decided on a language just yet, I strongly recommend Java as the best prep resources are in Java.
Practicing with mock interviews is mandatory. I cannot stress this enough. You must do at least 10 coding mock interviews. You will not pass a difficult Google-level coding interview without practice and live feedback.
- Technical Mock Interview
- This is a paid service with high quality interviewers from Google and Amazon with detailed verbal/written feedback and personalized coaching. I strongly recommend doing at least 5 mocks through here.
- interviewing.io
- This is a free service. It is a hiring platform where it will connect you with potential employers if you pass enough interviews. The quality of the feedback is subpar in comparison to Technical Mock Interview.
- pramp.com
- This is a free service. It is a peer-to-peer mock interview platform. Another great resource if you're trying do do as many mocks as possible (30+).
- For every algorithm, always understand the time and space complexity trade-offs (Big O).
- Chapter VI: Big O - Cracking the Coding Interview
- Week 2: Elementary Sorts - Algorithms, Part I (Princeton University)
- Week 3: Mergesort and Quicksort - Algorithms, Part I (Princeton University)
- Sorts - My Notes
- Solve '2Sum' Coding/Engineering Interview - How to: Work at Google (YouTube)
- LeetCode Array Problems 11, 15, 16, 18, 26, 27, 31
- LeetCode Binary Search Problems 29, 33-35, 50, 69
- LeetCode Google Problems 1-3, 5
- Week 2: Stacks and Queues - Algorithms, Part I (Princeton University)
- Stanford Library - Linked List
- LeetCode Google Problems 17, 20, 22
- Week 5: Binary Search Trees - Algorithms, Part I (Princeton University)
- Stanford Library - Binary Tree
- Binary Trees - My Notes
- LeetCode Tree Problems 94-96, 98-100
- LeetCode Google Problems 54, 56, 66
- LeetCode Tree Problems 101-106
- LeetCode Google Problems 155, 162, 173
- Week 4: Priority Queues - Algorithms, Part I (Princeton University)
- LeetCode Heap Problems 23, 215, 218, 239, 253, 264, 295
- LeetCode Google Problems 42, 200, 208
- Complete all of the LeetCode Easy Collection
- Week 1: Undirected Graphs and Directed Graphs - Algorithms, Part II (Princeton University)
- Graph Search, DFS and BFS - Gayle McDowell (YouTube)
- Graphs - My Notes
- Solve 'Shortest Reach' Using BFS - Gayle McDowell (YouTube)
- Solve 'Connected Cells' Using DFS - Gayle McDowell (YouTube)
- Graph Data Structure And Algorithms - GeeksforGeeks
- LeetCode Graph Problems 133, 207, 210, 261, 269, 310, 323
- LeetCode Google Problems 228, 231, 240
- Get very comfortable with permutations, combinations, and backtracking.
- Memoization and Dynamic Programming - Gayle McDowell (YouTube)
- Solve 'Recursive Staircase' Using Recursion - Gayle McDowell (YouTube)
- Solve 'Coin Change' Using Memoization and DP - Gayle McDowell (YouTube)
- Complete all of the LeetCode Get Well Prepared for Google Interview Questions
- Review with the LeetCode Medium Collection
- Algorithms, Part I - Princeton University
- Algorithms, Part II - Princeton University
- Algorithms, Fourth Edition (Deluxe)
- Cracking the Coding Interview
- Gayle McDowell - YouTube Videos
- GeeksforGeeks - Dynamic Programming
- GeeksforGeeks - Graph Data Structure And Algorithms
- Technical Mock Interview
- interviewing.io
- pramp.com