/ \
[High-Level Design] ------ [Low-Level Design & OOD]
\ /
\ /
\ /
[Language & Core CS Fundamentals]
### Data Structures & Algorithms
The DSA evaluation focuses on testing your fundamental computer science fluency, logical reasoning, and ability to translate complex logic into code under pressure.
**Be ready to go over:**
- **Array and String Manipulation** – Two-pointer techniques, sliding window patterns, matrix traversals, and prefix sums.
- **Trees and Graphs** – Binary tree traversals (iterative and recursive), BST validation, Topological Sort (Kahn's Algorithm), BFS/DFS matrix traversals.
- **Dynamic Programming & Greedy Approaches** – Subsequence problems, knapsack variations, grid path optimization, and memoization techniques.
- **Advanced concepts (less common)** – Disjoint Set Union (DSU), Tree DP, Segment Trees, and $k$-th smallest pair distance via binary search over range limits.
**Example questions or scenarios:**
- "Given a grid, find the maximum product path from top-left to bottom-right."
- "Given an array of integers, find the minimum size subarray whose sum is greater than or equal to a target."
- "Implement Kahn's algorithm to solve task scheduling dependencies with cycle detection."
### Low-Level Design (LLD) & Object-Oriented Design
LLD rounds assess your capability to model real-world systems into extensible, modular, and maintainable software components.
**Be ready to go over:**
- **Design Patterns** – Practical implementation of Strategy, Factory, Observer, Singleton, Builder, and Decorator patterns.
- **SOLID Principles** – Applying single responsibility, open-closed, and dependency inversion principles to class designs.
- **Database Schema Design** – Entity-Relationship (ER) modeling, primary/foreign key constraints, indexing strategies, and normalization.
- **Advanced concepts (less common)** – Concurrency primitives, thread-safe dynamic state machines, and in-memory lock implementations.
**Example questions or scenarios:**
- "Design an In-Memory File System supporting commands like `ls`, `mkdir`, `addFileContent`, and `readFileContent`."
- "Model a Splitwise system complete with dynamic expense split strategies (Equal, Exact, Percentage) and user balance sheets."
- "Design a Meeting Scheduler (like Google Calendar) handling recurring events, participant invites, and room availability locks."
### High-Level Design (HLD) & Distributed Systems
HLD evaluations test your structural thinking when building enterprise-grade applications capable of handling traffic bursts, data consistency, and high availability.
**Be ready to go over:**
- **System Architecture** – Microservices vs. Monoliths, API Gateways, Load Balancing (Round Robin, Least Connections), and stateless service design.
- **Data Tier & Caching Strategy** – SQL (MySQL, PostgreSQL) vs NoSQL (MongoDB, Cassandra, Redis), read-through/write-through cache strategies, and DB sharding/partitioning.
- **Asynchronous Processing** – Message queues (Kafka, RabbitMQ) for decoupling long-running jobs, event-driven architectures, and dead-letter queues.
- **Advanced concepts (less common)** – Distributed locking (Redlock), multi-datacenter replication, dynamic distributed tagging indexes, and idempotency key handling.
**Example questions or scenarios:**
- "Architect an e-commerce inventory management system that prevents overselling during high-concurrency flash sales."
- "Design a high-throughput Tagging Engine that allows dynamic searching and filtering across millions of records."
- "Design a distributed file upload system similar to Dropbox handling chunking, retries, and S3 metadata storage."