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.

EasyTechnical
0 practiced
Explain the differences between adjacency list and adjacency matrix graph representations. For a graph representing user-item interactions in recommender systems (millions of users, sparse edges), which representation is more appropriate and why? Discuss time and space trade-offs for traversal, edge lookup, and adding/removing edges.
HardTechnical
0 practiced
You are given code that does nested matrix and vector computations in naive loops. Derive the time complexity and propose concrete memory-layout and algorithmic optimizations (e.g., blocking, using BLAS, changing row/column-major layout) to improve cache performance and CPU/GPU throughput in practice.
MediumTechnical
0 practiced
Implement a ring buffer (circular buffer) in Python to hold the last N streaming samples with push, pop_oldest, and snapshot operations. Explain how the structure avoids memory allocation churn and how you would make it safe for single-producer, single-consumer concurrency in a feature streaming system.
HardSystem Design
0 practiced
Design a scalable solution for maintaining per-feature counters where thousands of concurrent writers update counts in a hash table. Propose approaches to minimize contention (e.g., sharding, local aggregation, combiner threads, approximate counters), discuss correctness/accuracy trade-offs, and analyze latency and memory implications.
HardTechnical
0 practiced
Design a data structure to maintain a dynamically changing set of intervals (e.g., time windows) that supports insert, delete, and query all intervals overlapping a point or interval. Describe an interval tree or segment tree approach, provide complexity analysis, and explain how you would use this in time-based feature stores used by ML models.

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.