Skip to main content

Backend System Design

Backend system design interviews evaluate a candidate's ability to design scalable, reliable, and maintainable systems.

Interview Structure

System design interviews typically last 45-60 minutes and cover the following areas:

  • Requirements gathering - Defining functional and non-functional requirements
  • High-level architecture - Components and their interactions
  • Deep dives - Database design, scaling strategies, trade-offs
  • Operational concerns - Monitoring, failure handling, deployment

Interview Framework

1. Clarify Requirements (5 minutes)

Functional requirements:

  • Core features
  • Target users
  • Inputs and outputs

Non-functional requirements:

  • Scale (users, requests per second)
  • Latency requirements
  • Consistency vs availability trade-offs
  • Read vs write ratio

2. Back-of-Envelope Estimation (3-5 minutes)

Calculate the following metrics to inform design decisions:

  • Requests per second
  • Storage requirements
  • Bandwidth needs

See Estimation for techniques and reference numbers.

3. High-Level Design (10-15 minutes)

Define the main components:

  • Client/API layer
  • Application servers
  • Databases and caches
  • Background workers
  • Message queues

Include data flow between components.

4. Deep Dive (15-20 minutes)

Common deep dive topics include:

  • Database schema and indexing
  • API design
  • Caching strategy
  • Failure handling
  • Scaling bottlenecks

5. Wrap Up (5 minutes)

  • Design summary
  • Operational concerns (monitoring, alerting)
  • Future improvements

Core Concepts

Scaling Foundations

Architecture Patterns

Common Interview Questions

Data Systems

Real-Time Systems

Content and Social

Infrastructure

Key Trade-offs

Trade-offOption AOption B
SQL vs NoSQLACID compliance, complex queriesHorizontal scale, flexible schema
Consistency vs AvailabilityFinancial data, inventorySocial feeds, analytics
Push vs PullReal-time requirementsHigh fan-out scenarios
Cache vs DatabaseRead-heavy, latency-criticalWrite-heavy, consistency-critical
Sync vs AsyncSimple flows, immediate feedbackDecoupling, reliability

Preparation Guidelines

  1. Practice verbal explanation - System design is a collaborative discussion
  2. Draw diagrams - Visual communication matters
  3. Memorize reference numbers - Latency, throughput, and storage values
  4. Study production systems - Engineering blogs from Netflix, Uber, Airbnb
  5. Start simple, then scale - Begin with a basic design before adding complexity