InterviewStack.io LogoInterviewStack.io

Data Structures and Complexity Questions

Comprehensive coverage of fundamental data structures, their operations, implementation trade offs, and algorithmic uses. Candidates should know arrays and strings including dynamic array amortized behavior and memory layout differences, linked lists, stacks, queues, hash tables and collision handling, sets, trees including binary search trees and balanced trees, tries, heaps as priority queues, and graph representations such as adjacency lists and adjacency matrices. Understand typical operations and costs for access, insertion, deletion, lookup, and traversal and be able to analyze asymptotic time and auxiliary space complexity using Big O notation including constant, logarithmic, linear, linearithmic, quadratic, and exponential classes as well as average case, worst case, and amortized behaviors. Be able to read code or pseudocode and derive time and space complexity, identify performance bottlenecks, and propose alternative data structures or algorithmic approaches to improve performance. Know common algorithmic patterns that interact with these structures such as traversal strategies, searching and sorting, two pointer and sliding window techniques, divide and conquer, recursion, dynamic programming, greedy methods, and priority processing, and when to combine structures for efficiency for example using a heap with a hash map for index tracking. Implementation focused skills include writing or partially implementing core operations, discussing language specific considerations such as contiguous versus non contiguous memory and pointer or manual memory management when applicable, and explaining space time trade offs and cache or memory behavior. Interview expectations vary by level from selecting and implementing appropriate structures for routine problems at junior levels to optimizing naive solutions, designing custom structures for constraints, and reasoning about amortized, average case, and concurrency implications at senior levels.

MediumTechnical
101 practiced
Implement a Union-Find (disjoint-set) data structure in C++ with path compression and union by rank/size for grouping connected regions in a procedural level generator. Provide functions: find(x), unite(x,y), and an efficient way to maintain component sizes. Explain amortized time complexity.
EasyTechnical
84 practiced
Explain why appending elements to a dynamic array (for example std::vector in C++ or List<T> in C#) has amortized O(1) time complexity. Describe a typical growth strategy (e.g., doubling), perform an aggregate/amortized cost analysis for n appends, and relate how this behavior affects a mobile game that performs many small appends during frame-critical asset streaming. Comment on memory overhead and reallocation costs.
HardSystem Design
101 practiced
Design a spatial partitioning system (quadtree for 2D or octree for 3D) to accelerate collision queries and visibility culling in an open-world game. Define node layout, insertion, deletion, range-query algorithms, complexity bounds for queries and updates, and memory layout optimizations (node pool, compact arrays) to improve cache behavior. Discuss handling moving objects that cross node boundaries and trade-offs between loose vs strict partitioning.
MediumTechnical
75 practiced
Describe how you would maintain the top-k high scorers in a real-time multiplayer game as new scores arrive. Explain the min-heap approach (insertion cost, memory footprint), how to update when an existing player's score changes, and options to support efficient lookup of a player's rank. Suggest combinations of data structures to optimize for O(log k) updates and near-O(1) lookups.
HardSystem Design
72 practiced
Design a thread-safe object pool (for example in C# for Unity) to reuse frequently created game objects across multiple threads (asset loading, worker threads). Discuss lock-based vs lock-free designs, the data structure to store free objects (e.g., concurrent queue/stack), contention patterns, ABA problem, and safety when crossing managed/native boundaries.

Unlock Full Question Bank

Get access to hundreds of Data Structures and Complexity interview questions and detailed answers.

Sign in to Continue

Join thousands of developers preparing for their dream job.