Linkedin post from Neha Bakshi
You all have been asking me for Google preparation document. I can’t share the whole document but I can definitely give you some important points out of it, which can be helpful for not only Google but other interviews as well.
“What roadmap is required? What topics and respective resources are important”?
1. Revise all concepts on data structures & algorithms- you can also use the gitHub link (in the comment section below) on CS fundamentals that can serve as a checklist while preparing.
2. This Big O cheat sheet as in the image below could help you as well!*
3. Practise per category: Practice up to a level that you reach competency – Solve the question in 20/40 minutes (for medium and hard problems respectively) and come up with the optimal solutions.
(*Practice Problem Identification by picking random problems and practicing identifying “Which category does this problem belong to? Backtracking/Dynamic programming? Solution/Algorithmic design?”.*)
4. Practice coding without an IDE, be familiar with the differences in how you should write code in google docs. Do practise coding in Google Docs within a set time frame and getting comfortable talking while coding.
5. Practise a wide variety of questions, and simulate actual Interview conditions! You can also run *mock interviews* at Pramp
“What are the frequently asked questions?
1. Binary search, BFS/DFS/Flood fill, Tree traversals, Hash tables, Linked list, stacks, queues, two pointers/sliding window, Binary heaps, Dynamic programming, string manipulations
2. Other good to know topics: Trie, segment trees/fenwick trees, bitmask.
3. You’ll be expected to know and apply: *lists, maps, stacks, priority queues, binary trees, graphs, bags, and sets*.
4. For algorithms you’ll want to know *greedy algorithms, divide and conquer, dynamic programming, recursion, and brute force search*.
“What are the assessments points? What all are you judged on the basis of code”
1. Implementing the most optimised data structure and algorithm for the question
2. Explaining the tradeoffs between the data structure/solution?
3. Why you choose a data structure for implementation?
4. Analyzing the time and space complexity correctly
5. Translating the algorithm to code well?