Bullet Proof Study Plan for Data Structures and Algorithms

Oct 21, 2024

Written by: Brian Jenney | Data Structures and Algorithms, Interview Preparation

We’re going to go through a bulletproof study plan to get you prepared for 90% of interviews that require data structures and algorithms.

Besides passing interviews, the benefits of learning data structures and algorithms are:

  • Increased problem-solving ability
  • Exposure to fundamental computer science concepts
  • Confidence

Unfortunately, most people do random LeetCode problems expecting to come out on the other end interview-ready. That’s like going to the gym with no plan, throwing random weights around, and expecting to get buff.

Study concepts, not problems.

I spent over $10k learning data structures and algos over the years. I’m going to break down exactly how I went from not knowing Big O to making it to the final rounds at companies like Google and Facebook and landing offers from high-growth startups.

Here’s what you should study, in order:

Big O Notation

Estimated Study Time

1 day

Concepts:

  • Space vs time complexity
  • Linear time
  • Logarithmic time
  • Factorial time
  • Constant time
  • Exponential time

How to Study:

Sorting and Searching

Estimated Study Time

1 week

Concepts:

  • Merge sort
  • Quick sort
  • Bubble sort (and why you would never use this!)
  • Hoare vs Lomuto partitioning (BONUS points)

How to study:

  • Create each sorting and searching algo from scratch

Stacks and Queues

Estimated Study Time

1 day

Concepts:

  • Stacks
  • Queues
  • LIFO
  • FIFO

How to study:

  • Create a stack and queue from scratch

Heaps

Estimated Study Time

2 days

Concepts:

  • Max heap
  • Min heap
  • Priority queue

How to study:

  • Create a max and min heap from scratch

Trees and Tries

Estimated Study Time

1 week

Concepts:

  • Binary trees and Binary search trees (there’s a difference)
  • Depth-first search
  • Breadth-first search
  • What the heck is a trie?

How to study:

  • Create a binary tree, binary search tree, and a trie from scratch

Recursion

Estimated Study Time

1 week

Concepts:

  • Recursion vs backtracking
  • Call stack
  • Stack overflows (the concept, not the site)

How to study:

  • Solve problems that require finding combinations and permutations

Linked Lists

Estimated Study Time

1 week

Concepts:

  • Singly linked list
  • Doubly linked list

How to study:

  • Create an LRU cache leveraging a LL

Graphs

Estimated Study Time

1 week

Concepts:

  • Directed vs undirected graphs
  • Adjacency list
  • Adjacency matrix

How to study:

  • Create graph structures using adjacency and matrix representations with DFS and BFS methods

Dynamic Programming

Estimated Study Time

1 week

Concepts:

  • Dynamic programming vs recursion
  • Top-down vs bottom-up memoization

How to study:

  • Solve Fibonacci using DP

Miscellaneous but Important!

Estimated Study Time

2 weeks

Concepts:

  • 2 pointers
  • Frequency counters
  • Sliding window

How to study:

  • Look up + Leetcode and solve at least 2 problems under each concept

Conclusion

Holy moly, that’s a lot to study… or is it? I gave fairly aggressive estimates for how long I would expect you to take to study the bare minimum.

It’s enough to get a solid understanding of the most common concepts and can be done over a couple of months.

For most interviews, that’s really all you need.

If you want to become a software developer and build complex stuff that does not suck. Apply here.