Coding and Data Structures
Coding interviews measure your ability to produce correct, efficient, and readable code under time constraints. Expect hands-on problems where you must implement solutions—not just outline them—and defend your approach with complexity and edge-case analysis.
Be ready to go over:
- Arrays, Strings, Hashing: Sliding window, two pointers, frequency maps, substring/sequence problems
- Linked Lists, Stacks, Queues, Heaps: Reversal, cycle detection, k-way merge, priority queues
- Trees and Graphs: DFS/BFS traversals, LCA, topological sort, shortest paths, union-find
- Dynamic Programming and Greedy: Classic DP on arrays/strings, interval scheduling, partitioning
- Advanced concepts (less common): Streaming median, design a queue with stacks, memory-optimized DP, custom comparators
Example questions or scenarios:
- “Implement a queue using two stacks and analyze amortized complexity.”
- “Subarray Sum Equals K: first a brute-force, then optimize with prefix sums and hashing.”
- “Given n sorted arrays, merge into one sorted output with a k-way heap—discuss time and memory.”
System Design (High-Level and Low-Level)
Design sessions evaluate how you structure systems for scalability, reliability, and maintainability. You’ll scope requirements, define APIs, model data, discuss component interactions, and reason about trade-offs.
Be ready to go over:
- HLD: Service boundaries, data partitioning, caching, message queues, rate limiting
- LLD: Class design, interfaces, design patterns, thread-safety, immutability
- Performance & Ops: Latency budgets, backpressure, retries, observability, cost efficiency
- Advanced concepts (less common): Serverless pipelines (e.g., thumbnail service), consistent hashing, idempotency, schema evolution
Example questions or scenarios:
- “Design a serverless thumbnail generation service: ingestion, processing, storage, and delivery; cover retries and cold starts.”
- “Design a memory manager optimizing system calls—discuss pooling, fragmentation, and concurrency.”
- “Design shared_ptr in C++ with reference counting and thread-safety concerns.”
Core Computer Science Fundamentals
Core CS validates your engineering foundations—the things that make your solutions robust when the problem changes slightly.
Be ready to go over:
- OOP & Design Principles: Encapsulation, inheritance vs. composition, SOLID, interfaces
- OS & Concurrency: Processes/threads, synchronization, deadlock avoidance, scheduling basics
- Databases: SQL vs. NoSQL, indexing, transactions/ACID, isolation levels, query optimization
- Networking: HTTP/REST basics, TCP vs. UDP, latency/throughput trade-offs, caching layers
- Advanced concepts (less common): TLB/virtual memory intuition, thread pools, back-of-the-envelope capacity planning
Example questions or scenarios:
- “Explain how an index speeds up a query and when it can hurt.”
- “Traverse a tree in one thread and print in another—how would you synchronize?”
- “Discuss page replacement strategies (LRU vs. MRU) and when each fails.”
Language and Framework Expertise
Depth in your primary language/stack is expected. Interviewers often let you choose the language; then they go deep.
Be ready to go over:
- C++: Smart pointers (shared_ptr/unique_ptr), RAII, move semantics, memory layout
- Java: Collections, concurrency utilities, GC behavior, streams
- Python: Iterators/generators, async, memory characteristics, typing
- JavaScript/TypeScript & React: Event loop, closures, async patterns, custom hooks, HOCs, component design
- Advanced concepts (less common): API pagination mock, binary compatibility, ABI concerns
Example questions or scenarios:
- “Design shared_ptr from scratch—reference counting and thread-safety.”
- “Implement a React custom hook and a simple HOC; discuss when to use each.”
- “Mock an API with pagination and write a robust client that fetches all pages.”
Behavioral, Leadership, and Collaboration
Adobe expects ownership, candor, and customer empathy. Your stories should show how you simplify complex work, collaborate across disciplines, and raise the bar.
Be ready to go over:
- Ownership & Impact: Driving ambiguous projects, decision-making with trade-offs
- Teamwork: Handling disagreements, mentoring, code review philosophy
- Customer Focus: Translating feedback into roadmap or fixes, measuring success
- Advanced concepts (less common): Navigating re-scopes, managing outages, communicating delays
Example questions or scenarios:
- “Describe a time you re-architected a component for performance—what data informed the decision?”
- “Tell me about a disagreement in design review and how you resolved it.”
- “How do you ensure reliability when launching a new feature under deadline pressure?”