Prep Material:
- Step by Step Study Guide written by a new Googler who just went through the same interview process
- Attached PDF - a few links, a video, and a few practice problems to cover technical phone screen basics
- Helpful videos detailing the interview process: overview of the general hiring process, prepping for a technical interview, and a walk through of a coding problem
- Refresher on your CS fundamentals:
- Big O Notation - for a recap on BigO of these DS/Algo's
- Strategies to answer interview questions - with particular attention to the sections 'Algorithm Design' and 'Systems Design'
- Make sure and try some practice questions on sites like HackerRank, TopCoder, CodeChef, CareerCup.com, or projecteuler.net - handwrite your solutions!
Practice Tip! - Many candidates have found it helpful to practice writing code in a google doc. Then run test cases on your code and optimize it. Practice with the idea that the engineer who is interviewing you should be able to compile and run your code when you are finished.
Key topics to review:
There is a lot of useful information in the document attached but you should make sure that you are prepared with complexity of algorithms and that you can implement a range of data structures using an array (especially hash maps and hash tables).
Algorithms: BFS and DFS, and know the difference between inorder, postorder and preorder. http://www. geeksforgeeks.org/ fundamentals-of-algorithms/ for more
Sorting:
Know how to sort. Don't do bubble-sort. You should know the details of
at least one n*log(n) sorting algorithm, preferably two (say, quick sort
and merge sort). Merge sort can be highly useful in situations where
quick sort is impractical, so take a look at it. See geeksforgeeks link
above for sorting algorithms reference.
Big-O notation: also
known as "the run time characteristic of an algorithm". You may want to
refresh hash tables, heaps, binary trees, linked lists, depth-first
search, recursion. http:// bigocheatsheet.com/
——
Hashtables: Arguably
the single most important data structure known to mankind. You
absolutely should know how they work. Be able to implement one using
only arrays in your favorite language, in about the space of one
interview.
Trees: Know
about trees; basic tree construction, traversal and manipulation
algorithms. Familiarize yourself with binary trees, n-ary trees, and
trie-trees. Be familiar with at least one type of balanced binary tree,
whether it's a red/black tree, a splay tree or an AVL tree, and know how
it's implemented. Understand tree traversal
Graphs: Graphs
are really important at Google. There are 3 basic ways to represent a
graph in memory (objects and pointers, matrix, and adjacency list);
familiarize yourself with each representation and its pros & cons.
You should know the basic graph traversal algorithms: breadth-first
search and depth-first search. Know their computational complexity,
their tradeoffs, and how to implement them in real code.
Additional reading if you're interested:
GREAT KNOWLEDGEBLE POST....................
ReplyDelete