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.

EasyTechnical
24 practiced

Describe an algorithm to test whether an undirected graph is bipartite. Explain the algorithmic steps, complexity, and a practical use-case for an AI Engineer (for example constraint-checking in a labeling or pairing problem). Include handling of disconnected graphs.

HardTechnical
29 practiced

Describe the edge classifications produced by DFS on a directed graph: tree, back, forward, and cross edges. Give formal definitions based on DFS discovery and finish times, and explain how each type relates to cycle detection and topological sorting.

HardTechnical
30 practiced

Design algorithms and practical system approaches to maintain connectivity information (connected components) under dynamic edge insertions and deletions for an undirected graph. Discuss amortized complexities, use of union-find for insertions, difficulties with deletions, and practical engineering tradeoffs such as batching deletes or full rebuilds. Suggest a strategy suitable for near-real-time dashboards.

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.

MediumTechnical
27 practiced

Given a grid of '1's (land) and '0's (water), implement a Python function def num_islands(grid: List[List[str]]) -> int that counts the number of islands (connected components of 1s) using DFS or BFS. Include handling of edge cases such as empty grid and non-rectangular inputs. Discuss in-place marking vs using a visited matrix.

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.