System Design interviews are the biggest hurdle between you and a Senior Software Engineer role at top-tier tech companies like Google, Amazon, and Uber. With average salaries for System Architects reaching ₹35 Lakhs (India) or $180k+ (US), mastering scalability is non-negotiable.
This guide compiles the Top 50+ Solved System Design Interview Questions for 2026. From core concepts like Load Balancing and CAP Theorem to complex real-world scenarios like “Design WhatsApp” or “Design Netflix,” we have organized everything you need to crush your next interview.
1. What is the difference between Horizontal and Vertical Scaling?
| Feature | Horizontal Scaling (Scaling Out) | Vertical Scaling (Scaling Up) |
|---|
| Definition | Adding more servers (nodes) to the existing pool. | Adding more power (CPU, RAM) to an existing server. |
| Limit | Theoretically unlimited (connect infinite servers). | Limited by hardware capacity (a single machine has limits). |
| Downtime | None (add servers while running). | Requires downtime (restart to upgrade hardware). |
| Use Case | Distributed systems (Cassandra, MongoDB). | Monolithic apps (MySQL, heavy computation). |
2. What does load balancing entail, and why is it crucial for system design? [Asked in Google]
Load Balancing is a way of distributing the incoming traffic on a network across multiple servers, such that no server is overwhelmed with traffic. It is like a traffic cop sitting in front of your servers.
Why is it crucial?
- Prevents Overloading: This helps in maintaining stability in the application.
- High Availability: When one server is down, the load balancer will distribute the workload to the remaining online servers.
- Scalability: This helps you scale up or scale down servers without affecting the end user.
3. What is the CAP theorem, and how does it apply to the design of systems? [Asked in Amazon]
The CAP theorem states that in a distributed system, you can have two of the following three guarantees, but not all three:
- Consistency (C): Every read sees the most recent write or an error.
- Availability (A): Every request will get a non-error response, but without the guarantee of the most recent write.
- Partition Tolerance (P): The system continues to operate even if an arbitrary number of messages are dropped or delayed by the network.
Trade-Off: Since network partitions (P) are a certainty in any distributed system, architects can only choose between consistency (CP) and availability (AP). C and A cannot coexist during a network partition.
Table of Contents:
Module 1: The Building Blocks (Core Concepts)
4. How important is System Design, and what does it entail?
System Design is the process of defining the architecture, components, modules, interfaces, and data for a system to satisfy specific requirements. It serves as the bridge between the analysis of the requirements and the actual implementation.
Why is it crucial?
- Scalability: Guarantees the system can support growth from 1,000 to 1,000,000 users.
- Reliability: Provides strategies (such as replication) to ensure the system remains available during failures.
- Maintainability: Makes the system easier to debug, update, and extend.
5. What fundamental System Design principles are there?
Templates for system design are common in Software Engineering. These templates typically include the following components:
6. What is the difference between Synchronous and Asynchronous communication?
| Feature | Synchronous Communication | Asynchronous Communication |
|---|
| Process | Involves sending and receiving messages immediately. | Refers to an exchange where senders transmit messages without expecting a prompt reply. |
| Sender Behavior | Requires the sender to patiently wait for a response before proceeding. | The sender does not wait for a response and can proceed to the next task. |
| Usage | Used when real-time interaction is required. | Commonly used when real-time synchronization is indispensable. |
7. What is the difference between Stateful and Stateless systems?
| Feature | Stateful System | Stateless System |
|---|
| Dependency | Each request depends on earlier requests (context is stored). | Requests are independent of one another (no context stored). |
| Complexity | Can be more complicated and demand more management. | Typically simpler to develop. |
| Scalability | Harder to scale horizontally. | Easier to scale. |
8. Difference between Asynchronous and Synchronous Systems (and when to use each)?
| Feature | Synchronous Systems | Asynchronous Systems |
|---|
| Workflow | Pause at each step until they’ve heard back. | Allow the sender to progress to the next step without waiting for a reply. |
| Dependency | The sender requires the recipient’s response as a prerequisite for the next operation. | Do not rely on immediate responses. |
| Ideal Use Case | More apt for real-time systems with strict time frames. | Better suited for situations where response time is not of great importance, such as batch processing. |
Module 2: Architecture and Patterns
9. What is the difference between Microservices and Monolithic Architecture? [Asked in Amazon]
| Feature | Monolithic Architecture | Microservices Architecture |
|---|
| Structure | The entire program is created as one standalone unit. | Breaks the application into autonomous services that interact via APIs. |
| Development | A one-size-fits-all strategy is easier to design and implement initially. | Offers more flexibility, agility, and maintainability for complex systems. |
| Scalability | Harder to scale individual components. | Each service can be scaled independently. |
For detailed answer, click here: Monolithic vs Microservices Architecture: Key Differences
10. What is the difference between RESTful API and SOAP API?
| Feature | RESTful API | SOAP API |
|---|
| Protocol | Architectural design that uses HTTP methods (GET, POST, PUT, DELETE). | Uses XML-based messaging protocol. |
| Resource Access | Resources are identifiable by URLs. | Accesses resources via exposed operations. |
| Performance | Faster, lighter, and easier to implement. | Can be heavier due to XML parsing and strict standards. |
For more detailed answer, click here: REST vs SOAP: Difference between REST and SOAP APIs
11. What is DevOps, and how does system design relate to it?
To improve software delivery and operations, a set of practices called DevOps brings together development and IT operations. Teams can increase their capacity for software system deployment and maintenance by including DevOps practices in their system architecture.
12. How does the concept of a container relate to system design?
Code, libraries, and dependencies are all contained in a small, standalone executable package known as a container. Application deployment and administration across many settings and platforms are made simpler by the use of containers.
13. Why is Serverless architecture employed in system design, and what does it mean?
A serverless architecture is one in which the serverless platform of a cloud provider, such as AWS Lambda or Azure Functions, is used to operate the application logic. Serverless architectures concentrate on creating and deploying code while reducing the complexity of the infrastructure.
14. What is the difference between a Container and a Virtual Machine?
| Feature | Container | Virtual Machine (VM) |
|---|
| Definition | A small, independent executable package containing the app and dependencies. | A software simulation of a physical computer with its own OS and hardware resources. |
| Architecture | Shares the host OS kernel (Lightweight). | Runs a full Guest OS (Heavyweight). |
| Key Benefit | Offers more agility and scalability. | Offers higher isolation and security. |
15. What is the difference between Service-Oriented Architecture (SOA) and other architectures?
Service-Oriented Architecture (SOA) is defined by its capability to build flexible and scalable software components. Because of the loose coupling of its components, SOA can survive beyond a typical monolithic or microservice architecture.
| Feature | Service-Oriented Architecture (SOA) | Other Architectures (Monolith/Microservices) |
|---|
| Structure | Allows the exchange of data in the form of independent services. | Often tightly coupled (Monolith) or granularly independent (Microservices). |
| Flexibility | Grants developers a new level of power and control to modify data arrangement. | May require redeployment of larger units or complex orchestration. |
| Efficiency | Stands out as the architecture with higher complexity but more efficient systems. | Varies; Monoliths are simpler but harder to scale. |
16. What is a Circuit breaker, and how does it help improve system reliability? [Asked in Netflix]
A Circuit breaker is a pattern that aims to improve system reliability by monitoring the health of a service. When a failure is detected, the breaker trips, preventing any further requests from being sent to the failed system. This technique helps avoid cascading breakdowns and enables graceful degradation in the face of failures.
17. What is the difference between Monorepo and Polyrepo? [Asked in Google]
A polyrepo is a combination of different types of repositories, allowing for different source codes for different projects, unlike a monorepo, which is a single repository for all projects.
| Feature | Monorepo | Polyrepo |
|---|
| Definition | A sole repository for all projects. | An amalgamation of contrasting repositories for separate projects. |
| Dependencies | Best for larger organizations with interdependent projects. | Code within every repository holds its own complexities. |
| Usage | Preferred by tech giants for code sharing. | Preferred by smaller firms or free-standing projects. |
Module 3: Data and Storage Strategy
18. What common methods of database replication are there?
The process of transferring data from one data store to another for backup, disaster recovery, or scaling purposes is known as database replication. Here are a few methods typically employed for database replication:
- Master-Slave Replication: One data store server serves as the master, where all changes are made. The slave servers then display the modifications.
- Master-Master Replication: Changes are made on any of the servers, and multiple servers act as both master and slave. The remaining servers are then updated with the updates.
- Multi-Master Replication: This type of replication uses a lot of servers that can act as both masters and slaves, with each server having the ability to create changes that are reflected on other servers.
19. What standard caching techniques are used in system design?
In order to increase functionality, caching is the practice of saving frequently accessed material in a cache. Some of the systems frequently utilized in system design for caching are listed below:
- In-Memory Caching: Information is kept in memory for quick access to frequently used information.
- Distributed Caching: Scalability and fault tolerance are provided by holding data in a shared cache across numerous servers.
- Content Delivery Networks (CDNs): CDNs store frequently accessed data on servers dispersed throughout the world, providing clients based in various locations with instant access to data.
20. How do you handle “Thundering Herd” problems in Caching? [Asked in Facebook]
The “Thundering Herd” issue is a situation where many processes or users concurrently try to acquire a key that has recently expired from the cache. This leads to a huge spike in requests to the database, which can result in a crash.
Common Solutions:
- Request Coalescing: The cache server (Varnish or Nginx) combines multiple requests to the same key into a single request to the backend.
- Probabilistic Early Expiration: The cache item is refreshed before it actually expires, but with a random probability factor.
- Locking: The process that encounters a cache miss will acquire a lock to update the cache, while others will wait or use stale values.
21. What is the difference between SQL and NoSQL databases?
| Feature | SQL (Relational) | NoSQL (Non-Relational) |
|---|
| Structure | Structured schema (Tables, Rows, Columns). | Flexible schema (Key-Value, Document, Graph). |
| Scalability | Vertical Scaling (Add more CPU/RAM). | Horizontal Scaling (Add more servers/Sharding). |
| Consistency | Strong Consistency (ACID properties). | Often Eventual Consistency (BASE properties). |
| Examples | MySQL, PostgreSQL, Oracle. | MongoDB, Cassandra, Redis. |
22. What is the difference between a Caching Server and a CDN?
| Feature | Caching Server | Content Delivery Network (CDN) |
|---|
| Primary Location | Keeps data in memory (RAM) on specific servers. | Stores data on servers dispersed throughout the world. |
| Function | Used to improve performance for all users (often backend processing). | Primarily used to serve static content (images, videos) to faraway users. |
| Latency | Reduces database load. | Reduces network latency by being geographically closer to the user. |
23. Why is Sharding used in database design?
In order to improve scalability, a database may be “sharded,” or split into a number of smaller databases.
In database design, it is used to:
- Spread the data across several servers.
- Speed up queries.
- Improve fault tolerance.
24. What is a Distributed Database, and why is it used?
A database that is spread over a variety of servers or nodes is called a distributed database.
Why utilize it?
- Databases are scaled: They can handle more data than a single computer can store.
- Enhanced performance: Support for parallel processing of queries.
- Reliability: Fault tolerance and disaster recovery capabilities improve.
25. What are standard Database Indexing methods?
Indexing minimizes the number of disc accesses required to obtain data, which in turn maximizes performance.
Common Methods:
- B-Tree Indexing: Used for Range Searches.
- Hash Indexing: Used for equality queries.
- Bitmap Indexing: Used for low cardinality data (e.g., Gender – Male/F)
26. What is the difference between Horizontal and Vertical Partitioning?
| Feature | Horizontal Partitioning (Sharding) | Vertical Partitioning (Normalization) |
|---|
| Definition | Creating multiple tables sharing the same schema (splitting by rows). | Dividing the table into multiple tables with fewer columns (splitting by columns). |
| Data Distribution | Allows data to spread across various servers, permitting scalability. | Indicates the data held therein changes (domain separation). |
| Performance | Improves write throughput and storage capacity. | Useful for optimizing query performance by reducing the amount of data accessed each time (I/O reduction). |
Module 4: Distributed System Challenges
27. What is a Message Queue, and why is it used? [Asked in Uber]
A “message queue” is a mechanism that allows two or more programs to exchange messages. Such decoupling of application components makes it easier to create scalable, maintainable, and reliable systems.
Why employ them?
- Asynchronous Interaction: The application can interact asynchronously through a message queue.
- Non-Blocking: The sender does not need to wait for the receiver’s response.
- Reliability: Guarantees that data does not get lost in case the service being consumed goes down.
28. What is the difference between Push-based and Pull-based Message Queues?
| Feature | Push-based System | Pull-based System |
|---|
| Delivery Mechanism | Messages are sent immediately to the recipient by the sender (broker). | The recipient actively retrieves (polls) messages from the sender. |
| Ideal Use Case | Ideal for real-time production systems (low latency). | Used in batch processing scenarios where consumers process at their own pace. |
| Flow Control | The sender controls the rate (which can overwhelm slow consumers). | The consumer controls the rate (prevents being overwhelmed). |
29. What is a Distributed System, and what are the challenges?
A distributed system is a system composed of many parts, often running on many servers or nodes, that appear to behave as a single coherent system to the user.
Typical Difficulties:
- Security: Managing access and data integrity across multiple nodes.
- Fault Tolerance: The system works even when some of the nodes fail.
- Distributed Coordination: Managing state and consistency across the network.
30. What is the purpose of a Content Delivery Network (CDN)?
A Content Delivery Network, or CDN, is a network used to improve access times from remote locations by storing information on servers located around the world.
Key Purposes:
- Reduce Latency: Improve the latency of users at different locations through the use of the nearest edge server.
- Increase Speed: Load images, videos, and static assets faster.
- Reliability: Reduce load on the primary origin server.
31. What is the difference between Shared-Everything and Shared-Nothing Architecture?
| Feature | Shared-Everything Architecture | Shared-Nothing Architecture |
|---|
| Resource Management | All nodes pool their resources, including memory and storage, into a single pool. | Each node in the system has its own resources (CPU, RAM, Disk). |
| Independence | Nodes are tightly coupled; contention for locks is common. | Nodes run independently of the other nodes. |
| Scalability | Generally employed in parallel processing systems (harder to scale linearly). | Frequently used in distributed systems (easier to scale horizontally). |
Module 5: Real-World Design Scenarios
32. Design a URL Shortener (like TinyURL) [Asked in Microsoft]
This system works by taking a long URL, such as (e.g., https://www.google.com/search?q=system+design), and shortening it into a shorter alias (e.g., http://tiny.url/j9b1).
Key Design Decisions:
- Hashing Algorithm: Base62 Encoding (A-Z, a-z, 0-9) will be used to generate a 7-character string. This will provide us with ~3.5 trillion possible combinations
- Database Choice: A NoSQL Key-Value database like DynamoDB or Riak is a good choice because the data model is simple (ShortURL-LongURL).
- Collision Handling: Implementing a Key Generation Service (KGS) to generate unique keys and assign them to servers to ensure that two different users do not get the same short URL.
A chat system needs to support real-time two-way communication and also needs to store messages.
Key Design Decisions:
- Communication Protocol: WebSockets will be used for communication. This is because, unlike HTTP, WebSockets provide instant communication from the server to the client.
- Storage (Chat History): A Wide Column Store like Cassandra or HBase is appropriate for this purpose, as it can manage massive write throughput and query messages within a specific time range.
- User Status: Use a Presence Service with a heartbeat mechanism to determine whether a user is “Online” or “Last Seen”.
34. Design a Rate Limiter [Asked in Stripe]
A Rate Limiter can limit the number of requests made by a user to an API over a certain period of time, e.g., “10 requests per second.” This helps to prevent abuse and Denial of Service attacks.
Key Design Decisions:
- Algorithm:
- Token Bucket: Allows bursts of traffic for a short period of time.
- Leaky Bucket: Guarantees a fixed output rate.
- Fixed Window Counter: This is simple, but it can allow double the limit at the edges of the window.
- Storage: Redis (In-Memory Cache) will be used for storing counters, as database operations on a disk-based database take too long for every request to check the limits.
- Placement: The Rate Limiter can be placed at the API Gateway or Load Balancer level, e.g., Nginx, to prevent malicious traffic before it hits your backend servers.
35. Design a Web Crawler [Asked in Google]
A Web Crawler (also known as a Spider) is a program that crawls the web, usually for the purpose of Web Indexing, i.e., Google Search.
Key Design Decisions:
- Seed URLs: We begin with a list of known high-quality URLs (e.g., news sites, Wikipedia).
- URL Frontier: A priority queue, typically implemented with Kafka or RabbitMQ, which holds URLs to be crawled. It maintains politeness and priority.
- HTML Parser and Deduplication: The crawler has to retrieve the page, parse it to get new links, and verify if the page has been previously crawled using a Bloom Filter or Checksum.
- Robots.txt: The bot must respect the robots.txt file of every site to prevent legal problems and being banned.
This is a system for predicting the rest of a word or sentence as the user types, like a Google Search Bar.
Key Design Decisions:
- Data Structure: Trie (Prefix Tree). This data structure will allow us to retrieve words that have a common prefix. For example, typing “sys” will allow us to retrieve “system” and “systolic”.
- Top-K Heavy Hitters: Since it is impossible to save all queries, only the top 5-10 frequent queries can be saved in each node of the Trie.
- Caching: Browser Caching and Server Side Caching using Redis can be used to cache the results of frequently searched prefixes like “iphone” so that the Trie doesn’t have to be accessed every millisecond.
37. Design a Notification System [Asked in Amazon]
A system to send emails, SMS, and Push Notifications to millions of users.
Key Design Decisions:
- Pluggable Architecture: The system needs to accommodate multiple service providers (like APNS for iOS, FCM for Android, SendGrid for Email, Twilio for SMS, etc.) without changing the core logic.
- Message Queues: A queue, like RabbitMQ, can be used to decouple the sending of the notification request from the actual sending of the notification. This prevents the system from crashing due to a burst of notifications, such as breaking news.
- Deduplication and Rate Limiting: Avoid spamming users by verifying whether a similar notification was sent recently.
38. Design a Video Streaming Service (Netflix) [Asked in Netflix]
This system enables millions of users to stream high-definition videos in parallel with minimal buffering.
Key Design Decisions:
- Content Delivery Network (CDN): The most critical component. The videos are broken down into chunks and cached on edge servers near the user (e.g., Open Connect for Netflix).
- Transcoding: Video files stored in raw video formats are enormous in size. These need to be transcoded into different formats, say H.264 and VP9, and different video qualities like 360p, 720p, and 4K.
- Adaptive Bit Rate Streaming: In this method, the player will automatically switch between different qualities depending on the current bandwidth of the user. (e.g., HLS, DASH, etc.)
Generating unique IDs in a single database is easy (auto-increment). But in a distributed system with hundreds of database shards, you cannot rely on a single central database.
Key Design Decisions:
- UUID (Universally Unique Identifier): Simple (128-bit), but too long and not sortable by time. Indexing performance is poor.
- Ticket Server: A centralized database that issues IDs. It becomes a Single Point of Failure (SPOF).
- Snowflake Approach (Twitter): The best solution. Use a 64-bit integer composed of:
- Timestamp (41 bits): Allows sorting by time.
- Machine ID (10 bits): Identifies the worker node.
Sequence Number (12 bits): Allows generating 4096 IDs per millisecond per node.
40. Estimate the storage needed for Instagram for 1 year
These types of “estimation” questions test your ability to work with large numbers and make reasonable assumptions.
Assumptions:
- Active Users: 500 million daily active users.
- Upload Rate: 10% of users upload 1 photo per day.
- Photo Size: The average photo size is 2 MB.
Calculation:
- Daily Uploads: $500,000,000 \text{ users} \times 10\% = 50,000,000 \text{ photos/day}$
- Daily Storage: $50 \text{ million} \times 2 \text{ MB} = 100,000,000 \text{ MB} = 100 \text{ TB/day}$
- Yearly Storage: $100 \text{ TB} \times 365 \text{ days} = 36,500 \text{ TB}$ or ~36.5 Petabytes (PB) per year.
(Note: This excludes replication, backups, and metadata storage, which would likely triple the requirement).
Conclusion
System design is not about finding the “correct” answer, it is about managing trade-offs. There is no perfect architecture, only the best one for the specific constraints of the problem.
Whether you choose SQL vs. NoSQL or Consistency vs. Availability depends entirely on the scenario. Use this list as your roadmap. Start by mastering the Module 1 definitions, then challenge yourself to whiteboard the Module 5 real-world scenarios without looking at the solutions.
Unlock success in your next interview with our comprehensive question collection, designed to boost your confidence and expertise!
Frequently Asked Questions
Q1. What are the job roles that require System Design interview questions?
System Design questions are usually asked in Senior Software Engineer, Technical Lead, Engineering Manager, and Software Architect positions.
Q2. Which companies hire for System Design positions?
The top technology companies that hire for System Design positions include Google, Amazon, Facebook (now known as Meta), Netflix, Uber, Microsoft, and high-tech startups like Stripe and Airbnb.
Q3. What is the salary for a System Design engineer?
The average salary for a System Design engineer is around ₹30 Lakhs in India and $160,000 in the US. However, this can vary greatly for higher positions.
Q4. How many rounds of System Design are there in an interview?
The majority of the companies have one or two dedicated rounds of System Design, which last for about 45 to 60 minutes.
Q5. Is System Design required for fresher positions?
System Design is rarely required for freshers or junior positions, as it involves a lot of experience in scaling and architecture; however, the basics are always a plus.
Q6. What is the best way to prepare for System Design interviews?
The best way to prepare for system design interviews is to practice problems like designing WhatsApp or Netflix, and also understand concepts like Load Balancing and Caching.