0% found this document useful (0 votes)
57 views

Algo Tips

This document provides an overview of topics that are frequently covered in coding interviews and contests, including: 1) Graph algorithms such as breadth-first search, depth-first search, and minimum spanning trees. 2) Dynamic programming problems like rod cutting, knapsack, and matrix chain multiplication. 3) Number theory concepts including modular arithmetic, the Chinese Remainder Theorem, and Euler's totient function. It also recommends books on algorithms and data structures to review in preparation for interviews.

Uploaded by

asdfgh
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
57 views

Algo Tips

This document provides an overview of topics that are frequently covered in coding interviews and contests, including: 1) Graph algorithms such as breadth-first search, depth-first search, and minimum spanning trees. 2) Dynamic programming problems like rod cutting, knapsack, and matrix chain multiplication. 3) Number theory concepts including modular arithmetic, the Chinese Remainder Theorem, and Euler's totient function. It also recommends books on algorithms and data structures to review in preparation for interviews.

Uploaded by

asdfgh
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

1) Graph algorithms : Breadth first search(BFS), Depth first search(DFS), Strong

ly connected components(SCC), Dijkstra, Floyd-Warshall, Minimum spanning tree(MS


T), Topological sort.
2) Dynamic programming: Standard dynamic programming problems such as Rod Cuttin
g, Knapsack, Matrix chain multiplication etc.
3) Number theory: Modular arithmetic, Fermat s theorem, Chinese remainder theorem(
CRT), Euclidian method for GCD, Logarithmic Exponentiation, Sieve of Eratosthene
s, Euler s totient function.
3) Greedy: Standard problems such as Activity selection.
4) Search techniques: Binary search, Ternary search and Meet in the middle.
5) Data structures (Basic): Stacks, Queues, Trees and Heaps.
6) Data structures (Advanced): Trie, Segment trees, Fenwick tree or Binary index
ed tree(BIT), Disjoint data structures.
7) Strings: Knuth Morris Pratt(KMP), Z algorithm, Suffix arrays/Suffix trees. Th
ese are bit advanced algorithms.
8) Computational geometry: Graham-Scan for convex hull, Line sweep.
9) Game theory: Basic principles of Nim game, Grundy numbers, Sprague-Grundy the
orem.
The list is not complete but these are the ones that you encounter very frequent
ly in the contests. There are other algorithms but are required very rarely in t
he contests.
Source : Learn to Code by Competitive Programming
This blog was written by MV Kaushik ( ACM-ICPC world finalist 2013. Now he works
at Facebook (company) ).

The interview will include topics such as coding, data structures, algorithms, c
omputer science theory, and systems design. We recommend you spend some time exp
loring our website to get into the right mind frame. Google Publications and Lab
s is a good starting point.
Google Labs Links:
Research at Google
Research at Google
System
Google
Google
Google

Design Publications:
File System (The Google File System)
Bigtable (Google Research Publication: Bigtable)
MapReduce (Google Research Publication: MapReduce)

Books to assist you in preparing for your interview:


Programming Interviews Exposed: Secrets to Landing Your Next Job"
Authors: John Mongan, Noah Suojanen, and Eric Gigure (Wiley Computer Publishing)
"Programming Pearls"
Author: Jon Bentley

"Introduction to Algorithms"
Authors: Cormen, Leiserson, Rivest & Stein
Please review the following topics:
Big-O notations 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. For more information on Algorithms you can visit:
Algorithm Tutorials
Coding: You should know at least one programming language really well, and it sh
ould preferably be C++ or Java. C# is OK too, since it's pretty similar to Java.
You will be expected to write some code in at least some of your interviews. Yo
u will be expected to know a fair amount of detail about your favorite programmi
ng language.
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 mer
ge sort). Merge sort can be highly useful in situations where quick sort is impr
actical, so take a look at it.
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 ar
rays in your favorite language, in about the space of one interview.
Trees: Know about trees; basic tree construction, traversal and manipulation alg
orithms. 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/bla
ck tree, a splay tree or an AVL tree, and know how it's implemented. Understand
tree traversal
Algorithms: BFS and DFS, and know the difference between inorder, postorder and
preorder.
Graphs: Graphs are really important at Google. There are 3 basic ways to represe
nt a graph in memory (objects and pointers, matrix, and adjacency list); familia
rize yourself with each representation and its pros & cons. You should know the
basic graph traversal algorithms: breadth-first search and depth-first search. K
now their computational complexity, their tradeoffs, and how to implement them i
n real code. If you get a chance, try to study up on fancier algorithms, such as
Dijkstra and A*.
Other Data Structures: You should study up on as many other data structures and
algorithms as possible. You should especially know about the most famous classes
of NP-complete problems, such as traveling salesman and the knapsack problem, a
nd be able to recognize them when an interviewer asks you them in disguise. Find
out whatNP-complete means.
Mathematics: Some interviewers ask basic discrete math questions. This is more p
revalent at Google than at other companies because counting problems, probabilit
y problems, and other Discrete Math 101 situations surrounds us. Spend some time
before the interview refreshing your memory on (or teaching yourself) the essen
tials of combinatorics and probability. You should be familiar with n-choose-k p
roblems and their ilk
the more the better.
Operating Systems: Know about processes, threads and concurrency issues. Know ab
out locks and mutexes and semaphores and monitors and how they work. Knowabout d
eadlock and livelock and how to avoid them. Know what resources a processes need
s, and a thread needs, and how context switching works, and how it's initiated b
y the operating system and underlying hardware. Know a little about scheduling.

The world is rapidly moving towards multi-core, so know the fundamentals of "mod
ern" concurrency constructs.

You might also like