LearnThatStack Ace your next interview
Computer Science Fundamentals

Graphs.

Start free Change topic Change

Practise Graphs one question at a time. Answer out loud or in writing, get graded, and see exactly what you missed.

Try one question

What is a graph, and what real-world problems does it model?

The answer

A graph is a set of objects plus the relationships between them. The objects become nodes, and each relationship becomes an edge joining two of them. Whenever a problem is about connections, a graph is the natural fit.

Real-world examples include:

  • Road maps, where intersections connect by streets
  • Social networks, where people connect by friendship
  • The web, where pages connect by hyperlinks
  • Task schedules, where jobs connect by "must run before"

The payoff is that the same algorithms work on all of these. Questions like "can this node reach that one" or "what is the cheapest route" become the same search over any of them. That reuse is why graphs show up in routing, package managers and recommendation systems.

Example · what grading looks like
How do an adjacency list and an adjacency matrix store a graph?

“An adjacency list stores, for each vertex, a list of the vertices it connects to. An adjacency matrix is a V by V grid where the cell at row i, column j says whether there's an edge between those two vertices. I'd usually go with the list because it only takes O(V + E) space, while the matrix always takes O(V^2), so the list wins for sparse graphs, which is most real ones.”

Knew it

They have both structures right and the space tradeoff. They skip that a matrix answers edge-existence checks in O(1) versus a scan on a list, which is the usual reason to pick a matrix at all.

Missed: Doesn't mention that a matrix checks whether a specific edge exists in O(1), while a list needs a scan - this is the main reason to use a matrix.


Get your own answers graded

Sign up free. Your account comes with 50 credits for grading, and it remembers what you missed.

What it covers

All 60 questions

Each on its own page

Graph basics and terminology

What a graph models: vertices, edges, degree, direction, weights, paths, cycles and connectivity, and how to model a real network such as a social graph.

6 questions

  1. What is a graph, and what real-world problems does it model?
  2. What are vertices, edges, degree, and neighbors in a graph?
  3. How do directed and undirected graphs differ, and when do you use each?
  4. What does it mean for a graph to be weighted, and why does it matter?
  5. What is a path, a cycle, and a connected graph? Pro
  6. How would you model a social network as a graph? Pro

Graph representations

Adjacency lists, adjacency matrices and compressed sparse row: what each costs in memory, lookup speed and cache behavior.

5 questions

  1. How do an adjacency list and an adjacency matrix store a graph?
  2. When is an adjacency matrix worth its memory cost over a list? Pro
  3. Which representation makes checking if an edge exists fast, and why? Pro
  4. What is compressed sparse row, and why does it beat adjacency lists? Pro
  5. How does pointer chasing in adjacency lists hurt cache performance? Pro

BFS and DFS traversal

How breadth-first and depth-first search work, what they cost, when to pick each, how to track visited nodes and how to walk grids.

8 questions

  1. How does breadth-first search explore a graph, step by step?
  2. How does depth-first search explore a graph, step by step?
  3. When should you use BFS versus DFS on a graph?
  4. What do BFS and DFS cost in time and space, and why? Pro
  5. Why can recursive DFS crash where an iterative DFS does not? Pro
  6. Why must you track visited nodes, and what breaks without it? Pro
  7. How do you model a grid or maze as a graph? Pro
  8. How do you choose between a visited array and a hash set? Pro

Cycles and topological sort

Finding cycles, ordering DAGs with Kahn's algorithm or DFS, and scheduling tasks that depend on each other.

6 questions

  1. What is a topological sort, and when do you need one? Pro
  2. How do you detect a cycle in a graph? Pro
  3. How do Kahn's algorithm and DFS-based topological sort differ? Pro
  4. How does topological sort reveal whether a graph has a cycle? Pro
  5. How do you model task dependencies as a graph to schedule them? Pro
  6. How would you stream a topological order without loading everything? Pro

Connectivity and union-find

Connected and strongly connected components, bipartite checks, union-find and its optimizations, and articulation points and bridges.

7 questions

  1. What are connected components, and how do you find them? Pro
  2. When is union-find a better fit than DFS for components? Pro
  3. What are strongly connected components in a directed graph? Pro
  4. How do you check whether a graph is bipartite? Pro
  5. How do path compression and union by rank speed up union-find? Pro
  6. How do you maintain connectivity as edges are added over time? Pro
  7. How do you find articulation points and bridges in a graph? Pro

Shortest paths

BFS for unweighted and multi-source distances, Dijkstra, Bellman-Ford, negative edges and cycles, and how to choose between them.

8 questions

  1. How do you find the shortest path in an unweighted graph?
  2. Why does BFS stop working once edges carry weights? Pro
  3. How do you choose between BFS, Dijkstra, and Bellman-Ford? Pro
  4. Why does Dijkstra's algorithm break with negative edge weights? Pro
  5. When do you need Bellman-Ford instead of Dijkstra? Pro
  6. How does multi-source BFS work, and when do you use it? Pro
  7. How does Dijkstra's algorithm find shortest paths? Pro
  8. How does Bellman-Ford detect a negative-weight cycle in a graph? Pro

Minimum spanning trees

What a minimum spanning tree is, and how Kruskal's and Prim's algorithms build one and when to prefer each.

3 questions

  1. What is a minimum spanning tree, and where is it used? Pro
  2. How does Kruskal's algorithm use union-find to build an MST? Pro
  3. How does Prim's algorithm differ from Kruskal's, and when do you prefer each? Pro

Edge cases and testing

Disconnected graphs, self-loops, parallel edges, distance overflow, and how to test graph code against tricky inputs.

4 questions

  1. How do you handle disconnected graphs during a traversal? Pro
  2. How do self-loops and parallel edges affect your algorithms? Pro
  3. How do you guard against distance overflow in shortest-path code? Pro
  4. How do you test and debug a graph algorithm on tricky inputs? Pro

Advanced shortest paths

DAG relaxation, 0-1 BFS, A-star, bidirectional search, Floyd-Warshall, heap choice, k shortest paths and changing edge weights.

8 questions

  1. How do you find shortest paths on a weighted DAG efficiently? Pro
  2. Does it matter whether Dijkstra uses a binary heap or a Fibonacci heap? Pro
  3. How does A-star search speed up shortest path, and when does it fail? Pro
  4. When does bidirectional search help, and what does it require? Pro
  5. When is Floyd-Warshall the right all-pairs shortest-path choice? Pro
  6. How does 0-1 BFS beat Dijkstra on 0-or-1 weighted graphs? Pro
  7. How do you enumerate the k shortest paths between two nodes? Pro
  8. How do you find shortest paths when edge weights keep changing? Pro

Graphs at scale

Graphs too large for memory, billion-edge limits, huge implicit state spaces, parallel BFS and traversal while the graph is being updated.

5 questions

  1. How do you traverse a graph too large for memory? Pro
  2. How would you parallelize BFS, and what makes it hard? Pro
  3. How do you make graph traversal safe under concurrent updates? Pro
  4. How do you track visited state on a huge implicit graph? Pro
  5. What breaks in your graph code at a billion vertices and edges? Pro
Practice · Questions

All questions

Showing of 60
Beginner 14
01

What is a graph, and what real-world problems does it model?

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain

A graph is a set of objects plus the relationships between them. The objects become nodes, and each relationship becomes an edge joining two of them. Whenever a problem is about connections, a graph is the natural fit.

Real-world examples include:

  • Road maps, where intersections connect by streets
  • Social networks, where people connect by friendship
  • The web, where pages connect by hyperlinks
  • Task schedules, where jobs connect by "must run before"

The payoff is that the same algorithms work on all of these. Questions like "can this node reach that one" or "what is the cheapest route" become the same search over any of them. That reuse is why graphs show up in routing, package managers and recommendation systems.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

02

What are vertices, edges, degree, and neighbors in a graph?

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain

Vertices are the objects in a graph, and edges are the connections joining pairs of them. People also call vertices nodes, and edges links. A single edge always ties exactly two vertices together.

The neighbors of a vertex are the vertices directly joined to it by an edge. Its degree is how many edges touch it, which equals its neighbor count in a simple graph. In a directed graph, degree splits into in-degree and out-degree.

Degree tells you how connected something is. A social account with degree ten million is a hub you must handle carefully. Neighbors are what every traversal reads next, so storing them cheaply drives your whole performance. Calling a graph sparse means its average degree stays small, and most vertices have few neighbors.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

03

How do directed and undirected graphs differ, and when do you use each?

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain

Edges either point one way or go both ways, and that choice is the whole distinction. In an undirected graph an edge means a mutual relationship, like two friends. In a directed graph an edge goes from one vertex to another, like a one-way street or a follow.

The practical effect shows up in reachability. Undirected edges let you travel from either end to the other. Directed edges only let you move along the arrow, so a path from A to B never guarantees a path back.

Pick based on whether the relationship is symmetric.

  • Undirected for friendship, two-way roads and network cables
  • Directed for follows, web links, and dependencies like task ordering

Getting this wrong breaks logic without an error. If you model "depends on" as undirected, a topological sort becomes meaningless, and cycle checks stop making sense. Match the edge type to the real relationship first.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

04

What does it mean for a graph to be weighted, and why does it matter?

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain

A weighted graph attaches a number to every edge, standing for cost, distance or time. Some graphs use it for capacity instead. An unweighted graph treats all edges as equal, so every edge counts as one step. Weights change the question from "how few edges" to "how little total cost".

That matters because the cheapest route is often not the shortest by edge count. Three short highway segments can beat one long back road. Weights are miles or minutes on a map, and latency or price on a network.

Breadth-first search finds fewest-edge paths, but it ignores weights and gives wrong answers once they exist. You then need a weight-aware method like Dijkstra. So first ask whether edges carry a real cost, because that decides which algorithm is correct.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

05

How do an adjacency list and an adjacency matrix store a graph?

Visual

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain
Visual

An adjacency list keeps, for each vertex, a list of its neighbors. An adjacency matrix keeps a grid with one row and one column per vertex. The cell at row i, column j marks whether an edge joins those two vertices.

list:   A -> [B, C]
matrix: A row = [0, 1, 1, 0]

These two layouts dominate, and they trade memory for lookup speed. A list uses space proportional to O(V + E), which is tiny when edges are few. A matrix always uses O(V^2), even for a nearly empty graph.

Lookup speed favors the matrix. Checking whether a specific edge exists is O(1) in a matrix but needs a scan of the list.

Most real graphs are sparse, so adjacency lists are the default choice. Use the matrix only when the graph is small or dense, or when you test single edges constantly.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

06

How does breadth-first search explore a graph, step by step?

Visual

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain
Visual

Breadth-first search fans out in layers, visiting everything one step away before anything two steps away. You keep a queue of vertices to process and a visited set so you never revisit. Start by marking the source visited and putting it in the queue.

Then repeat until the queue empties:

  • Remove the front vertex
  • Look at each of its neighbors
  • For any unvisited neighbor, mark it visited and add it to the back

Because the queue is first-in first-out, closer vertices always come out first. That is what produces the ring-by-ring order. Each vertex enters the queue once and each edge is examined once, so the cost is O(V + E).

This layered order is exactly why BFS finds the fewest-edge path in an unweighted graph. The first time you reach a vertex, you reached it by the shortest number of hops.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

07

How does depth-first search explore a graph, step by step?

Visual

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain
Visual

Depth-first search follows one path as far as it can before backing up. You pick a start, mark it visited, then move to an unvisited neighbor and repeat. When a vertex has no unvisited neighbors left, you backtrack to the previous one and try its other branches.

You can drive this with recursion, which uses the call stack, or with an explicit stack.

function dfs(v, seen) {
  seen.add(v);
  for (const n of neighbors(v))
    if (!seen.has(n)) dfs(n, seen); // recurse deeper
}

The visited set stops you from looping forever on cycles. DFS visits each vertex once and scans each edge once, so it runs in O(V + E) time, the same as BFS.

That depth-first order makes DFS natural for whole-graph questions, such as detecting cycles, finding connected components and producing a topological order. It suits problems about the graph's overall structure rather than the nearest distance.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

08

When should you use BFS versus DFS on a graph?

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain

Use BFS when nearness matters and DFS when the graph's structure matters. Both visit every reachable vertex in O(V + E) time, so the choice is about order and memory, not raw speed. BFS explores by distance, and DFS explores by depth.

BFS finds the fewest-edge path, works well for "closest match" and level-by-level problems, and suits shallow, wide searches. DFS fits cycle detection, connected components and topological sort, where you want to fully explore each branch.

Memory is the other tiebreaker:

  • BFS holds a whole frontier, which can be huge on wide graphs
  • DFS holds only the current path, but recursion can overflow on very deep graphs

So if you care about shortest hops, or the answer is likely nearby, use BFS. If you care about the graph's overall shape, use DFS.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

09

How do you find the shortest path in an unweighted graph?

Visual

Beginner ·

Answer it yourself first - out loud, or typed below.

How should your speech become text?

Listening… your words appear above as you speak - tap Stop when you're done.

Recording · cr - tap Stop & transcribe when you're done.

Transcribing with AI…

Voice:

Keep going - a few more words and AI can grade it.

Last attempt -

Your answer

Re-explain
Visual

Plain breadth-first search solves this directly, with no fancier algorithm needed. Because BFS reaches vertices in order of hop count, the first time it touches a vertex is along a fewest-edge path. Every edge counts as one step, so fewest edges means shortest.

To recover the actual route, record where you came from. When you first visit a neighbor, store the vertex you arrived from as its parent. Once you reach the target, walk parent pointers backward to rebuild the path, then reverse it.

parent[neighbor] = current; // set on first visit

The whole thing runs in O(V + E) time and space.

The one catch is that this only holds when every edge has the same cost. Add real weights and fewest edges no longer means cheapest, so BFS gives wrong distances.

Rewriting in plainer words…

This answer doesn't lend itself to a diagram - it reads best . No credits were charged.

Why there's no diagram: “”

The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓

Related concept

Tailored explanation · switch back to · ·
What should the new diagram focus on?
How well did you know this?
AI:

10

What is a path, a cycle, and a connected graph?

Part of Pro
11

What is a topological sort, and when do you need one?

Part of Pro Visual
12

What are connected components, and how do you find them?

Part of Pro
13

What do BFS and DFS cost in time and space, and why?

Part of Pro
14

What is a minimum spanning tree, and where is it used?

Part of Pro
Intermediate 26
15

How do you detect a cycle in a graph?

Part of Pro Visual
16

When is an adjacency matrix worth its memory cost over a list?

Part of Pro
17

Which representation makes checking if an edge exists fast, and why?

Part of Pro
18

Why can recursive DFS crash where an iterative DFS does not?

Part of Pro
19

Why does BFS stop working once edges carry weights?

Part of Pro
20

How do you choose between BFS, Dijkstra, and Bellman-Ford?

Part of Pro
21

Why does Dijkstra's algorithm break with negative edge weights?

Part of Pro Visual
22

When do you need Bellman-Ford instead of Dijkstra?

Part of Pro
23

How do Kahn's algorithm and DFS-based topological sort differ?

Part of Pro Visual
24

How does topological sort reveal whether a graph has a cycle?

Part of Pro Visual
25

Why must you track visited nodes, and what breaks without it?

Part of Pro Visual
26

When is union-find a better fit than DFS for components?

Part of Pro
27

What are strongly connected components in a directed graph?

Part of Pro Visual
28

How do you check whether a graph is bipartite?

Part of Pro Visual
29

How do you model a grid or maze as a graph?

Part of Pro
30

How do you find shortest paths on a weighted DAG efficiently?

Part of Pro Visual
31

How does multi-source BFS work, and when do you use it?

Part of Pro Visual
32

How do you model task dependencies as a graph to schedule them?

Part of Pro Visual
33

How would you model a social network as a graph?

Part of Pro
34

How do you handle disconnected graphs during a traversal?

Part of Pro
35

How do self-loops and parallel edges affect your algorithms?

Part of Pro
36

How does Dijkstra's algorithm find shortest paths?

Part of Pro Visual
37

How does Bellman-Ford detect a negative-weight cycle in a graph?

Part of Pro
38

How do path compression and union by rank speed up union-find?

Part of Pro Visual
39

How does Kruskal's algorithm use union-find to build an MST?

Part of Pro Visual
40

How does Prim's algorithm differ from Kruskal's, and when do you prefer each?

Part of Pro Visual
Expert 20
41

How do you traverse a graph too large for memory?

Part of Pro
42

What is compressed sparse row, and why does it beat adjacency lists?

Part of Pro Visual
43

How does pointer chasing in adjacency lists hurt cache performance?

Part of Pro Visual
44

How would you parallelize BFS, and what makes it hard?

Part of Pro Visual
45

How do you make graph traversal safe under concurrent updates?

Part of Pro
46

Does it matter whether Dijkstra uses a binary heap or a Fibonacci heap?

Part of Pro
47

How does A-star search speed up shortest path, and when does it fail?

Part of Pro Visual
48

When does bidirectional search help, and what does it require?

Part of Pro
49

When is Floyd-Warshall the right all-pairs shortest-path choice?

Part of Pro
50

How do you track visited state on a huge implicit graph?

Part of Pro
51

How does 0-1 BFS beat Dijkstra on 0-or-1 weighted graphs?

Part of Pro Visual
52

How do you guard against distance overflow in shortest-path code?

Part of Pro
53

How do you maintain connectivity as edges are added over time?

Part of Pro
54

What breaks in your graph code at a billion vertices and edges?

Part of Pro
55

How do you find articulation points and bridges in a graph?

Part of Pro Visual
56

How do you enumerate the k shortest paths between two nodes?

Part of Pro Visual
57

How do you find shortest paths when edge weights keep changing?

Part of Pro Visual
58

How would you stream a topological order without loading everything?

Part of Pro
59

How do you choose between a visited array and a hash set?

Part of Pro
60

How do you test and debug a graph algorithm on tricky inputs?

Part of Pro

No matches

Try a different filter or search term.

Know someone prepping for Graphs? Send them this set.
Quick recap

Graphs in pictures.

A quick recap of Graphs in 27 short animated pictures, one idea at a time. About 7 min to get the whole topic back in your head before you walk in. Pause any picture, slow it down, or step through it.

Pro The first chapter is free to play. The other 25 pictures come with Pro.

Get Pro · $10/mo
Pro · $10/mo

51 of 60 Graphs answers are in Pro.

Full answers, code samples, and AI explanations that go simpler or deeper. Cancel anytime.

  • Full answers + code
  • AI explanations, simpler or deeper
  • 1,000 AI credits / month
  • Cancel anytime

Change topic

Pick a different technology or stack. Your current topic stays put until you choose a new one.

Technologies
No technologies match “”.
Cross-cutting topics
No topics match “”.
By role
Stacks & frameworks

MEAN

MongoDB, Express, Angular, Node.js

MERN

MongoDB, Express, React, Node.js

LAMP

Linux, Apache, MySQL, PHP

Django

Python Full-Stack Development

Ruby on Rails

Convention over Configuration

Serverless on AWS

Serverless Architecture on AWS

Flutter Mobile

Flutter Cross-Platform Mobile Development

Spring Boot

Enterprise Java Development

.NET

Microsoft Ecosystem

Vue

Vue.js, Vite, TypeScript, Tailwind, Node.js

Go Backend

Golang, gRPC, PostgreSQL, Redis, RabbitMQ

FastAPI

Python, FastAPI, SQLAlchemy, PostgreSQL

React Native

React, TypeScript, Redux, Firebase

iOS Native

Swift, SwiftUI, UIKit, Firebase

Android Native

Java, Jetpack Compose, Firebase

DevOps / Platform

Docker, Kubernetes, Terraform, CI/CD

AI Engineer

LLMs, RAG, Agents, Evals

AI-Powered Developer

Claude Code, Copilot, Agentic Workflows

Core SWE Interview Prep

Data structures, algorithms, OS, concurrency, networking, git