Algorithms
Step-by-step procedures, and how to reason about their cost.
Backend Engineer track
Junior
Write correct code, ship small changes safely, ask good questions.
Core: start here
- Big O NotationDescribing how runtime or memory grows with input size.
10 more junior concepts
- AlgorithmA step-by-step procedure for solving a problem.
- Best, Worst and Average CaseDifferent inputs can make the same algorithm fast or slow.
- Binary SearchFinding an item in sorted data by halving the range each step.
- Brute ForceTrying every possibility; the baseline before optimizing.
- Coding Interview ProblemsAlgorithm puzzles used in hiring, and how they relate to real work.
- Common Complexity ClassesO(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ) and what they feel like in practice.
- Linear SearchChecking every element in turn.
- Sorting AlgorithmsBubble, insertion, merge, quick and heap sort, and their trade-offs.
- Space ComplexityHow memory use grows with input size.
- Time ComplexityHow the number of steps grows with input size.
Mid-level
Own a feature end to end without hand-holding.
- Amortized AnalysisThe average cost per operation over a sequence of operations.
- BacktrackingTrying choices and undoing them when they lead nowhere.
- Big Omega and Big ThetaLower bounds and tight bounds, alongside Big O's upper bound.
- Breadth-First SearchExploring a graph level by level; finds shortest unweighted paths.
- Depth-First SearchExploring a graph as deep as possible before backtracking.
- Divide and ConquerSplitting a problem into smaller ones and combining the results.
- Dynamic ProgrammingSolving overlapping subproblems once and reusing the answers.
- Greedy AlgorithmTaking the locally best choice at each step.
- Merge SortSplit in half, sort each half, merge: a stable O(n log n) sort.
- QuicksortPartitioning around a pivot; fast in practice, O(n²) in the worst case.
- Sliding WindowMaintaining a moving range over a sequence.
- Stable SortA sort that keeps equal elements in their original order.
- Topological SortOrdering tasks so every dependency comes first.
- Two PointersWalking two indexes through data to avoid nested loops.
Senior
Own a system, its failure modes, and its trade-offs.
- Bellman-Ford AlgorithmShortest paths that also handles negative edge weights.
- Classic Hard ProblemsKnapsack, traveling salesman and others, and how to recognize them in disguise.
- Consistent HashingHashing that moves only a few keys when servers are added or removed.
- Diff AlgorithmsComputing the minimal set of changes between two sequences.
- Dijkstra's AlgorithmFinding shortest paths in a graph with non-negative weights.
- Huffman CodingCompressing data by giving frequent symbols shorter codes.
- Minimum Spanning TreeConnecting all nodes with the least total edge weight (Prim's, Kruskal's).
- P vs NP / NP-CompleteProblems with no known efficient solution, and why some tasks stay hard.
- String SearchingAlgorithms like KMP and Rabin-Karp for finding substrings.
Staff
Shape how many teams build, across systems.
Nothing here yet.
Principal
Set technical direction for the organization.
- Maximum FlowFinding the most that can flow through a network (Ford-Fulkerson).
Data Engineer track
Junior
Build and fix pipelines from clear specs; write correct SQL.
- AlgorithmA step-by-step procedure for solving a problem.
- Best, Worst and Average CaseDifferent inputs can make the same algorithm fast or slow.
- Big O NotationDescribing how runtime or memory grows with input size.
- Binary SearchFinding an item in sorted data by halving the range each step.
- Brute ForceTrying every possibility; the baseline before optimizing.
- Coding Interview ProblemsAlgorithm puzzles used in hiring, and how they relate to real work.
- Common Complexity ClassesO(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ) and what they feel like in practice.
- Linear SearchChecking every element in turn.
- Sorting AlgorithmsBubble, insertion, merge, quick and heap sort, and their trade-offs.
- Space ComplexityHow memory use grows with input size.
- Time ComplexityHow the number of steps grows with input size.
Mid-level
Own pipelines and models end to end, including their quality.
- Amortized AnalysisThe average cost per operation over a sequence of operations.
- BacktrackingTrying choices and undoing them when they lead nowhere.
- Big Omega and Big ThetaLower bounds and tight bounds, alongside Big O's upper bound.
- Breadth-First SearchExploring a graph level by level; finds shortest unweighted paths.
- Depth-First SearchExploring a graph as deep as possible before backtracking.
- Divide and ConquerSplitting a problem into smaller ones and combining the results.
- Dynamic ProgrammingSolving overlapping subproblems once and reusing the answers.
- Greedy AlgorithmTaking the locally best choice at each step.
- Merge SortSplit in half, sort each half, merge: a stable O(n log n) sort.
- QuicksortPartitioning around a pivot; fast in practice, O(n²) in the worst case.
- Sliding WindowMaintaining a moving range over a sequence.
- Stable SortA sort that keeps equal elements in their original order.
- Topological SortOrdering tasks so every dependency comes first.
- Two PointersWalking two indexes through data to avoid nested loops.
Senior
Design the platform's storage, processing and modeling choices.
- Bellman-Ford AlgorithmShortest paths that also handles negative edge weights.
- Classic Hard ProblemsKnapsack, traveling salesman and others, and how to recognize them in disguise.
- Consistent HashingHashing that moves only a few keys when servers are added or removed.
- Diff AlgorithmsComputing the minimal set of changes between two sequences.
- Dijkstra's AlgorithmFinding shortest paths in a graph with non-negative weights.
- Huffman CodingCompressing data by giving frequent symbols shorter codes.
- Minimum Spanning TreeConnecting all nodes with the least total edge weight (Prim's, Kruskal's).
- P vs NP / NP-CompleteProblems with no known efficient solution, and why some tasks stay hard.
- String SearchingAlgorithms like KMP and Rabin-Karp for finding substrings.
Staff
Shape how the whole organization produces and uses data.
Nothing here yet.
Principal
Set data strategy and architecture across the company.
- Maximum FlowFinding the most that can flow through a network (Ford-Fulkerson).
Frontend Engineer track
Junior
Build UI that works, ship small changes safely, ask good questions.
- AlgorithmA step-by-step procedure for solving a problem.
- Best, Worst and Average CaseDifferent inputs can make the same algorithm fast or slow.
- Big O NotationDescribing how runtime or memory grows with input size.
- Binary SearchFinding an item in sorted data by halving the range each step.
- Brute ForceTrying every possibility; the baseline before optimizing.
- Coding Interview ProblemsAlgorithm puzzles used in hiring, and how they relate to real work.
- Common Complexity ClassesO(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ) and what they feel like in practice.
- Linear SearchChecking every element in turn.
- Sorting AlgorithmsBubble, insertion, merge, quick and heap sort, and their trade-offs.
- Space ComplexityHow memory use grows with input size.
- Time ComplexityHow the number of steps grows with input size.
Mid-level
Own a feature end to end without hand-holding.
- Amortized AnalysisThe average cost per operation over a sequence of operations.
- BacktrackingTrying choices and undoing them when they lead nowhere.
- Big Omega and Big ThetaLower bounds and tight bounds, alongside Big O's upper bound.
- Breadth-First SearchExploring a graph level by level; finds shortest unweighted paths.
- Depth-First SearchExploring a graph as deep as possible before backtracking.
- Divide and ConquerSplitting a problem into smaller ones and combining the results.
- Dynamic ProgrammingSolving overlapping subproblems once and reusing the answers.
- Greedy AlgorithmTaking the locally best choice at each step.
- Merge SortSplit in half, sort each half, merge: a stable O(n log n) sort.
- QuicksortPartitioning around a pivot; fast in practice, O(n²) in the worst case.
- Sliding WindowMaintaining a moving range over a sequence.
- Stable SortA sort that keeps equal elements in their original order.
- Topological SortOrdering tasks so every dependency comes first.
- Two PointersWalking two indexes through data to avoid nested loops.
Senior
Own an app's architecture, performance, and failure modes.
- Classic Hard ProblemsKnapsack, traveling salesman and others, and how to recognize them in disguise.
- Diff AlgorithmsComputing the minimal set of changes between two sequences.
- Dijkstra's AlgorithmFinding shortest paths in a graph with non-negative weights.
- Huffman CodingCompressing data by giving frequent symbols shorter codes.
- Minimum Spanning TreeConnecting all nodes with the least total edge weight (Prim's, Kruskal's).
- P vs NP / NP-CompleteProblems with no known efficient solution, and why some tasks stay hard.
- String SearchingAlgorithms like KMP and Rabin-Karp for finding substrings.
Staff
Shape how many teams build, across apps.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.