Practice
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Frontend UI Machine Coding
Resources
Career Advice and Roadmaps
Data Structures and Algorithms
Machine Coding Round (LLD)
System Design & Architecture (HLD)
Backend Development
Frontend Development
Project Ideas for Software Developers
Core Computer Science
Companies
SDE Jobs & Internships
Interview Questions
Compare Companies
IDE
Online IDE
Collaborative IDE

What are the best resources for System Design Interview? - Part I | HLD

Gaurav Chandak
Gaurav Chandak
Disclaimer: This article was written few years ago and may no longer be relevant as software engineering has changed a lot in the last few years. This is what may be more relevant now: Future of Software Engineering - Gaurav Chandak

System Design/Architecture interview also known as High-Level Design Round (HLD) is a very critical round for senior software developer roles (2+ years of experience; SDE II and above).

There are a lot of resources present on the internet for system design interview preparation. We're listing down some of the best resources in this article to help you with your preparation.

This is the first article in a series of articles on System Design prep resources.

Distributed Systems Introduction

The system design interview mostly deals with discussing how you would build a software application for scale.

For building at scale, you need to deal with distributed systems. Let's look at the top resources that should help you get started with distributed systems.

Harvard Scalability Lecture by David Malan

The best lecture there is for learning about scalability and system design.

The lecture covers almost all the topics required for system design. After going through this video, it would be a good idea to Google about the different topics for getting more in-depth knowledge.

Distributed Systems in One Lesson by Tim Berglund

Using a series of examples all set in a coffee shop, Tim explores different distributed system concepts.

This talk is a very good follow-up to David Malan's lecture and will help solidify your basic understanding of distributed systems.

CAP Theorem

CAP theorem (Consistency, Availability, Partition Tolerance) is one of the most basic and one of the most important concepts of distributed systems.

Most of the design decisions taken while building a system requires making trade-offs between consistency and availability which is at the core of the CAP theorem.

A plain english introduction to CAP Theorem by Kaushik Sathupadi

This is possibly the easiest way to get an idea about CAP theorem. Kaushik tries to explain CAP theorem using a real life example.

This article is one of the first articles that people generally read to understand CAP theorem.

Link to the article

CAP Theorem: Revisited by Robert Greiner

Robert starts explaining the CAP theorem by going through the three components of CAP (Consistency, Availability, Partition Tolerance).

After that he explains the only two options that we have (CP & AP) as network failures are bound to happen and we can't choose CA to build our system.

Link to the article

Horizontal vs Vertical Scaling

How do you scale your system to handle more load/traffic?

If you know nothing about distributed systems, the obvious solution to this would be to replace existing machines with better machines (high CPU/RAM/Disk), i.e., through vertical scaling.

But if you've worked on distributed systems or have seen David Malan's lecture, you would know about horizontal scaling, i.e., using multiple machines to handle the load.

Horizontal vs. Vertical Scaling by Gaurav Sen

Gaurav starts by giving a brief about both the methods of scaling followed by specific differences between the two.

This is a pretty good follow-up video on Horizontal vs Vertical Scaling that you can watch after David Malan's lecture.

This is the first article in a series of articles on System Design prep resources. We'll be sharing more articles on this topic soon.

Meanwhile, please show us some love and share this article on social media through the share buttons

Gaurav Chandak
Gaurav Chandak
Gaurav is the co-founder of workat.tech and has previously worked at Flipkart and Microsoft. He intends to actively contribute to the future of education through workat.tech.
Related Content
Best Engineering Blogs/Articles/Videos for System Design
Google System Design Interview Preparation Doc | Complete Guide
Machine Coding Round Practice Questions for Interviews | Flipkart, Uber, Swiggy, Udaan, Gojek
SDE Bootcamp - Become a software engineer at a product-based company
Practice System Design
Learning Resources
Interview Prep Resources
Blog
  • Career Advice and Roadmaps
  • Data Structures & Algorithms
  • Machine Coding Round (LLD)
  • System Design & Architecture
  • Backend Development
  • Frontend Development
  • Awesome Project Ideas
  • Core Computer Science
Practice Questions
  • Machine Coding (LLD) Questions
  • System Design (HLD) Questions
  • Topic-wise DSA Questions
  • Company-wise DSA Questions
  • DSA Sheets (Curated Lists)
  • JavaScript Interview Questions
  • Frontend UI Machine Coding Questions
Online Compilers (IDE)
  • Online Java Compiler
  • Online C++ Compiler
  • Online C Compiler
  • Online Python Compiler
  • Online JavaScript Compiler
Topic-wise Problems
  • Dynamic Programming Interview Questions
  • Linked List Interview Questions
  • Graph Interview Questions
  • Backtracking Interview Questions
  • Arrays Interview Questions
  • Trees Interview Questions
Company-wise Problems
  • Amazon Interview Questions
  • Microsoft Interview Questions
  • Google Interview Questions
  • Flipkart Interview Questions
  • Adobe Interview Questions
  • Facebook Interview Questions
DSA Sheets (Curated Lists)
  • Top Interview Questions
  • FAANG Interview Questions
  • Most Asked Interview Questions
  • 6 month DSA Practice Sheet
  • 3 month DSA Practice Sheet
  • Last minute DSA Practice Sheet