keithweaver / technical-interview-prep

Software Engineering Technical Interview Prep

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

interview-prep

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.

What you need to know

Complexity
  • Big O
  • Algorithm Complexity
Sorting
  • Quick Sort
  • Merge Sort
  • When do you use merge sort, when do you use quick sort
Hash Tables
  • Hash Tables (How they work, implement one using only arrays)
Trees
  • Tree Construction Tranversal and manipulation
  • Binary Trees
  • Nary Trees
  • Trie Trees
  • Balance Binary Tree
  • Red Black Tree
  • Splay Tree
  • AVL Tree
Graph in memory
  • 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
  • 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
  • NP-Complete problems like traveling salesman, knapsack problem
OS
  • 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
Recursion
  • Recursive problems - know how to use and repurpose common recursive algorithms to solve new problems
  • Induction for recursive algorithms
Descrete Math
  • Basic descrete math questions
  • N-choose-k problem

About

Software Engineering Technical Interview Prep