
Clearing system design interviews in top software companies will determine the pay scale and role that gets offered in these companies.
Correct System Design including High Level Design, Low Level Design, Coding a correct solution is important in getting a break in these companies.
Note: Apart from top tech software firms many hedge funds and fintech firms have started asking these questions recently.
There is no fixed rule in approaching these interviews. Usually if you are applying to top tech firms it depends upon the interviewer as to what exactly they would give you in terms of designing for software.
Mugging up a solution is a very risky approach as it can cause you to apply same or similar solution to all the problem.
We have tried to provide a general approach using which you can approach most of the problems. We are following a 5 step approach
Understanding the problem, asking the right questions
Designing a high level design
Putting a low level design for key components and features in the system
writing code for key components (including any algorithm involved)
Finding flaws in your system
-------------------------------------
Note : Memorizing a solution is risky in these interviews as counter questions from the interviewer might require you to know the technology in depth.
Note: Complete Demo and Code is in the Caching Demo Section
This is just a preview only lesson to show the demos and codes we are bundling along with some case studies and lessons.
CAP Theorem is a very important concept if you are designing for scalability.
As the name of the lesson suggests this lesson covers that various database technologies that can be used for storing the data. It also gives explanation on the difference between a NOSQL db and relation database and when either one of them can be used over the other.
This lesson covers what a transaction is and how it can be used to maintain consistency of your data
This lesson provides information regarding building your middleware layer that holds all your business logic and rules for your application.
This lesson talks about the use of micro services. What they are and how they can be used to build the middle-ware layer of your application. It also talks about the advantages and disadvantages of micro services.
This lesson gives a brief introduction to the front end layer, what it is and how it can be built using different technologies and patterns.
System Design interviews are hard. Usually firms that ask these interviews are the ones that pay top salary. We are expected to come up with a workable solution in an hour.
These are some resources that can help prepare for these interview thoroughly.
This lesson gives an introduction to the concept of load balancing.
This lesson shows the various layers where a load balancer can be used in a scalable system
This lesson would cover the various types of load balancers that can be used in production ready systems.
This lesson covers the type of loads a load balancer can handle and the different kind of load balancing techniques that can be used to scale your system.
This lesson gives an introduction to caching, what it is and why we use it.
This lesson covers the concept of caching and give an example of its usage.
This lesson covers the different types of caches that we can use for our applications.
This lesson gives an intro on the different ways data can be updated in the caches.
This lesson gives the different ways data can be evicted from the caches.
Twitter Timeline and Facebook Feed are common scenarios where user feeds are prebuilt and stored on distributed caches. In this sample application we will build a sample feed using real cache server.
Can we build a sample application for doctors where they login and can see all the patients they are responsible for in a feed that is built for them and served on the UI very fast.
This lesson covers the architecture of the sample application and use diagrams to depicts it class structure.
This lesson gives the demo of the sample application as well as gives access to downloadable code for the sample application.
This gives an introduction to the concept of CDNs
This lecture covers the concept of cdn.
This lesson cover a case study on creation of an ecommerce web store in depth. It gives the high level design, low level api design, database design and other details.
NOTE : There is separate case study coming up for building an ecommerce web store using Microservices (includes mongodb, cassandra design as well)
This videos covers building a local cache instance in depth.
This is a popular interview question. Designing and Coding it in an efficient way end to end is crucial in clearing the interviews. In most system design interviews you are expected to code on a whiteboard or in some software application. Coding in an efficient correct way is crucial to clearing these interviews.
Note: We are providing two ways of building the local cache. One a regular version and another an efficient version.
The code is available in the resources section.
This lesson gives a description of what an LRU cache is. It also gives an example of a case where this cache might not be useful at all.
This lesson covers the concept behind building a simple LRU cache.It walks through a simple diagram whereby an example is used to depict the formulation and concepts behind a LRU cache.
This lesson covers the actual code behind a simple LRU cache. The code demoed in the case study is entirely written in java but can easily be ported to any other language like python, C# etc.
This lesson covers the actual code behind a simple LRU cache. The code demoed in the case study is entirely written in java but can easily be ported to any other language like python, C# etc.
This lesson gives another implementation of an LRU Cache which is more efficient then the one described earlier.
This lesson contains the implementation of an efficient LRU Cache using Java.
In this lesson we will cover the various details on the design of a distributed cache.
In this lesson we will cover the various details on the design of a distributed cache.
In this lesson we will cover the various details on the design of a distributed cache.
In this lesson we will cover what is the question that is asked , or what exactly is the problem asked for.
In this lesson we will dig deeper into the problem by asking the right set of questions. We will try to understand what is expected from the system. What all are the complex points about this system.
This lesson gives the functional requirements of the system.
This chapter covers the non functional requirements of the system
This lesson covers the simplest possible case where the application is running on just one box and the entire system is built out of that box.
This lesson covers the simpler approaches in detail and explains how these simple approaches can be used to generate unique numbers.
This lesson gives the problems that are found while using the simple approach.
This lesson would give a small introduction on the 3 approaches that are suggested for handling this problem
This lesson gives a small description on this simple approach of generating a unique id by a global server.
Approach 1 continued...
This approach discusses the ticketing server approach that is very popular and is used in production systems as well.
Approach 2 continued...
In this lesson the twitter snowflake approach is covered along with the sample code for the same. If you are giving an example of this approach in your system design interview you would be expected to write the code for the same in your favorite language on the whiteboard.
This lesson gives the introduction to the problem we are working on as part of this case study.
This lesson would depict the details about understanding this problem of recommending items to users.
This lesson explains why relational db's are not suited for using to solve these kind of problems
This lesson will cover the requirements for the system we are designing as part of this case study.
This lesson briefly covers the high level design of this system.
This lesson covers the design of the data ingestion layer.
This lesson starts with the approach on analytics engine and gives a walk through of the first approach of using the Apriori Algorithm
Explanation of Apriori Algorithm or the market basket analysis approach
This lesson covers the code on the Apriori Algorithm using Apache Spark
This lesson covers the disadvantages of this approach.
An important point for this case study.
This lesson covers the approach for content based recommendation.
This lesson covers the code of implementing a content based recommendation system.
This lesson gives an introduction to collaborative filtering.
This lesson covers the collaborative filtering approach in short.
Its FREE now, please check coupons BC9DF792A51DF169DAED
System design interviews are very common in big software firms. They are different from coding interviews or data structure and algorithm interviews but can be harder. They require a broad set of knowledge. Almost all the top software companies, be it google, amazon, uber have one or two rounds of system design interviews. After clearing the data structures and algorithm interviews if you do well in these system design interviews you can expect a very good offer from these firms.
This is a course to help students to prepare for system design interviews. Using this you will learn system design by seeing demos, building software, understanding complex topics. It is both a theory and code along course with real world case studies and demos to give you in-depth knowledge rather than learning few case studies that might or might not come in an interview.
It is an actively developed course with the aim to impart correct and good knowledge on building large scale systems. Aim is to get the student ready for a system design interview even when they have not faced a similar case study before.
Some sample questions for system design interviews :
1. How would you go about designing an e-commerce website at scale ?
2. How would you go about designing the e-commerce website using microservices, how will you handle transactions ?
3. Design a chat messenger application like any famous chat messenger you have used ?
4. Create an autocomplete feature like word suggestions on search engines ? Scale it to millions of users ?
5. How would you go about creating a feed postings in a social network ? ( - Similar Patient Feed in Course with Code)
6. How would you build a large scale machine learning backend system to generate video recommendations like on Netflix ?
7. How would you build a mobile app to track your day to day health, exercise routine and sleep patterns and give you recommendations based on the stats recorded ?
8. How would you build your own CDN ?
TOP REVIEWS :
Sid Hicks
Rating: 5.0 out of 55 months ago
The amount of information delivered in this course is amazing. Thank you for organizing into chunks. This makes it easy to understand. Well Done!
Rohit Dhawan
Rating: 4.5 out of 58 months ago
I also went through the grokking the system design, which is mostly a reading material and the steps are the same as the ones covered here. For max bang of bucks, learning and understanding, I liked this one over the other one.
Karthik Chinni
Rating: 5.0 out of 53 months ago
I agree that the sound quality was not good in a few places. But, content delivered is really great. Was upto the point and crisp. Keep the good work going on. Cheers.
Abhishek Aman
Rating: 5.0 out of 56 months ago
Yes, it was really good. Could you please create more content on system design which includes more of scenario based designing rather than going behind a use case. So when I say scenario based, I mean we choose this component if the we want to serve 1m users from one box. Something of this sort.
I might sound very noob as I am stillnew to system design and learning pretty fast, but yes please take note of my request.
Monimoy Deb Purkayastha
Rating: 5.0 out of 55 months ago
I have learnt lot of system design approaches and case studies. This is very useful an well structured course
Ahlem Mustapha
Rating: 5.0 out of 55 months ago
It is a good course for anyone who has no prior knowledge about system design and who wants to start by knowing the big pictures , later in chapters there is different explanations and concepts to know. I also liked the different suggestions about the materials and resources that someone can use in order to learn more about the topic. a suggestion to add subtitles and scripts to your videos !! :)
thank you a lot
advice for improvement is: improve the voice sometimes there is echo , also write a script so people could follow with you while talking. overall thanks a lot I am halfway the course and it is so great so far