System design interviews aim at allowing potential employees to show their skill set in system design by solving open-ended practical problems. Candidates include software developers, programmers, software designers, and software engineers.Â
The System design process is a step-by-step process including the following steps:
- Empathize
- Define the issue
- Ideate
- Prototype
- Test
How to prepare for a System Design Interview?
System design interview questions and answers can be tackled with the ‘practice makes a man perfect’ theory. There is an abundance of resources available online and offline to prepare for a system design interview. The resources include:
- Mock Interviews
- Books
- Articles
- Videos
- Courses
- Discord Servers
The main solution tools for system design interview questions lie in the preparation for system design interviews. Other ways to prepare for a system design interview are to work on a real system and to learn how operating systems and databases work under the hood.
Another thing to remember is that software documentation in system design interview questions is a collection of questions related to the documents and resources covering all aspects of a particular product design. A system design interview is based on the three following aspects:
- Clarity of thought
- Flexibility
- Knowledge and awareness
Types of System Design Interview Questions
There are various types of system designs such as architectural design, physical design, logical design, etc. Various categories of system design interview questions are also based on these system designs.
The categories of system design interview questions are as follows:
- Low-Level Design System design interview questions
- High-Level Design System design interview questions
- Object-Oriented System design interview questions
- Operating System Interview Questions
Commonly Asked System Design Interview Questions and Answers :
1. How would you design a parking lot?
This question is one of the most common questions in a system design interview. The interviewer would like to hear the following points:
Capacity
Always consider the capacity of the parking lot before designing it. How many levels would it have? Also, what is the plan in case the parking lot becomes full?
Types of vehicles
The allocation of various parking areas for different vehicles is also to be justified.
Flexibility of payment
Different modes of payment such as cash, credit, and other online methods should be accepted. There should be different points where customers can pay.
Pricing
Pricing should be handled well. Covering this aspect is very necessary. Pricing can be accommodated according to hourly rates.
2. How do you design a mass social media platform?
The aim of designing a mass social media platform such as Instagram, Facebook, and Twitter is to design a platform that enables its users to view a newsfeed with posts.
The basic features required by the social media service are stated below:
- Users can make public as well as private posts.
- The option of commenting and liking a post is available to the users.Â
- It should accommodate multiple users at once.
- There should be a newsfeed and recommendation system.
- Privacy controls are also to be taken care of.
- Trending posts/tweets are supposed to be visible.
The tools which are useful in the designing of the mass social media platform are as follows:
- To maximize the availability, rolling updates and replica nodes can be utilized.
- To recommend posts and news feeds, a trained machine learning algorithm can be used.
- A database schema can be created to store celebrities and some users separately.
- Some habits can be tracked using a social graph.
3. Design a global chat service.
We need to design a service that enables users to chat with each other over a global platform. The form of conversations can be either one-to-one or group chats.
Following are the required features of the chat service:
- The chat service must allow the transfer of media such as photos, videos, stickers, and GIFs.
- The sent message should be encrypted during transit and should be stored for later viewing.
- The chat service should support one-to-one as well as group chats.
Following is the list of tools that can be considered while designing a chat service:
- The database schema can be split into multiple tables, namely a user table, a chat table, and a message table.
- For bi-directional connections between the device and the server, WebSocket can be used.
- Push Notifications are also a great tool to notify users even if they are offline.
4. How would you design Netflix?
To design a video streaming service like Netflix, the main idea to keep in focus is that Netflix should be able to store and transmit video data.
Basic features that are expected off of Netflix are listed down below:
- It should be able to upload videos on the internet.
- Uninterrupted video streaming should be available to the users.
- Other features such as comments and likes are also necessary.
- It should also support high traffic of multiple users.
Following tools help design Netflix:
- Cloud technology can be used for storing and transmitting video data.
- To recommend new video-related content, Machine Learning can be used.
Components in the designing of Netflix:
- OC – Content Delivery Network
- Backend – Database
- Client – Device to assess Netflix
5. How do you design a Tic-Tac-Toe game?
Tic-tac-toe is a game that is meant to be played between two players. Here, one player is the computer itself. The rules of the game are simple. A player chooses ‘O’, and the other player chooses ‘X’ to mark their cells. If a player can fill a row, column, or diagonal of cells with their chosen character, the player wins.
The implementation of the design can be done by using the rand() function, as the moves taken by the computer are completely random. This program can be updated so as the players play optimally.
6. Design a URL shortening service.
A URL shortening service serves the dual purpose of:
- Generation of a unique short URL from a long URL
- Return of the shortened URL to its original form
The required features of the URL shortening service are:
- The URL shortening service must return a URL that is shorter than the original URL.
- Redirects should be allowed by the shortened URL.
- The shortened URL must store the original URL.
- The shortened URL should be able to link to the original one.
Following is a list of tools that can be considered while designing a URL shortening service:
- Multiple requests at once can be handled by the use of multithreading.
- To balance high traffic, REST API can be used. It will also help to handle front-end client communication.
- Hashing can be used to link old and new URLs.
High-Level System Design Interview Questions and Answers
7. How would you design Uber?
Ans. The architecture of Uber is monolithic or microservices.
Following are the aspects to cover:
- Uber talks to the backend over the user’s mobile data.Â
- Location data drives the dispatch system.
- Maps and routes in Uber are to be considered as well.
- Appropriate storage is required for multiple geographical locations.
- Node.js can be used to build the dispatch.
- The business logic services can be written in python.
- Databases: Redis, Postgres, MySQL
8. Design an API Rate Limiter.
Ans. The job of an AP Rate Limiter is to limit the number of API calls a particular service like Firebase can receive over a period to avoid overload.
Following features are necessary to design an API Rate Limiter:
- The Limiter should notify the user if their request is denied.Â
- Devices are limited to a particular number of requests on an hourly basis.
Following tools can help design an API Rate Limiter:
- Sliding time windows can be used to avoid hourly resets.
- Instead of saving space, a counter integer can be saved.
9. Design global file storage and sharing service.
Ans. To design global file storage and sharing service, an asynchronous, cross-platform storage system is required in which users can store files and photos and assess them through multiple devices.
The features necessary for designing the global file storage and sharing service are as follows:
- Old versions of the documents can be saved to rollback.
- All the files should be updated across devices in sync.
- Users can save, share, delete, and update files and photos over the internet.
Tools that may help design the service are as follows:
- Chunking can be used to divide files into multiple sections.Â
- To handle internal databases, cloud storage can be used.
- Updates are to be kept in check.
10. How do you design a web crawler?
Ans. A web crawler service collects information/crawl from the entire internet and fetches millions of web documents.
Things to keep in mind while designing a web crawler are:
- The approach is taken to find new web pages
- The approach to prioritize web pages that can change in a dynamic way
- To ensure that the web crawler service is bounded on the same domain
11. Design Quora.
Ans. Quora is a social network and message board service in which users can post links and questions. Users can also comment on the questions. Related questions and topics should also be accessible to the user.
Features to include in the design of Quora are:
- Users can make posts with tags.
- The comment section to every post must be included.
- The app should support high traffic of posts and viewers.
The list of tools that might help in the design of Quora is as follows:
- An SQL database can be used to map the relational data.
- Sharding can be used to break up the system.
- Multithreading and load balancer can be used to help support the high traffic.
- Machine learning can be used to find correlations between relations between tags.
12. Design a traffic control system.
This question is one of the classic questions asked in a system design interview. The only aspect to cover here is the transition from RED to GREEN, etc.
Object-Oriented System Design Interview Questions and Answers
13. What is encapsulation?
Ans. In visual terms, we can say that encapsulation is the technique of inserting all the resources required to fulfil the job inside a capsule, which is further given to the user. All the unnecessary data is hidden to a regular user, and the required data is bound together.
14. Differentiate between compile time polymorphism and runtime polymorphism.
Compile Time Polymorphism | Runtime Polymorphism |
A. It is also called Static Polymorphism. B. This type of polymorphism happens at the compile time. C. The compiler gets to decide the shape or value that has to be taken by the entity in the photograph. | A. It is also called Dynamic Polymorphism. B. This type of polymorphism happens at the run time. C. Here, the shape or value that has to be taken by the entity in the picture is not decided by the compiler. |
15. Name different types of constructors in C++.
Ans. There are three types of constructors in C++, which are as follows:
- Default Constructors: It does not take any argument and has zero parameters.
- Parameterized Constructors: These types of constructors take some argument.
- Copy Constructors: It is a member function, and its basic function is to initialize the object using another object of the same class.
16. Can a Java application be created without implementing the OOPs concept?
Ans. A Java application cannot be created without implementing the OOPs concept. Java applications are completely based on the Object-oriented programming concept.
17. State different types of Inheritance.Â
Ans. Different types of inheritance are shown in the image below.
18. What are the limitations of inheritance?
Ans. Following are the limitations of inheritance:
- It is time-consuming because it needs to navigate through multiple classes for implementation.
- The child class and the base class are tightly packed, which makes it difficult to make changes.
- It is complex when it comes to implementation, which may result in errors if not implemented correctly.
19. What feature allows one class to derive features from another class?
Ans. The Inheritance feature allows one class to derive features from another class.
20. Which language was the first language to be developed as a purely object-oriented programming language?
Ans. Smalltalk was the first programming language to be developed as a purely object-oriented programming language.
21. Which is an OOPs language but does not support all inheritance types?
Ans. Java is an OOPS programming language, but it does not support all inheritance types.
22. Name different types of Operating Systems. Also, mention one disadvantage of each type.
Ans. There are five types of Operating Systems, which are as follows:
Real-Time Operating System
This kind of OS is used while dealing with real-time data. As soon as the data arrives, the execution of the process should be done without any delay. Its main disadvantage is the complexity of the algorithms used.
Embedded Operating System
Embedded operating systems are used to perform certain tasks for a specific device (not a computer). For example, the embedded OS is used for the functioning of the lift system. The disadvantage of the embedded operating system is that only one task can be performed.
Time-Sharing Operating System
It is also called a Multitasking Operating System. Multiple processes are performed at the same time. Its disadvantage is that prioritized tasks are not performed first. All tasks are given equal priority.
Batch Operating System
Similar tasks are grouped into batches, and the batches are executed one by one. The disadvantage of this type of Operating System is the manual intervention required between two batches.
Distributed Operating System
As the name suggests, the distributed operating system has different systems having their individual
CPU, memory, and other resources. Its main disadvantage is that extra effort is required for the security of data due to shared data.
23. Define RAID?
Ans. RAID stands for a redundant array of independent disks. RAID is the technology that specializes in data storage that combines various physical disk drive components within one or numerous logical units as data redundancy and performance improvement.
24. State the meaning of IPC along with different IPC mechanisms.
Ans. IPC stands for Inter-Process Communication. It is a mechanism that needs the use of elements that are shared between threads or processes. In simpler terms, IPC is used to share data across various threads. Following are the various IPC mechanisms:
- Message queuing
- Shared Memory
- Semaphores
- Sockets
- Signals
25. List 5 examples of OS.
Ans. A few examples of Operating Systems are listed below:
- Mac Operating System
- MS-WindowsÂ
- Android
- Chrome Operating System
- Free BSD
26. What is a process, and what are its different states?
Ans. A process is nothing but a program that is being executed. One of the main functions of an Operating System is to supervise the processes. A process can be divided into the following sections:
- Stack
- Heap
- Text
- Data
A process goes through various stages, which are:
- New state: It marks the beginning of the process.
- Running: The instructions of the process are followed by the CPU.
- Waiting: The process is at a momentary pause as it waits for an event to occur.
- Ready: At this stage, a process is waiting to get assigned by a processor even though it has all available resources to run.
- Terminate: The process has ended when it reaches this state.
27 Differentiate between paging and segmentation.
Paging | Segmentation |
A. Paging is invisible to the programmer. B. In paging, the operating system needs to maintain free time. C. The size of the page is fixed and is determined by the available memory. |
A. Segmentation is visible to the programmer. B. A list of holes in the main memory is to be maintained by the operating system in segmentation. C. The size of the segments is not fixed and is determined by the user. |
28. What are the prerequisite requirements to achieve a deadlock?
Ans. In an OS, a deadlock happens when a process enters a state of pause because a requested system resource is held by another waiting system, which in turn is waiting for another resource held by another waiting process, and so on.Â
Following are the necessary conditions to achieve a deadlock:
- Mutual Exclusion
- Hold and Wait
- No Preemption
- Circular Wait
29. Explain fragmentation and state types of fragmentation that take place in the operating system?Â
Ans. The process of fragmentation decreases the capacity and performance because space has been used inefficiently.
In an operating system, two types of fragmentation take place:
- Internal fragmentation: This type of fragmentation occurs when those systems which have fixed size allocation units are dealt with.Â
- External fragmentation: External fragmentation occurs when we deal with systems that have variable-size allocation units.
30. What is starvation and aging in the Operating System?
Ans. When a process has not been able to acquire the resources it requires for progress with its execution for an extended period, this situation is referred to as starvation.
Aging, on the other hand, is the solution to starvation. The technique of aging increases the priority of certain processes that are waiting for resources for a long period.
Tips for Answering System Design Interview Questions
- Do not go into deep detail prematurely until you’re asked in the system design interview question.Â
- Do not have a set rigid architecture in your mind. Develop novel architectures based on the problem presented.
- Keep it simple. Try to avoid focusing on one aspect of architecture as it shows that your viewpoint is narrow. You need a broad point of view.
- Never make points without justification. Always answer the ‘why’ to every statement you make.
- Always be up to date when it comes to technology. Things like these are always noticed in a system design interview.
Conclusion on System Design Interview Questions
The system design interview is nothing but a brainstorming session. Usually, these kinds of interviews begin with a high-level design and then dial down to simpler components. Always do a healthy amount of research before actually going in for the interview.
Try to listen carefully before answering any question. Make sure you have prepared well to face all sorts of questions. Try to cover all aspects in brief instead of going into detail about one aspect. All the best to all the future software engineers, software developers, programmers, and software designers!