Mastering the System Design Interview
- Descrição
- Currículo
- FAQ
- Revisões
Ace your next systems design interview! Get tips, tricks, and practice interviews with a former hiring manager from Amazon, who interviewed thousands of software engineers and hired hundreds. Frank Kane will share the secrets of what your interviewer is looking for and the technologies you’re expected to know. Practice makes perfect, so you’ll also get six mock system design interviews with real-world interview questions from the biggest tech employers.
A technical interview loop is a demanding process, and the system design part is often the most challenging. This course gets you prepared, and maximizes your odds of landing a new job that could change your life.
About 5 hours of on-demand video content will cover what you need to know before starting your next interview:
-
Techniques for scaling distributed systems and service fleets
-
Database technologies and “NoSQL” solutions
-
Use of caching to improve scalability and performance
-
Designing for resiliency and handling failures
-
Distributed storage solutions
-
A review of algorithms and data structures
-
Processing big data with Apache Spark
-
An overview of cloud computing resources
-
Interview strategies for structuring your system design interview
-
Six full mock interviews with real-world system design interview questions
-
General tips and tricks for a successful technical interview
We’ll cover topics in high-level design and low-level design, software architecture, and more.
This course is for experienced software engineers who need some extra preparation prior to a challenging system design interview. Enroll now, and you’ll have every advantage going into your next tech interview!
Don’t take our word for it – check out this note sent to us by a learner in this course:
“Interview prep is even more challenging without proper guidance. This course was a real saver because I was asked every concept that the course discussed. The mock interview was helpful enough to practice your learnings for real world problems. I was able to ace my system design portion of interview and got my offer at Amazon.
As a non-CS major student, I struggled to find good resources. The instructor was actually from Amazon and had real interview questions. He focuses on skills that really matter on the interview rather than hacky tricks. You will lose nothing on this course because you will grow a lot regardless of the interview result. And… this course will remain as a strong guide what to focus on more.”
-
3Scalability: IntroductionVídeo Aula
-
4Horizontal vs. Vertical ScalingVídeo Aula
The most basic trick for building systems that scale to massive loads is "horizontal scaling." Learn how it works through architecture diagrams, and how it compares to single-server and vertical scaling designs.
-
5Failover StrategiesVídeo Aula
The downside of horizonal scaling is you have more servers that can fail at any time, and your system must seamlessly handle that failure. Learn how cold, warm, and hot standbys address this problem.
-
6Sharding Databases / NoSQLVídeo Aula
Scaling databases present their own problems with data replication and distributing lookups and storage of data. Learn how NoSQL databases address this with sharding, and we'll dive into specific examples of the architecture of MongoDB and Cassandra. We'll also discuss denormalization, which is key to efficient use of NoSQL data stores.
-
7Data LakesVídeo Aula
Rather than dealing directly with databases, a common architectural choice for data analysis applications is the use of a "data lake" - just throwing raw data into cloud storage such as S3, and later imparting structure to that data.
-
8ACID compliance and the CAP theoremVídeo Aula
Common database-related interview questions will involve ACID compliance (Atomicity, Consistency, Isolation, and Durability) and the CAP theorem (Consistency, Availability, Partition-tolerance.) What these terms mean is far from intuitive, and how they apply to modern real-world systems is nuanced at best. Understanding those nuances will help you stand out as a candidate.
-
9Using CAP to Choose a DatabaseVídeo Aula
Let's study how MongoDB and Cassandra choose their tradeoffs in the CAP theorem, and how understanding those tradeoffs can help you choose the right data store for a given set of requirements.
-
10Caching: IntroductionVídeo Aula
-
11Caching TechnologiesVídeo Aula
Learn where to inject a caching layer in your system design, how caches work, and the nuances of configuring your cache's expiration policy. We'll also discuss the problems of hotspots and the cold-start problem, and how they influence your design.
-
12Eviction Strategies for CachingVídeo Aula
Your cache has finite space, and you must choose a strategy for evicting old data to make room for the new. We'll talk about LRU (least recently used,) LFU (least frequently used,) and FIFO (first in, first out.)
-
13Content Distribution Networks (CDN's)Vídeo Aula
CDN's such as Akamai, CloudFront, and CloudFlare can cache information as close as possible to your end users. Learn how they work, the problems they solve, and some of the more popular CDN providers.
-
14Resiliency: IntroductionVídeo Aula
-
15Designing for ResiliencyVídeo Aula
Having backup hosts is one thing, but what if an entire data center goes down? Or an entire region? Something as small as a network failure can lead to such an event. Learn how to distribute your system, and route requests, such that even major disasters won't bring your system down.
-
16Scaling your Data: IntroductionVídeo Aula
-
17Distributed Storage SolutionsVídeo Aula
Cloud-based storage solutions such as Amazon S3, Google Cloud Storage, and Microsoft Azure can be important parts of your design. Or you can build your own using HDFS and Hadoop.
-
18HDFS ArchitectureVídeo Aula
Learn how to design a distributed storage solution, by studying the architecture of HDFS (the Hadoop Distributed File System)
-
19Quiz: System DesignQuestionário
Test your knowledge on designing distributed systems!
-
20Algorithms IntroductionVídeo Aula
Data structures and algorithms may play a role in your system design, so let's review those computer science basics as well as their computational complexity.
-
21Linked ListsVídeo Aula
Learn about singly linked lists and doubly linked lists, their properties, and how to use them.
-
22Binary Trees and Hash TablesVídeo Aula
Learn about the computational complexity and applications of binary trees and hash tables, as well as edge cases such as unbalanced trees and hash collisions that can trip you up in practice.
-
23Graphs and Graph TraversalVídeo Aula
Graph traversal, including depth-first search (DFS) and breadth-first-search (BFS) may play a role in your design, so be ready to discuss how they work and which one to choose for a given problem.
-
24Search AlgorithmsVídeo Aula
We'll review linear search and binary search algorithms, and their computational complexity.
-
25Sort AlgorithmsVídeo Aula
A quick review of different sorting algorithms that may apply to your interview problems: insertion sort, merge sort, quicksort, and bubble sort.
-
26Information RetrievalVídeo Aula
Learn how full-text search works, including forward and inverted indexes and ranking functions. We'll also cover TF-IDF (Term Frequency * Inverse Document Frequency) and the role it plays in modern information retrieval. Google's PageRank algorithm is explained, which is fairly likely to come up at interviews at Google.
-
27Quiz: Algorithms and Data StructuresQuestionário
Review the main computer science algorithms and data structures, and their computational complexity.
-
28Message QueuesVídeo Aula
Message queues, such as Amazon's SQS (Simple Queue Service,) can be important tools in your design for decoupling producers and consumers of data. Understand how this differs from streaming data.
-
29Data Analytics IntroVídeo Aula
-
30Apache SparkVídeo Aula
Apache Spark is an important tool for the distributed processing of massive data sets, which is a common requirement in system design problems. Learn how Apache Spark works architecturally, and the components it offers such as Spark Streaming, Spark SQL, MLLib for machine learning, and GraphX.
-
31Cloud Computing IntroVídeo Aula
-
32Cloud Computing: A Brief OverviewVídeo Aula
Sometimes you can cheat a little, and use a cloud-based service instead of designing your own for components of your design. We'll discuss how AWS, Google Cloud, and Microsoft Azure each address the problems of storage, computing, NoSQL data stores, container, data streams, Spark / Hadoop, data warehousing, and caching. Then we'll look at an example of designing a data warehouse for log data using AWS. We'll also talk about "hybrid cloud" solutions that combine your own "on-premises" or private cloud with public clouds.
-
33Quiz: Big DataQuestionário
Review your learnings in big data processing.
-
34Interview Strategy IntroVídeo Aula
-
35Working BackwardsVídeo Aula
Arriving at the right design for a problem requires working backward from the problem itself and the end result you are trying to build. We'll see how to apply this principle to problems like "designing YouTube"
-
36Defining RequirementsVídeo Aula
Before designing a system, you must understand its requirements. Learn what questions to ask about the scaling requirements of the system you are designing. How many users? How many transactions per second? How much data? What are the latency requirements? What are the availability requirements? Sometimes you'll be asked to estimate these requirements yourself, and we'll talk about how to do that.
-
37Design StrategiesVídeo Aula
Some general tips for your system design interview: think out loud while designing, sketch it out as you go while interacting with the interviewer, don't make stuff up and be honest when you need some guidance, and know how to defend and refine your design when your interviewer evaluates it.
-
38Mock Interviews IntroVídeo Aula
In this section, we'll look at some real-world system design interview questions. For each problem, we'll see how to ask the right questions to define the requirements, watch a system design emerge from those requirements, and review the results.
-
39Design a URL Shortening Service: Q&AVídeo Aula
We're asked to design a URL shortening service, like bit.ly. Clarifying questions include the scale of the service, restrictions on the characters used, how short the short URL's must be, features such as vanity URL's, how long shortened URL's last, and how URL redirects are edited and deleted.
-
40URL Shortening Service: Try It YourselfVídeo Aula
Now that you have the requirements, try designing the URL shortening service yourself before watching our solution. What API's will you need? How does the redirection work at scale?
-
41URL Shortening Service: System DesignVídeo Aula
We define the API to this service as a RESTful interface, and design a horizontally-scaled system with a distributed NoSQL database and a caching layer.
-
42URL Shortening Service: DebriefVídeo Aula
We'll review what went well in this mock interview, and what you can learn from it.
-
43Design a Restaurant Reservation System: Q&AVídeo Aula
We're asked to design a restaurant reservation system, such as OpenTable. Clarifying questions include the number of restaurants, the specific use cases, latency and reliability requirements, and reporting requirements.
-
44Restaurant Reservation System: Try It YourselfVídeo Aula
Try your hand at designing the restaurant reservation system yourself. How would you build a data schema for it? How will it scale to thousands of restaurants, and hundreds of thousands of users?
-
45Restaurant Reservation System: System DesignVídeo Aula
We work out the database tables we need for this system, and a horizontally scaled, geographically distributed system with a NoSQL data store, caching, and SMS notifications.
-
46Restaurant Reservation System: DebriefVídeo Aula
We review what went well in our mock system design interview for a restaurant reservation system, and what you can learn from it.
-
47Design a Web Crawler: Q&AVídeo Aula
Here's a common system design interview question at Google: design a web crawler, for the entire Internet! We'll clarify the use cases involved, the storage requirements, handling dynamically generated content, and what the main purpose of this crawler is.
-
48Web Crawler: Try It YourselfVídeo Aula
Try designing the web crawler yourself first. How would you distribute it? What algorithms will you use? What are the problems and failure modes you can anticipate and address?
-
49Web Crawler: System DesignVídeo Aula
Designing a massive web crawler is a complex task. It involves graph traversal, and independent systems for queuing URL's to be crawled, downloading those pages, storing their contents, extracting and processing links between pages, and handling filtering and stoplists.
-
50Web Crawler: DebriefVídeo Aula
We'll review what went well in this mock interview for designing a web crawler, and what we can learn from it.
-
51Design a Top-Sellers System: Q&AVídeo Aula
We're asked to design a system to track top-sellers on an e-commerce website. We clarify requirements on scale, timeliness, and the user experience.
-
52Top-Sellers: Try It YourselfVídeo Aula
Try designing the top-sellers system yourself first. Mostly this is a problem in designing an algorithm that meets the customers' needs.
-
53Top-Sellers: System DesignVídeo Aula
We apply an exponential decay algorithm for top-sellers, and employ Apache Spark for processing sales data and publishing it to a data store fronted by a cache exposed to the front-end web servers.
-
54Top-Sellers: DebriefVídeo Aula
We review what went well in our system design interview for designing a bestsellers system, and what we can learn from it.
-
55Design a Video Sharing Service: Q&AVídeo Aula
In this mock system design interview, we're essentially asked to design YouTube. We need to scope that down into something manageable within the time we have.
-
56Video Sharing Service: Try It YourselfVídeo Aula
Try designing the video sharing system yourself first. How will you handle the uploading, transcoding, and serving of videos at massive scale around the world? How do you minimize cost in the process?
-
57Video Sharing Service: System DesignVídeo Aula
In our mock interview, we approach the design with scalable repositories of videos and their metadata uploaded by end users, which go into a queue for transcoding. The transcoded video is then hosted using a smart model to minimize hosting and CDN costs.
-
58Video Sharing Service: DebriefVídeo Aula
Let's review what went well in our mock system design interview for designing a service like YouTube, and what we can learn from it.
-
59Design a Search Engine: Q&AVídeo Aula
This is basically "design Google," and a question you're likely to get there. Again, we need to scope this down into something manageable before we begin.
-
60Search Engine: Try It YourselfVídeo Aula
Try designing a search engine yourself first; how do you measure relevance? What algorithms will you use for mapping keywords to pages, and sorting the results? What system architecture will give you the required scale?
-
61Search Engine: System DesignVídeo Aula
We work through a practical search algorithm inspired by PageRank, and a system design to index the web, store backlinks, rank links, score, sort, and rank results, and build an inverted index of keywords to page results.
-
62Search Engine: DebriefVídeo Aula
We review what went well in our mock system design interview to design a search engine such as Google, and what we can learn from it.
-
63Tech Interview IntroVídeo Aula
In this section, we'll cover some general technical interview tips that aren't specific to system design interviews - but that you'll find very helpful for your interview loop as a whole.
-
64Demonstrating PerseveranceVídeo Aula
Learn how to tell stories of how your perseverance allowed you to solve challenging problems in the past. Understand behavioral interviewing and how to excel within one.
-
65What your Interviewer is Looking ForVídeo Aula
Be ready to demonstrate technical skills, your experience through real-world stories, and your fit with the company's stated values. Demonstrate your independence, grit, and perseverance to the interviewer.
-
66Demonstrating IndependenceVídeo Aula
Prepare stories that demonstrate your initiative and self-motivation ahead of time. And do your homework on the company's values, and think about stories that demonstrate your fit with those values.
-
67Coding at the WhiteboardVídeo Aula
Writing code while someone is watching you can be discomforting and difficult at first, so practice it ahead of time.
-
68Keeping Up your Stamina; Asking QuestionsVídeo Aula
Tips for ensuring your energy is at its best throughout the interview, presenting yourself well, and having questions ready to ask of your interviewers.
-
69Think Big and Be NiceVídeo Aula
Remember to always think big, and design systems for massive scale. "Thinking big" can also mean thinking about the business requirements, and not just the technology. Also, some tips of making a positive impression on the people who are evaluating if they want to spend 8 hours a day with you.
-
70Do Your ResearchVídeo Aula
Preparation is key - such as taking this course! Research can turn up specifically what to expect during interview loops at the company you are interviewing at, which can be very helpful as well.
