Graphs and Graph Algorithms Questions

Graph representations (adjacency list and adjacency matrix) and the traversal algorithms applied to general, non-tree structures: BFS, DFS, topological sort (Kahn's algorithm and DFS-based), shortest paths (Dijkstra, Bellman-Ford, A*), minimum spanning trees, cycle detection, connected components, and union-find. Covers modeling a problem as a graph even when the underlying data is not obviously graph-shaped, such as state-space search, an implicit graph over strings or grid cells (for example Word Ladder), or a task-dependency graph, and implementing these traversals with a hash map or hash set as the storage vehicle (adjacency map, visited set, memoization table), not the subject being tested. The graded skill is traversal, ordering, connectivity, or shortest-path reasoning over nodes and edges. This topic does not own: traversal, reconstruction, or serialization of a single-rooted binary tree (preorder, inorder, postorder, or level-order implementation, rebuilding a tree from traversal arrays, lowest common ancestor, binary search tree validation), which belongs to binary trees and binary search trees even though a tree is technically a graph; hash table internals such as hash function design, collision resolution, and load factor and resizing, which belong to hashing and hash tables; and deriving or comparing algorithmic complexity across graph algorithms without implementing them, such as comparing the time complexity of BFS, DFS, Dijkstra, and A*, which belongs to time and space complexity analysis. One of the highest-signal areas in senior coding interviews.

MediumTechnical
25 practiced

Implement an iterative DFS in Python to check whether there exists a path between two nodes in a directed graph. Use early exit to improve performance, handle missing nodes gracefully, and discuss stack size and worst-case complexity.

EasyTechnical
20 practiced

For graph algorithms, explain practical differences between using a FIFO queue, a stack, and a priority queue. Provide SRE-relevant examples when each should be used (e.g., BFS for unweighted shortest path, DFS/backtracking, and priority queue for Dijkstra or A*), and discuss performance implications.

MediumTechnical
24 practiced

Write a Python function to perform iterative deepening depth-first search (IDDFS) from a start node to find a target node in a graph. Explain when IDDFS is preferable to BFS or DFS and provide complexity analysis. Relate to tree-search strategies used in planning with depth limits.

MediumTechnical
21 practiced

Formally derive the time and space complexity of BFS and DFS on graphs represented as (a) adjacency list and (b) adjacency matrix. Show how the number of edge inspections leads to O(V+E) for adjacency lists and O(V^2) for adjacency matrices. Discuss directed vs undirected differences and assumptions about visiting implementation details (e.g., iterators).

HardTechnical
27 practiced

Implement a Python function that enumerates all simple paths between two nodes up to maximum length k in a directed unweighted graph represented as adjacency dict. Return a list of paths (each path is a list of nodes). Discuss worst-case complexity and production safeguards you'd add to avoid explosion of results.

Unlock Full Question Bank

Get access to all Graphs and Graph Algorithms interview questions and detailed answers.

Sign in to Continue

Join thousands of developers preparing for their dream job.