14 stages · 70 topics · 41 core
Roadmap

Master data structures & algorithms.

All stages, in order — from Big-O through advanced trees, graph algorithms, dynamic programming, and the interview patterns that tie them together. The complete spine. Each topic links to a Semicolony deep dive or simulator where one exists, and to a curated external resource where it doesn't. Follow the arc in order, or jump to wherever you're stuck.

FOUNDATIONSSTRUCTURESALGORITHMSPATTERNSMASTERY 01 02 03 04 05 06 07 08 09 10 11 12 13 14startproblem solver
Core (the spine) Recommended (strong upside) Optional (pick if relevant)

Path
Level

Core plus the recommended layer. The optional stops stay hidden until you have shipped a couple of real systems.


Jump to a stage

01
Stage

Complexity & Big-O

The vocabulary the rest of this roadmap is written in.

Before any structure or algorithm makes sense, you need to reason about cost. Big-O is how engineers compare approaches without running them — the difference between an answer that scales and one that falls over at 10x load.

02
Stage

Arrays & strings

Contiguous memory and the patterns it unlocks.

Arrays are the bedrock — contiguous memory with O(1) indexing, the structure every other one is measured against. Strings are arrays of characters with their own gotchas. Master the two-pointer and sliding-window moves here and a third of interview problems collapse.

03
Stage

Hashing

O(1) lookups — until the collisions show up.

A hash map is O(1) until it isn't — collisions, resizing, and a bad hash turn it into a linked list. Understanding what happens under the hood is the difference between using a map and trusting it under load.

04
Stage

Linked lists, stacks & queues

Pointer-chasing, and the last-in and first-out structures.

Linked lists trade O(1) indexing for O(1) insertion anywhere — and force you to think in pointers. Stacks and queues are restricted lists whose discipline (LIFO, FIFO) is exactly what half of recursion, parsing, and scheduling needs.

05
Stage

Trees & BSTs

Hierarchy, recursion, and ordered search.

Trees are where recursion stops being abstract. A binary search tree gives O(log n) lookup when balanced — and O(n) when it degenerates into a list. Traversals are the muscle memory every tree problem builds on.

06
Stage

Heaps & priority queues

Always pulling the next-best item, in log time.

A heap is a tree that keeps the min (or max) at the root and rebalances in O(log n). When a problem needs "the k largest," "the next event," or "merge n sorted streams," it almost always wants a heap.

07
Stage

Balanced & advanced trees

Self-balancing, disk-friendly, and special-purpose.

A plain BST is a coin flip on performance. The structures here guarantee O(log n) by rebalancing on every write — and others (tries, segment trees, B-trees) trade generality for being unbeatable at one specific job.

Core

B-trees & B+ trees

Fat, shallow trees where each node holds many keys to match a disk page. Fewer levels means fewer disk seeks — which is why every relational database index is a B+ tree.

Sim B-tree
08
Stage

Graphs & traversal

Nodes, edges, and the two ways to walk them.

Once a problem mentions connections — friends, dependencies, roads, states — it is a graph. Pick a representation, then BFS or DFS. Most "graph" interview questions are really one of those two traversals wearing a costume.

09
Stage

Shortest paths & graph algorithms

Weighted edges, flow, and the named classics.

Add weights to edges and traversal becomes optimisation. These are the algorithms with names attached — Dijkstra, Bellman-Ford, A*, max-flow — each with a precise contract about what it assumes and what it costs.

10
Stage

Sorting & searching

The most-studied algorithms, and why they still matter.

You will rarely write a sort by hand — but knowing why quicksort is usually fastest, when merge sort wins, and how binary search's off-by-one bugs hide is exactly what separates someone who uses the library from someone who understands it.

11
Stage

Recursion & backtracking

Solving a problem by assuming the smaller case is done.

Recursion is the art of defining a problem in terms of itself plus a base case. Backtracking is recursion that explores choices and unwinds dead ends — the brute-force engine behind permutations, sudoku, and the N-Queens board.

12
Stage

Dynamic programming

Overlapping subproblems, each solved only once.

DP is the topic that breaks the most candidates — and the one that yields entirely once you see it as "recursion with a memo." The whole skill is spotting overlapping subproblems and defining a state that captures everything you need.

13
Stage

Greedy & divide-and-conquer

When grabbing the local best, or splitting in half, works.

Greedy takes the best-looking option at each step and hopes it adds up — sometimes provably optimal, often a trap. Divide-and-conquer splits, solves, and merges. Both are powerful precisely because they avoid exploring everything DP does.

14
Stage

Interview patterns & practice

Spotting the familiar shape in an unfamiliar problem.

Senior performance is pattern recognition. Once you have the structures and algorithms, the last skill is matching an unfamiliar problem to a known technique in the first ninety seconds — then communicating the trade-offs as you code.

Core

Problem decomposition

Restate the problem, name the constraints, find the brute force, then optimise. The structured approach that keeps you moving when you don't instantly see the trick — and shows the interviewer how you think.

Problem-solving
Core

Communicating while you code

The interview is graded on signal, not just a passing test. Narrate the approach, call out the complexity, test your own edge cases out loud. A silent correct answer scores below a narrated one.

Interview hub