Preparing for the System Design Interviews
3.6 (516 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
3,486 students enrolled

Preparing for the System Design Interviews

System Design Interviews - Learn what and how to prepare for these interviews using real world case studies
3.6 (516 ratings)
Course Ratings are calculated from individual students’ ratings and a variety of other signals, like age of rating and reliability, to ensure that they reflect course quality fairly and accurately.
3,486 students enrolled
Created by Rajat Mehta
Last updated 7/2020
English
Price: $19.99
30-Day Money-Back Guarantee
This course includes
  • 5 hours on-demand video
  • 1 article
  • 1 downloadable resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Training 5 or more people?

Get your team access to 4,000+ top Udemy courses anytime, anywhere.

Try Udemy for Business
What you'll learn
  • Students will get a good intro on key topics as well as how to approach a system design interview. The course covers real life case studies from frequently asked questions in interviews.
  • How would you go about creating an Uber like App (Sample Question)
  • Create an ecommerce app and scale it to millions of users (Sample Question)
  • How would you create a website to sell movie tickets online ? Scale it to millions of users.
Requirements
  • Good computer science knowledge. Some knowledge of advanced system design concepts like OOPS, caching, hashing, data partitioning, i will cover these in the course too.
Description

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. It gives brief description on key topics and contains a case study.  It is an actively developed course with more case studies and system design questions added frequently.

Some sample questions :

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 ?


Who this course is for:
  • Anybody who wants to prepare for system design interview.
Course content
Expand all 70 lectures 04:58:22
+ System Design Key Topics
10 lectures 01:44:59

This is a short course on quick preparation and warm up for an interview on System Design. It contains description on key topics and provides resources to study in depth on those topics. It also contains a case study in the end that can help understand the approach that can be taken to face a system design interview.

Preview 00:26

This lesson covers the various aspects of a system design interview and tries to explain why they are important and what a candidate can expect in these interviews.

Preview 04:41

This lesson covers some of the basics for the system design interviews. It tries to convey what are the expectation the interviewers are having from the candidate for the system design interview. It also provides a general set of steps that can be chosen while approaching a problem for a system design interview.

Preview 33:15

This lesson covers 'CAP Theorem'. It gives an introduction to the CAP theorem, what it is and why it is important for system design interviews.

CAP Theorem
04:17

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.

Handling your DATA
24:43

This lesson covers what a transaction is and how it can be used to maintain consistency of your data

Transaction on Data
07:39

This lesson provides information regarding building your middleware layer that holds all your business logic and rules for your application.

What goes in the Middleware layer ?
13:58

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.

Building the middleware layer using MicroServices.
08:22

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.

Building the front end layer (UI).
07:26

This contains a document showing a list of books, articles and websites that can be additionally referred to on these key topics.

Additional Resources
00:12
+ Load Balancing
4 lectures 17:26

This lesson gives an introduction to the concept of load balancing.

Introduction
01:18

This lesson shows the various layers where a load balancer can be used in a scalable system

Where can a load balancer be placed in a system ?
02:38

This lesson would cover the various types of load balancers that can be used in production ready systems.

Types of Load balancers
08:00

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.

Load Balancing Strategies and Load Types
05:30
+ Caching
5 lectures 15:24

This lesson gives an introduction to caching, what it is and why we use it.

Introduction
00:35

This lesson covers the concept of caching and give an example of its usage.

Caching
02:07

This lesson covers the different types of caches that we can use for our applications.

Types of Cache
06:54

This lesson gives an intro on the different ways data can be updated in the caches.

Updating data in cache
02:43

This lesson gives the different ways data can be evicted from the caches.

Cache Eviction
03:05
+ CDN
3 lectures 05:20

This gives an introduction to the concept of CDNs

Introduction
00:19

This lecture covers the concept of cdn.

What is a CDN ?
02:39
Advantages and Disadvantages of CDNs
02:22
+ Case Study - 1
5 lectures 15:32

This video gives an introduction about this simple case study. This case study is about building an LRU cache.

If you already know about this topic, feel free to skip this lesson

Introduction
00:53

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.

What's a LRU Cache ?
03:32

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.

Building an LRU Cache
05:49

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.

LRU Cache Code (Java)
02:43

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.

LRU Cache Code Continued (Java)
02:35

For the current approach we have used a Hashmap and Arraylist combination. Even though the current solution explains the concepts behind an LRU cache well and might be good enough for an interview but there are few flaws in this approach.

Can you improve this solution further ?
1 question
+ Case Study - 2
1 lecture 26:15

This lesson covers the entire topics that we covered in the basic's section and using those topics we have tried to design an ecommerce website end to end.

Design a scalable ecommerce website like Amazon or Walmart.com ?
26:15
+ Case Study - 3
13 lectures 23:13

In this lesson we will cover what is the question that is asked , or what exactly is the problem asked for.

Introduction - Problem Description
00:31

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.

Digging deep into the problem
02:32

This lesson gives the functional requirements of the system.

Functional Requirements
02:41

This chapter covers the non functional requirements of the system

Non functional Requirements
00:20

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.

Approaching the problem with the simplest design first
01:24

This lesson covers the simpler approaches in detail and explains how these simple approaches can be used to generate unique numbers.

Going deeper into the simpler approaches
01:43

This lesson gives the problems that are found while using the simple approach.

Problems with the Simple Approach
01:38

This lesson would give a small introduction on the 3 approaches that are suggested for handling this problem

Approaches for a distributed system
01:05

This lesson gives a small description on this simple approach of generating a unique id by a global server.

Approach 1 (also its good and bad points)
01:03

Approach 1 continued...

Approach 1 continued
01:09

This approach discusses the ticketing server approach that is very popular and is used in production systems as well.

Approach 2 (good and bad points)
01:29

Approach 2 continued...

Approach 2 continued
02:18

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.

Approach 3 - final approach
05:20
+ Case Study - 4
16 lectures 50:52

This lesson gives the introduction to the problem we are working on as part of this case study.

Introduction - Problem Description
00:24

This lesson would depict the details about understanding this problem of recommending items to users.

Understanding the Problem
02:01

This lesson explains why relational db's are not suited for using to solve these kind of problems

Why relational db's are not suited for this kind of problem ?
02:35
What is a recommendation system and its requirements.
00:56

This lesson will cover the requirements for the system we are designing as part of this case study.

Requirements
04:21

This lesson briefly covers the high level design of this system.

HLD
02:58

This lesson covers the design of the data ingestion layer.

Data Ingestion Layer
06:08

This lesson starts with the approach on analytics engine and gives a walk through of the first approach of using the Apriori Algorithm

Analytics Engine and Approach 1
01:19

Explanation of Apriori Algorithm or the market basket analysis approach

Market Basket Analysis - Apriori Algorithm
09:29

This lesson covers the code on the Apriori Algorithm using Apache Spark

Implementation and Code
04:26

This lesson covers the disadvantages of this approach.

Problem with this Approach
00:44

An important point for this case study.

Important point for this case study
01:30

This lesson covers the approach for content based recommendation.

Content Based recommendation
04:59

This lesson covers the code of implementing a content based recommendation system.

Content Based recommendation - implementation
06:07

This lesson gives an introduction to collaborative filtering.

Collaborative Filtering
01:32

This lesson covers the collaborative filtering approach in short.

Collaborative filtering approach in short
01:23
+ Case Study - 5
13 lectures 39:21

This lesson gives the problem we are trying to solve in this case study and also covers understanding of the problem

Introduction
00:40

In this lesson we go over the functional and non function requirements from this system. We will also go over any assumptions we have made.

Requirements and Assumptions
03:25

This lesson covers some simple back of the envelope calculations

Back of Envelope Calculations
01:48

This lesson covers the high level design for our system

HLD
08:24

This lesson shows example of sample JSON that can be pushed from the UI downstream to store in the big data layer.

Sample Data
00:54

This lesson describes the restful API we can build for this type of service.

API Design
01:27

This lesson covers a brief description of building the rest services of the API.

Building the Rest services of the API
01:28

This lesson covers the code for the underlying TRIE datastructure we are proposing to use in this case study,

Low Level Design
03:52

This chapter explains further on the low level design using a diagram

More on low level design
02:31

This lesson will cover why it's a good idea to store this TRIE in cache.

Storing the TRIE in Cache
05:08

This lesson talks about how data can be stored and partitioned in HDFS for scalability and how map reduce jobs can be run on top of them using Hive.

Storing words using big data technologies and finding the word frequencies
03:40

This lesson will cover how we can build the TRIE.

Building the TRIE
04:16

This lesson will talk about the disadvantage of this approach.

Disadvantages of this Approach
01:48