This a combination of piece of information I found around the internet. If you believe there is a better answer, submit a pull request. Most of this content was put together quickly before an interview for review.
If you use it, please star it so I know it is getting use.
- Big O
- Algorithm Complexity
- Quick Sort
- Merge Sort
- When do you use merge sort, when do you use quick sort
- Hash Tables (How they work, implement one using only arrays)
- Tree Construction Tranversal and manipulation
- Binary Trees
- Nary Trees
- Trie Trees
- Balance Binary Tree
- Red Black Tree
- Splay Tree
- AVL Tree
- Objects and pointers (Graph in memory) pros and cons
- Matrix (Graph in memory) Pros and cons
- Adjacency list (Graph in memory) pros and cons
- Tree Traversal so Breadth first search
- Depth first serch
- Difference between inorder, postorder, preorder
- Computational complexity of each tree traversal, their tradeoffs
- Dijkstra
- A*
- NP-Complete problems like traveling salesman, knapsack problem
- Know about processes, threads, concurrency issues
- Know about locks, mutexes, semaphores and monitors
- Know about deadlock and live lock, how to avoid them
- Know what resources a proccesses needs, a thraed needs, how context switch works, how its initiated by os and hardware
- Know about scheduling
- Know fundamentals of "modern" concurrency constructs
- Recursive problems - know how to use and repurpose common recursive algorithms to solve new problems
- Induction for recursive algorithms
- Basic descrete math questions
- N-choose-k problem