What you'll learn:
- Prepare for the system design interviews.
- Practice with questions and answers on the design of sample software systems.
- Get familiar with several fundamental system design techniques and concepts.
- Develop your skills on designing software systems.
System design is part of the technical interview process in some companies. It is often a brainstorming session between the interviewer and the interviewee about the design of a software system.
Format of the Course
In this course, we study the design of a set of selected software systems with a top-down approach. In each case, we start by defining the requirements, then do a high level design of the system, and then design some of the subsystems.
The discussions are driven by questions. After each question, you can pause the video and give your own answer to practice for system design interviews. After each question, I give an answer based on my opinion. Since I intent to teach the concept being discussed, my answer might be longer than a regular answer given in an interview.
Design questions might be open-ended and might have more than one answer.
For the efficiency of the course, and not to talk about the same concept again and again, each case will include questions on selected concepts.
Concepts and Techniques
During this journey, you will encounter both domain specific questions and questions on several design techniques and concepts, such as:
High Level Design
Battery Efficiency
Request Traffic Analysis
Data Analysis
Stateless Services
Caching
Sharding
Fast Data Retrieval
Webhooks
WebSocket
Data Management
Preventing Overload
...