Engineering Notes
Interactive lessons on systems, cloud, data and backend engineering — with animations, worked examples, exercises and quizzes.
Algorithms & Coding Interviews
Patterns for coding interviews: two pointers, sliding window, trees, graphs, DP, with every solution in TypeScript and Python.
Interview Preparation
Behavioral interviews for senior engineers, senior engineering practice, and the system design interview method.
System Design
Scale real products: estimation, caching, queues and classic interview designs.
Distributed Systems
Microservices, consistency, transactions, fault tolerance and message brokers.
DevOps & Cloud
AWS, Terraform, Kubernetes, Docker, Linux, CI/CD and observability.
Databases
Modeling, indexing, storage engines, scaling and caching.
Architecture
Layered and clean architecture, SOLID, dependency injection, repositories and service mesh.
Advanced Engineering
Concurrency, race conditions, deadlocks, performance, resilience and debugging distributed systems.
Security
Authentication vs authorization, JWT, OAuth and OpenID Connect, tokens, password hashing and security headers.
Networking & Web
TCP/IP, DNS, TLS, HTTP and browser security.
Backend
API design, Node.js internals and backend frameworks.
Testing
Unit, integration, end-to-end and testing strategy.
Frontend
React and the frontend ecosystem.
Languages
JavaScript, TypeScript, Python, Java and C#: syntax, types, OOP, concurrency and idioms.
Ready to learn (418 of 418)
Algorithms & Coding Interviews · Foundations02Big-O for Interviews
Algorithms & Coding Interviews · Foundations01Arrays & Hashing
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures02Two Pointers
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures03Sliding Window
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures04Prefix Sums
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures05Binary Search
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures06Stacks & Monotonic Stack
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures07Queues & Deques
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures08Linked Lists
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures09Intervals
Algorithms & Coding Interviews · Arrays, Strings & Linear Structures01Recursion & Backtracking
Algorithms & Coding Interviews · Recursion & Trees02Tree Traversals
Algorithms & Coding Interviews · Recursion & Trees03Binary Search Trees
Algorithms & Coding Interviews · Recursion & Trees04Heaps & Top-K
Algorithms & Coding Interviews · Recursion & Trees05Tries
Algorithms & Coding Interviews · Recursion & Trees01Graph BFS, DFS & Grids
Algorithms & Coding Interviews · Graphs02Topological Sort
Algorithms & Coding Interviews · Graphs03Union-Find
Algorithms & Coding Interviews · Graphs04Shortest Paths
Algorithms & Coding Interviews · Graphs01Greedy
Algorithms & Coding Interviews · Greedy, DP & Bits02Dynamic Programming Fundamentals
Algorithms & Coding Interviews · Greedy, DP & Bits03DP on Grids & Knapsack
Algorithms & Coding Interviews · Greedy, DP & Bits04DP on Strings
Algorithms & Coding Interviews · Greedy, DP & Bits05Bit Manipulation
Algorithms & Coding Interviews · Greedy, DP & Bits06Math & Matrix
Algorithms & Coding Interviews · Greedy, DP & Bits01Problem Roadmap & Study Plan
Algorithms & Coding Interviews · Practice Plan01How Behavioral Interviews Are Scored
Interview Preparation · Behavioral Interviews02The STAR(L) Method and Your Story Bank
Interview Preparation · Behavioral Interviews03Leadership and Ownership
Interview Preparation · Behavioral Interviews04Conflict and Disagreement
Interview Preparation · Behavioral Interviews05Failure, Mistakes and Feedback
Interview Preparation · Behavioral Interviews06Influence, Mentoring and Raising the Bar
Interview Preparation · Behavioral Interviews07Ambiguity, Prioritization and Delivery
Interview Preparation · Behavioral Interviews08The Behavioral Question Bank
Interview Preparation · Behavioral Interviews09Questions to Ask and Offer Negotiation
Interview Preparation · Behavioral Interviews01Tech Debt and Refactoring Strategy
Interview Preparation · Senior Engineering Practice02Incident Management and Postmortems
Interview Preparation · Senior Engineering Practice03Design Docs, RFCs and ADRs
Interview Preparation · Senior Engineering Practice04Estimation and Planning
Interview Preparation · Senior Engineering Practice05Code Review and Engineering Standards
Interview Preparation · Senior Engineering Practice01The 45-Minute System Design Framework
Interview Preparation · System Design Interview Method02Estimation Cheat Sheet and Trade-off Vocabulary
Interview Preparation · System Design Interview Method03Senior Expectations and the Mock Rubric
Interview Preparation · System Design Interview Method01Scalability: Vertical vs Horizontal
System Design · System Design02Load Balancing Algorithms
System Design · System Design03CDN (Content Delivery Network)
System Design · System Design04Database Scaling Strategies Recap
System Design · System Design05Regionalization and Geo-Distribution
System Design · System Design06Distributed Tracing
System Design · System Design07Observability Overview
System Design · System Design08Service Discovery
System Design · System Design09Event-Driven Systems — a System-Design Recap
System Design · System Design10Capstone
System Design · System Design11Back-of-the-Envelope Estimation
System Design · System Design12Design a URL Shortener
System Design · System Design13Design a Distributed Rate Limiter
System Design · System Design14Design a Unique ID Generator
System Design · System Design15Design a News Feed
System Design · System Design16Design a Chat System
System Design · System Design17Design a Notification System
System Design · System Design18Design Search Autocomplete
System Design · System Design19Design Video Streaming
System Design · System Design20Design File Storage and Sync
System Design · System Design21Design a Web Crawler
System Design · System Design22Design a Distributed Key-Value Store
System Design · System Design23Design a Payment System
System Design · System Design24Design a Ride-Sharing Service
System Design · System Design25Design a Ticket Booking System
System Design · System Design26Design a Collaborative Document Editor
System Design · System Design27Design a Metrics and Monitoring System
System Design · System Design28Design a Distributed Job Scheduler
System Design · System Design29Design Ad Click Aggregation and Top-K
System Design · System Design01Monolith vs Microservices
Distributed Systems · Fundamentals02Modular Monolith
Distributed Systems · Fundamentals03Service-to-Service Communication
Distributed Systems · Fundamentals04Asynchronous Processing
Distributed Systems · Fundamentals05Backpressure
Distributed Systems · Fundamentals06Retry with Exponential Backoff
Distributed Systems · Fundamentals07Circuit Breaker
Distributed Systems · Fundamentals08Distributed Transactions
Distributed Systems · Fundamentals09CAP Theorem
Distributed Systems · Fundamentals10Fault Tolerance and High Availability
Distributed Systems · Fundamentals11Scalability Patterns
Distributed Systems · Fundamentals01Message Broker Concepts
Distributed Systems · Message Brokers02RabbitMQ
Distributed Systems · Message Brokers03Kafka
Distributed Systems · Message Brokers04RabbitMQ vs Kafka
Distributed Systems · Message Brokers05Queues and Topics
Distributed Systems · Message Brokers06Producers and Consumers
Distributed Systems · Message Brokers07Consumer Groups, Partitions and Offsets
Distributed Systems · Message Brokers08Acknowledgements and Message Ordering
Distributed Systems · Message Brokers09Delivery Guarantees
Distributed Systems · Message Brokers10Dead Letter Queues
Distributed Systems · Message Brokers11Event-Driven Architecture
Distributed Systems · Message Brokers01Processes and systemd
DevOps & Cloud · Linux02Filesystem and Permissions
DevOps & Cloud · Linux03Linux Networking Tools for DevOps
DevOps & Cloud · Linux04Bash Scripting for DevOps
DevOps & Cloud · Linux05Troubleshooting a Linux Server
DevOps & Cloud · Linux01Docker Fundamentals
DevOps & Cloud · Docker02Images and Containers
DevOps & Cloud · Docker03Dockerfile
DevOps & Cloud · Docker04Docker Compose
DevOps & Cloud · Docker05Volumes and Networks
DevOps & Cloud · Docker06Multi-Stage Builds
DevOps & Cloud · Docker07Container Security
DevOps & Cloud · Docker01Kubernetes Architecture
DevOps & Cloud · Kubernetes02Pods and Deployments
DevOps & Cloud · Kubernetes03ConfigMaps and Secrets
DevOps & Cloud · Kubernetes04Ingress, Gateway API and Network Policies
DevOps & Cloud · Kubernetes05Storage and StatefulSets
DevOps & Cloud · Kubernetes06Autoscaling in Kubernetes
DevOps & Cloud · Kubernetes07Helm: Packaging Kubernetes Applications
DevOps & Cloud · Kubernetes08Production Practices and GitOps
DevOps & Cloud · Kubernetes01CI/CD Fundamentals
DevOps & Cloud · CI/CD02Deployment Strategies
DevOps & Cloud · CI/CD01Logging (Platform View)
DevOps & Cloud · Observability02Metrics
DevOps & Cloud · Observability03Tracing and Correlation IDs
DevOps & Cloud · Observability04Health Checks
DevOps & Cloud · Observability05Monitoring and Alerting
DevOps & Cloud · Observability01Infrastructure as Code Fundamentals
DevOps & Cloud · Terraform02Terraform Basics
DevOps & Cloud · Terraform03State and Remote Backends
DevOps & Cloud · Terraform04Variables, Outputs and Locals
DevOps & Cloud · Terraform05Modules
DevOps & Cloud · Terraform06Workspaces and Environments
DevOps & Cloud · Terraform07Terraform in CI/CD
DevOps & Cloud · Terraform08A Production AWS Stack with Terraform
DevOps & Cloud · Terraform09Testing and Policy as Code for Terraform
DevOps & Cloud · Terraform01AWS Fundamentals and IAM
DevOps & Cloud · AWS02VPC, Subnets, and Route Tables
DevOps & Cloud · AWS03EC2
DevOps & Cloud · AWS04S3
DevOps & Cloud · AWS05RDS
DevOps & Cloud · AWS06Elastic Load Balancing and CloudFront
DevOps & Cloud · AWS07SQS and SNS
DevOps & Cloud · AWS08CloudWatch
DevOps & Cloud · AWS09Security Groups
DevOps & Cloud · AWS10Internet Gateway and NAT Gateway
DevOps & Cloud · AWS11Scalability and Monitoring on AWS
DevOps & Cloud · AWS12Lambda and Serverless
DevOps & Cloud · AWS13API Gateway
DevOps & Cloud · AWS14DynamoDB
DevOps & Cloud · AWS15ECS, Fargate and ECR
DevOps & Cloud · AWS16EKS (Elastic Kubernetes Service)
DevOps & Cloud · AWS17Route 53
DevOps & Cloud · AWS18Secrets Manager, SSM Parameter Store and KMS
DevOps & Cloud · AWS19ElastiCache
DevOps & Cloud · AWS20EventBridge and Step Functions
DevOps & Cloud · AWS21IAM Deep Dive
DevOps & Cloud · AWS22CloudFormation and CDK
DevOps & Cloud · AWS23Multi-Account Strategy and AWS Organizations
DevOps & Cloud · AWS24Cost Optimization and the Well-Architected Framework
DevOps & Cloud · AWS01Relational vs NoSQL
Databases · Fundamentals02SQL Basics
Databases · Fundamentals03Transactions and ACID
Databases · Fundamentals04Database Migrations
Databases · Fundamentals01Normalization and Denormalization
Databases · Modeling02Schema Design and Data Modeling
Databases · Modeling03Relationships
Databases · Modeling04Primary and Foreign Key Constraints
Databases · Modeling05JSON in SQL and NoSQL
Databases · Modeling01Database Indexes
Databases · Indexing & Storage02B-Tree
Databases · Indexing & Storage03LSM Trees and SSTables
Databases · Indexing & Storage04Query Optimization
Databases · Indexing & Storage05N+1 Query Problem
Databases · Indexing & Storage01Redis
Databases · Caching02Memcached
Databases · Caching03Redis vs Memcached
Databases · Caching04Caching Strategies
Databases · Caching05Cache Invalidation
Databases · Caching06Cache-Aside, Write-Through, Write-Behind
Databases · Caching07TTL (Time to Live)
Databases · Caching08Distributed Caching
Databases · Caching01Database Partitioning
Databases · Scaling02Replication
Databases · Scaling03Sharding
Databases · Scaling04Regional Partitioning
Databases · Scaling01Software Architecture Fundamentals
Architecture · Architecture02Layered Architecture
Architecture · Architecture03Clean Architecture
Architecture · Architecture04Separation of Concerns
Architecture · Architecture05Dependency Inversion and Dependency Injection
Architecture · Architecture06SOLID Principles
Architecture · Architecture07Repository Pattern
Architecture · Architecture08Domain, Application, Infrastructure (and "Service") Layers
Architecture · Architecture09Modular Monolith vs Monolith vs Microservices
Architecture · Architecture10Service Mesh
Architecture · Architecture01Concurrency vs Parallelism
Advanced Engineering · Advanced02Race Conditions
Advanced Engineering · Advanced03Deadlocks
Advanced Engineering · Advanced04Memory and Resource Management
Advanced Engineering · Advanced05Performance Optimization and Bottlenecks
Advanced Engineering · Advanced06Failure Handling and Retry Strategies
Advanced Engineering · Advanced07Resilience and Reliability Patterns
Advanced Engineering · Advanced08Debugging Distributed Systems
Advanced Engineering · Advanced01Authentication vs Authorization
Security · Security02JWT (JSON Web Token)
Security · Security03OAuth 2.0
Security · Security04OpenID Connect
Security · Security05Access and Refresh Tokens
Security · Security06Password Hashing
Security · Security07Hashing vs Encryption
Security · Security08Security Headers
Security · Security09Identity Providers
Security · Security01The OSI Model
Networking & Web · Fundamentals02The TCP/IP Model
Networking & Web · Fundamentals03TCP vs UDP
Networking & Web · Fundamentals04IP, IPv4, and IPv6
Networking & Web · Fundamentals05Ports
Networking & Web · Fundamentals06NAT, DHCP, and ARP
Networking & Web · Fundamentals07Routing, Subnets, and CIDR
Networking & Web · Fundamentals08Firewalls
Networking & Web · Fundamentals09TLS
Networking & Web · Fundamentals10Load Balancers (Network Level)
Networking & Web · Fundamentals11Latency and Troubleshooting
Networking & Web · Fundamentals01HTTP Fundamentals
Networking & Web · HTTP02HTTP Versions
Networking & Web · HTTP03HTTP Headers
Networking & Web · HTTP04Cookies and Sessions
Networking & Web · HTTP05Caching and Compression
Networking & Web · HTTP06Content Negotiation
Networking & Web · HTTP07DNS
Networking & Web · HTTP08Proxy and Reverse Proxy
Networking & Web · HTTP01Browser Request Lifecycle
Networking & Web · Browser Security02CORS (Cross-Origin Resource Sharing)
Networking & Web · Browser Security03CSRF (Cross-Site Request Forgery) and CSRF Tokens
Networking & Web · Browser Security04WebSockets
Networking & Web · Browser Security05WebRTC
Networking & Web · Browser Security06Hostname vs. Domain
Networking & Web · Browser Security01Node.js Architecture and Runtime
Backend · Node.js02Node's Event Loop (libuv)
Backend · Node.js03CommonJS vs ESM in Node.js
Backend · Node.js04File System (fs)
Backend · Node.js05Streams
Backend · Node.js06Buffers
Backend · Node.js07Events and EventEmitter
Backend · Node.js08The process Object and Environment Variables
Backend · Node.js09Worker Threads
Backend · Node.js10Child Processes
Backend · Node.js11npm, package.json, and Dependencies
Backend · Node.js01REST Fundamentals
Backend · API Design02HTTP Methods and Status Codes
Backend · API Design03Resource Design
Backend · API Design04Pagination, Filtering, Sorting, Searching
Backend · API Design05API Versioning
Backend · API Design06Idempotency
Backend · API Design07Rate Limiting
Backend · API Design08Request Validation
Backend · API Design09Error Response Design
Backend · API Design10API Security
Backend · API Design11API Documentation
Backend · API Design12GraphQL
Backend · API Design13gRPC
Backend · API Design01Express Fundamentals
Backend · Frameworks02NestJS Fundamentals
Backend · Frameworks03Next.js as a Backend
Backend · Frameworks04Routing (Backend Frameworks)
Backend · Frameworks05Controllers
Backend · Frameworks06Middleware
Backend · Frameworks07Request/Response Lifecycle
Backend · Frameworks08Validation and DTOs
Backend · Frameworks09Dependency Injection
Backend · Frameworks10Services and Repositories
Backend · Frameworks11Exception Handling (Framework Level)
Backend · Frameworks12Authentication & Authorization at the Framework Level
Backend · Frameworks13Logging
Backend · Frameworks14Configuration Management
Backend · Frameworks15File Uploads
Backend · Frameworks16Background Jobs
Backend · Frameworks01Testing Fundamentals and the Test Pyramid
Testing · Testing02Unit Testing
Testing · Testing03Integration Testing
Testing · Testing04End-to-End (E2E) Testing
Testing · Testing05Test Doubles
Testing · Testing06Test Isolation and Coverage
Testing · Testing07Testing Strategy
Testing · Testing08Jest
Testing · Testing09Cypress and Playwright
Testing · Testing10Selenium
Testing · Testing11xUnit (.NET)
Testing · Testing12SonarQube
Testing · Testing13API Testing
Testing · Testing14Test Architecture
Testing · Testing01React Fundamentals
Frontend · React · Core02Components and Props
Frontend · React · Core03State
Frontend · React · Core04Rendering and Reconciliation
Frontend · React · Core05Component Lifecycle
Frontend · React · Core01useState
Frontend · React · Hooks02useEffect
Frontend · React · Hooks03useContext
Frontend · React · Hooks04useReducer
Frontend · React · Hooks05useRef
Frontend · React · Hooks06useMemo
Frontend · React · Hooks07useCallback
Frontend · React · Hooks08useLayoutEffect
Frontend · React · Hooks09useActionState
Frontend · React · Hooks10useOptimistic
Frontend · React · Hooks11useFormStatus
Frontend · React · Hooks12Custom Hooks
Frontend · React · Hooks01Context API In Depth
Frontend · React · Advanced02State Management Patterns
Frontend · React · Advanced03Performance Optimization
Frontend · React · Advanced01Next.js Fundamentals
Frontend · Ecosystem02Next.js Routing (App Router)
Frontend · Ecosystem03Next.js Server Components
Frontend · Ecosystem04Next.js Client Components
Frontend · Ecosystem05Next.js Server Actions
Frontend · Ecosystem06React Router
Frontend · Ecosystem07Tailwind CSS
Frontend · Ecosystem08Material UI
Frontend · Ecosystem09shadcn/ui
Frontend · Ecosystem10Redux
Frontend · Ecosystem11Redux Toolkit
Frontend · Ecosystem12Zustand
Frontend · Ecosystem01Variables and Data Types
Languages · JavaScript02Scope
Languages · JavaScript03Hoisting
Languages · JavaScript04Closures
Languages · JavaScript05The this Keyword
Languages · JavaScript06Prototypes
Languages · JavaScript07Prototype Chain
Languages · JavaScript08Classes
Languages · JavaScript09Objects
Languages · JavaScript10Arrays
Languages · JavaScript11Functions
Languages · JavaScript12Higher-Order Functions
Languages · JavaScript13Callbacks
Languages · JavaScript14Destructuring
Languages · JavaScript15Spread and Rest Operators
Languages · JavaScript16Modules (ES Modules)
Languages · JavaScript17Error Handling
Languages · JavaScript18Iterators and Generators
Languages · JavaScript19Symbols
Languages · JavaScript20Map
Languages · JavaScript21Set
Languages · JavaScript22WeakMap and WeakSet
Languages · JavaScript23Hashing and Hash Tables
Languages · JavaScript24Time and Space Complexity
Languages · JavaScript25Synchronous vs Asynchronous Execution
Languages · JavaScript26Call Stack
Languages · JavaScript27Event Loop
Languages · JavaScript28Microtasks vs Macrotasks
Languages · JavaScript29Promises
Languages · JavaScript30async / await
Languages · JavaScript31Promise Chaining
Languages · JavaScript32Error Handling in Asynchronous Code
Languages · JavaScript33Parallel vs Sequential Async Operations
Languages · JavaScript34Concurrency in JavaScript
Languages · JavaScript35Cancellation / AbortController
Languages · JavaScript01Type System Fundamentals
Languages · TypeScript02Type Inference
Languages · TypeScript03Interfaces
Languages · TypeScript04Type Aliases
Languages · TypeScript05Union Types
Languages · TypeScript06Intersection Types
Languages · TypeScript07Generics
Languages · TypeScript08Enums
Languages · TypeScript09Utility Types
Languages · TypeScript10Conditional Types
Languages · TypeScript11Mapped Types
Languages · TypeScript12Type Guards and Narrowing
Languages · TypeScript13keyof and typeof Operators
Languages · TypeScript14The infer Keyword
Languages · TypeScript15Generic Constraints
Languages · TypeScript16any vs unknown vs never
Languages · TypeScript17Declaration Files
Languages · TypeScript18TypeScript Configuration (tsconfig.json)
Languages · TypeScript01Syntax and Data Types
Languages · Python02Variables and Scope
Languages · Python03Functions and *args / **kwargs
Languages · Python04Data Structures
Languages · Python05Comprehensions
Languages · Python06OOP: Classes and Objects
Languages · Python07Inheritance and Polymorphism
Languages · Python08Decorators
Languages · Python09Generators and Iterators
Languages · Python10Exception Handling
Languages · Python11Modules and Packages
Languages · Python12Context Managers
Languages · Python13Type Hints
Languages · Python14Asyncio Basics
Languages · Python15The GIL and Choosing a Concurrency Model
Languages · Python16Python's Memory Model and Garbage Collection
Languages · Python17Dataclasses, Pydantic and Data Validation
Languages · Python18FastAPI Essentials
Languages · Python19Packaging, Dependencies and Environments
Languages · Python20Python Performance and Profiling
Languages · Python01Syntax and Data Types
Languages · Java02OOP Fundamentals
Languages · Java03Inheritance and Polymorphism
Languages · Java04Collections Framework
Languages · Java05Exception Handling
Languages · Java06Generics
Languages · Java07Streams and Lambdas
Languages · Java08Concurrency Basics
Languages · Java01C# Syntax and Data Types
Languages · C#02C# OOP Fundamentals
Languages · C#03LINQ (Language Integrated Query)
Languages · C#04Collections and Generics
Languages · C#05Exception Handling
Languages · C#06Async/Await
Languages · C#07.NET Project Structure
Languages · C#08Delegates and Events
Languages · C#09The CLR and Garbage Collection
Languages · C#10Value Types, Span<T> and Memory<T>
Languages · C#11Async Internals, ValueTask and Cancellation
Languages · C#12Threading, the TPL and Synchronization
Languages · C#13The ASP.NET Core Request Pipeline and Middleware
Languages · C#14Dependency Injection Lifetimes in .NET
Languages · C#15EF Core in Depth
Languages · C#16Modern C#: Records, Pattern Matching and Nullable Reference Types
Languages · C#17Performance and Benchmarking in .NET
Languages · C#18.NET Interview Gotchas
Languages · C#