Prep Resources, Part I

ℹ️ Below is an even longer list of resources for technical interview prep you can check out:

Courses

Articles

Cheat Sheets

Explainers

Code

Books

Concept Overview

The “computer science” technical interviews are probably one of the most important parts of getting a job at a company like Facebook, Google, or Microsoft. You need to understand them to be prepared for an interview. Studying for these problems is the best way to become comfortable enough to be able to solve challenges they throw at you. These questions are about topics such as:

  • Data Structures (Linked List, Binary Tree, Graphs)

  • Data Traversal and Manipulation (Sorting, Constructing)

  • String and Token Parsing

  • Array Manipulation

  • Regular Expressions

  • Combinatorial Sets or Permutations

  • Recursive Algorithms

Here’s a few specific topics in-more depth to ensure you are familiar with (sourced from this article):

  • Algorithm Complexity: you need to know Big-O. It’s a must. If you struggle with basic big-O complexity analysis, then you are almost guaranteed not to get hired. It’s, like, one chapter in the beginning of one theory of computation book, so just go read it. You can do it.

  • 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, quicksort and merge sort). Merge sort can be highly useful in situations where quicksort is impractical, so take a look at it.

  • Hashtables: hashtables are arguably the single most important data structure known to mankind. You absolutely have to know how they work. Again, it’s like one chapter in one data structures book, so just go read about them. You should be able to implement one using only arrays in your favorite language, in about the space of one interview.

  • Trees: you should know about trees. basic tree construction, traversal and manipulation algorithms. You should be familiar with binary trees, n-ary trees, and trie-trees at the very least. Trees are probably the best source of practice problems for your long-term warmup exercises.You should be familiar with at least one flavor of balanced binary tree, whether it’s a red/black tree, a splay tree or an AVL tree. You should actually know how it’s implemented. You should know about tree traversal algorithms: BFS and DFS, and know the difference between inorder, postorder and preorder.

  • Graph: There are three basic ways to represent a graph in memory (objects and pointers, matrix, and adjacency list), and you should familiarize yourself with each representation and its pros and cons. You should know the basic graph traversal algorithms: breadth-first search and depth-first search. You should know their computational complexity, their tradeoffs, and how to implement them in real code.

If you understand these topics, that should act as a baseline for being prepared for an “algorithms”-based interview.

Last updated