Bullet Proof Study Plan for Data Structures and Algorithms
Oct 21, 2024Written 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:
- Read: FreeCodeCamp Big O OR Digital Ocean Big O
- Write the Big O next to every problem you solve
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.