Skip to main content

Free · 10 stages · No signup

DSA roadmap: what to study, in order

The topics coding interviews test, each one building on the last, and the ones a fresher can leave for later.

Check my Software Engineer score
The roadmapFirst 5 of 10
  1. 01Big-O and complexity
  2. 02Arrays, lists and hashing
  3. 03Binary search and bits
  4. 04Trees and heaps
  5. 05Sorting
Before you start

DSA is one part of the job

The Software Engineer profile Skilture scores resumes against lists 8 core technical skills. A DSA roadmap teaches 2 of them: Data Structures and Algorithms.

The other 6 are Git, Python, Java, System Design, SQL and REST APIs. They are on the job profile, and they sit outside the required topics of any DSA roadmap, this one included.

If your resume already shows them, spend your weeks here. If it does not, find out which are missing first, so the weeks go to the gap that is actually stopping you.

The plan

The roadmap, in order

Each stage uses the one before it. Most take a few days to a week.

  1. 1

    Big-O and complexity

    Every answer after this is judged on its time and space cost, so learn to state it first.

    Big-O, Big-Omega, Big-Theta · Time vs space complexity · Amortized analysis

    Skill: Algorithms

  2. 2

    Arrays, lists and hashing

    Most interview problems are built from these five, and the later structures are made of them.

    Arrays and dynamic arrays · Linked lists · Stacks · Queues · Hash tables

    Skill: Data Structures

  3. 3

    Binary search and bits

    Short topics that turn a linear scan into a logarithmic one, and come up in screening rounds.

    Binary search · Bitwise operations

    Skill: Algorithms

  4. 4

    Trees and heaps

    Recursion on trees is where most candidates first practise breaking a problem into smaller ones.

    Binary search trees · Heaps and priority queues · Pre-, in- and post-order traversal · Breadth-first and depth-first search · Balanced trees (the idea, not the code)

    Skill: Data Structures

  5. 5

    Sorting

    Know how each one works and what it costs; you will rarely write one, but you will be asked to compare them.

    Selection and insertion sort · Merge sort · Quicksort · Heapsort

    Skill: Algorithms

  6. 6

    Graphs

    Trees are a special case of graphs, so the traversals you already know carry over.

    Directed and undirected graphs · Adjacency list vs adjacency matrix · Breadth-first and depth-first traversal

    Skill: Data Structures, Algorithms

  7. 7

    Recursion and dynamic programming

    The hardest common topic; it needs the recursion you practised on trees and graphs.

    Recursion and backtracking · Dynamic programming · Combinatorics and probability basics · NP-complete problems (recognise them)

    Skill: Algorithms

  8. 8

    Strings and tries

    String problems reuse arrays, hashing and trees, so they make a good review of everything above.

    String searching and manipulation · Tries

    Skill: Data Structures, Algorithms

  9. 9

    Testing and design patterns

    Interviewers watch how you test your own answer, and design questions lean on common patterns.

    Testing your own code · Common design patterns

    Skill: Unit Testing, Object-Oriented Programming

  10. 10

    How the machine runs your code

    Explains why one correct answer is faster than another, and gets asked in fundamentals rounds.

    How a program is compiled and run · Caches · Processes and threads · Networking basics · Floating point, Unicode and endianness

Leave for later

What a fresher can leave for later

The source marks these as optional for a first software engineering interview. System design is the big one: the source expects system design questions from candidates with 4 or more years of experience.

  • Self-balancing trees in detail (AVL, red-black, B-trees)
  • Skip lists and treaps
  • Bloom filters and HyperLogLog
  • Network flows
  • Fast Fourier transform
  • Compilers, compression and cryptography
  • Computational geometry and linear programming
Method

How to study each topic

  1. 1

    Pick one language for the interview and use it throughout. C++, Java and Python are the safe choices for large companies.

  2. 2

    Take one topic at a time: learn it, write your own implementation, then solve two or three problems on it before moving on.

  3. 3

    Come back to each topic later for two or three more problems. Practise while you learn, not after.

  4. 4

    Solve on paper first, state the time and space cost, test with a sample input, and only then type it.

  5. 5

    Do not memorise solutions. You are hired for applying what you know, not for reciting it.

  6. 6

    Review with a small set of flashcards. Too many cards turn into trivia you do not need.

Where this comes from

Sources

The topics, their order and what is optional are adapted from Coding Interview University by John Washam, licensed CC BY-SA 4.0. The wording is ours, and this roadmap is shared under the same licence. Its study plan links a video, course or book for every topic.

The core skills in section 1 come from Skilture's own Software Engineer role profile.

Find your real gap first

See which of the 8 core Software Engineer skills your resume shows before you plan the weeks.

Check my Software Engineer score

Interview coming up? Software Engineer interview questions →

Placements in a few weeks? The 8-week placement plan →

Is DSA your real gap?
60 seconds · No signup
Check now