
Begin your system design interview prep by tackling an open-ended question: design a to-do list application, and in 10 minutes draw your first diagram to understand the interview structure.
Design a to-do list app from an open-ended system design prompt, applying requirements engineering to define privacy, core features, item handling, sorting by title or due date, latency and scalability.
Estimate system capacity by calculating daily write requests from active users, derive reads with a 5:1 ratio, then compute bandwidth and forecast 400 GB storage in five years.
Define a data model for a to-do app by identifying entities (users and to-do items), their attributes, and a one-to-many relationship; evaluate databases and design scalable storage and API access.
Develop a robust API design with endpoints that expose required functionality. Define parameters like user id, sorting, and paging to fetch the correct subset of to-do items and page indices.
Explore core system design components—services, relational databases, and a representation layer—and learn to scale with multi‑instance deployments, load balancers, and data federation across user and to-do item databases.
Design discussion warm-up in a regular interview, quizzing newly learned concepts on design decisions and trade-offs, with later advanced questions to challenge you and provide guidance through the online reading.
Explore the big tech system design interview bootcamp structure, learn to design various systems, tackle mock interviews aligned with the six-step process, and join a collaborative Discord community.
Discover how url shorteners transform long urls into meaningful links, using encoding to prevent duplicates and enable analytics, while applying requirements engineering for a tiny url mock interview.
Identify the user problem and essential features to define functional requirements, and distinguish core from support features. Prioritize non-functional requirements like availability, consistency, and scalability, and learn capacity estimation basics.
Explore encoding strategies to generate short, unique, URL-safe keys with base64, and learn a scalable architecture using pre-generated key ranges and a key generator service.
Explore key-value stores as the simplest NoSQL option, mapping keys to values with put, get, and delete for fast access, while lacking value-based queries.
Understand how the six-step mock interview works and how the global audience is accommodated, then design a Tiny URL system through deep dives, student-led solutions, and collaborative discussion.
Identify functional requirements for Tiny oil: unique and short links, redirects, and a link history with expiration, and prioritize high availability, scalability, and low latency for a read-heavy, distributed system.
Estimate capacity by calculating requests per second, bandwidth, and storage from 100 million active users with 10:1 read-write ratio; yields 1100 rps and 4 terabyte of storage over five years.
Define the data model with users, links, and key ranges, and their properties; use relational databases for users and key ranges, and a key-value store for links.
Design three api endpoints: create link (returns short url), get link history with user id and sorting, and look up url to retrieve the original long url.
Design a scalable high level architecture for a URL shortener, integrating web interface, UL service, key value store, key generator, relational database, and five-year expiration via cron jobs.
Engage in a practical design discussion that mirrors a real system design interview, exploring design choices, trade-offs, extensions, and how to strengthen the data model and API design.
Contrast relational and non-relational databases by examining underlying paradigms, nonfunctional requirements, and how sql databases and key value stores differ in behavior.
Explore relational databases, CRUD, and ACID transactions—atomicity, consistency, isolation, and durability—through a money transfer example, including commit, abort, and two-phase commit in distributed systems.
Explore non-relational databases and the BASE guarantees—basically available, soft state, and eventual consistency—contrasting them with ACID and transactions for scalable, high-availability systems.
Compare asset and base transactional models for relational and non relational databases; assess pessimistic guarantees, complex queries, and distribution trade-offs in terms of availability, performance, and consistency.
Trace the evolution of file sharing from BitTorrent to cloud storage, and learn how file synchronization, capacity estimation, and server-client communication with a message broker enable scalable, interview-ready systems.
Estimate capacity by computing requests per second from daily active users and activities, factor peak loads and read/write ratios, then project bandwidth and storage with simple rounding.
Learn how the file synchronization algorithm uses per-block hashes to transmit only changed blocks, enabling scalable, bandwidth-efficient live collaboration.
Explore server client communication for a file sharing notification service, compare push and pull options, long polling, web sockets, and server sent events, and identify SSE as the unidirectional solution.
Explore how a message broker enables asynchronous, decoupled communication between microservices, supporting point to point messaging and pub sub patterns, message persistence, and reliable delivery across distributed systems.
Explore file storage, object storage, and block storage as system components for a scalable file sharing service; compare simplicity, metadata, performance, and update strategies for optimized design.
Design a Dropbox-like file hosting service in a mock interview, highlighting the freemium model, storage-based subscriptions, and Dropbox's founding story by Drew Houston and Arash Ferdowsi.
Engage in requirements engineering for a distributed file synchronization system like Dropbox, defining core features, data snapshots, multi-client support, non-functional traits, and scale to ensure consistency and low latency.
Estimate capacity by calculating write and read throughput from 5 million total users and 100 million daily active users, using a 10-to-1 read/write ratio, 2x peak load, bandwidth and storage.
Model entities, attributes, and relationships for a Dropbox-like system, including users, files, and chunks, with historic snapshots, and choose relational, block storage, and key-value databases to satisfy ACID needs.
Details a three-endpoint api design for a sync workflow: compare hashes to identify diverging chunks, upload changes to send updated chunks, and request updates after a remote notification.
Design a client with a watch service, local and remote updater services, and a hash database for chunked synchronization. Use server-sent events for notifications and a queue to decouple services.
Join a design discussion on scalable, resilient system design, bottlenecks, and nonfunctional requirements, then explore backups, offline editing, data model and API design, and storage asset guarantees.
Explore streaming challenges, from uploading large video files asynchronously to delivering smooth playback, with streaming protocols, a search engine database for catalogs, and api design.
Identify entities, attributes, and relationships to craft an efficient data model for system design interviews. Justify database choices with normalization, SQL tuning, sharding, and federation considerations.
API design is explained as a binding contract between client and server, translating functional requirements into endpoint goals for to-do items, with naming, inputs, outputs, and best practices.
Master reliable large-file uploads and processing pipelines to generate device-optimized video versions stored in object storage for seamless streaming.
Learn to deliver reliable streaming by choosing the right protocol (tcp or udp), using adaptive bitrate streaming, and building a video service that serves media chunks to end users.
Explore caching fundamentals and the role of content delivery networks in reducing latency for streaming and web content, including cache hits, misses, time to live policies, and invalidation.
Implement a search engine database to power fast and relevant streaming search with an inverted index. Explain how indexing, documents, and ranking improve accuracy, autocomplete, and handle typos at scale.
Trace Netflix's evolution from a DVD rental by mail service to streaming video in 2007. Engage in a mock interview to design Netflix's architecture and sharpen independent problem solving.
Delve into requirements engineering for a Netflix-scale system, defining functional and non-functional needs, core features like video upload and streaming, and discovery tools with emphasis on availability and scalability.
Estimate throughput, bandwidth, and storage for Netflix by converting 30 million daily active users and 60 minutes of video into requests per second and storage needs.
Identify the videos, thumbnails, metadata, and users. Plan attributes and relationships, and propose storage: relational for users, object store for media, and search engine for metadata.
Design core APIs for a Netflix-style system, drafting upload with video data, metadata, and admin user id; stream by video id; and search with query and page index.
Design a scalable video upload and streaming system for Netflix, including admin upload apps, chunked uploads with a message queue, thumbnails, geo-proximity streaming, and search indexing.
Engage in the Netflix system design discussion, answering design justification questions, extension requirements, and deep-dive topics on relational versus non-relational databases, caches, search engines, load balancing, and content delivery networks.
Practice mock system design interviews to build resilience against lack of background information, gain experience through routine, and study with self-directed mocks and numbers to quantify system scale on Discord.
Explore designing a Twitter-like system with a read-heavy, distributed architecture that prioritizes availability over consistency, defining core features like follows, user timelines, and 300-character tweets with media support.
Explore designing Instagram as a read-heavy, distributed social media platform focused on photos and videos, with a newsfeed, following, and features like uploading, liking, search, and availability.
Guide learners to design a WhatsApp-like architecture, weighing read-heavy versus write-heavy loads and distributed systems, with 1:1 and group chats, notifications, chat history, status, typing indicators, and cross-device consistency.
Design a scalable, distributed architecture for Amazon that is read-heavy, prioritizes payment consistency, and delivers catalog, search, cart, and order history with high availability and low latency.
Design a scalable, available distributed architecture for Spotify, handling music, audiobooks, and podcasts, with read-heavy traffic, content upload, search, thumbnails, and personalized recommendations.
Design Uber-style ride-hailing systems with maps, location tracking, matchmaking, and real-time ride progression for passengers and drivers, while balancing consistency, availability, and scalability.
It's 2024 and this is the year, you finally land your dream job in big tech! Hiring season has already started!
Do you want to make the next big step in your software engineering career and land a a job at one of the big tech company like Google, Facebook, Amazon, Microsoft, Netflix, or other tech-savvy companies? But, you don't have any idea how to even start systematically prepare for the system design interview? Then this course is for you!
This course is taught by an experiences senior software engineer who landed a job in big tech just after going through the same as go you through right now.
Only a minority of developers today own a computer science degree, many more are "self taught" or boot camp graduates. Many feel intimidated by the system design interviews of big tech as topics large-scale architecture and design patterns you will barely learn from day-to-day coding experience.
This course allow to catch up and learn enough system design fundamentals to get through the interview, without drowning students in endless theory lessons.
Included in the course fee is your access to a private online community to find fellow students to discuss system design question and find a sparring partner for mock interviews!
In this course you will learn the following:
This course covers all commonly discussed systems!
I help you to understand what's the expectation and take you on a deep-dive into all commonly discussed systems within the system design interview.
Netflix
Youtube
Amazon
Dropbox
Learn the interview structure hands-on!
For each system we walk through the entire interview structure together step-by-step:
1. Functional Requirements Engineering
2. Non-Functional Requirements Engineering
3. Capacity Estimations
4. Data Model Design
5. System Design
6. Component Design
All Technologies, Architectures and Patterns are explained, no prior experience needed!
We will draw each of these real-world systems and discuss all design choices made. I introduce all technologies, architectures and patterns we come across:
Micros Services
Load Balancer
Servers & Clients
Databases
Message Broker
Many More
Drill-down to Component Level Design
The course is intended to go beyond covering the bare minimum of knowledge to barely pass the interview. I cover enough depth so you feel confident to handle any bar raiser question your interviewer might come up with. That's why we will down the the component level design to make sure you have some backup knowledge to shine with!
Disclaimer: This course is applied!
You won't be asked to just lean back and enjoy the show. I leverage Excalidraw, the great collaborative white board tool to draw to help you actively follow the course, make up your own mind about each design and draw it the way you believe would be best!
Who is your Instructor?
I am an experienced instructor with more than 10.000 taught students on Udemy alone. I am also a senior software engineer working in big tech. I have gone through the same interview process myself and I also conduct interviews from the other side of the table. Moreover, I design system architectures on a daily bases.
My goal is to teach you everything it takes for you to master your system design interview with confidence and ease!
You don't have to be an expert in any of it to get started!