1️⃣ Types of Questions

  • Product Design
    • Apps like Uber, Netflix, Dropbox
  • Infrastructure Design
    • Rate limiter
    • Message queue
    • Data pipeline

2️⃣ Standard Interview Framework

Step-by-step R β†’ E β†’ A β†’ D β†’ D

step-by-step.excalidraw

1. Requirements (~5 min)

Functional Requirements

  • Defines

    • what the system does == define the features of the system
    • Format: Users should be able to...
  • Example (Twitter):

    • Post tweets
    • Follow users
    • View feed
  • Tips:
    • Focus on top 3 features only

Non-functional Requirements

  • how the system should behaves

  • Examples:

    • High availability
    • Low latency (<200ms)
    • Scale (100M+ users)
  • FR Vs NFR

    • FR: User can upload photo
    • NFR: Photo upload should finish within 2 sec


2. Core Entities (~2 min)

  • Example: Define main data objects
    • User
    • Tweet
    • Follow
  • How to identify:

    • Who are actors?
    • What are main resources?
  • Tips:

    • Start small β†’ expand later
    • Avoid over-designing schema early
      • i am not gonna details the key filed and column yet i don't quite know that yet. i am too early in my design. they are gonna evolve naturally. As when i move to high level design I will be explicit about exactly the filed that matter So, For now i would stop here.

3. APIs (~5 min)

Look for the FR. then try to satisfy that with API REST API βœ…
POST /tweets
GET /tweets/{id}
POST /follows
GET /feed

4. High-Level Design

  • Goal: Build working system first

  • Approach:

    • Draw servers
    • Draw database
    • Draw cache
    • Draw load balancer
    • Map APIs β†’ system flow
    • Just Create Request β†’ Server β†’ DB β†’ Response then enhance later
  • *Key Tips:

    • Start simple βœ…
    • Add complexity later ⚠️
    • Explain data flow clearly
    • Show:
      • Where data is stored
      • What changes per request
  • Common Mistake:*

    • Adding cache, queues, sharding too early ❌

5. Deep Dive (~10 min)

  • *Goal: Improve system for:

    • Scale
    • Performance
    • Reliability
    • You can deep dive to few places in high level design
  • *What to do:

    • Handle bottlenecks
    • Handle edge cases
    • Add:
      • Caching
      • Sharding
      • Load balancing
  • *Example (Twitter Feed):

    • Fanout-on-read vs fanout-on-write
    • Use cache for faster reads
  • *Pro Tips:

    • Junior β†’ let interviewer guide
    • Don’t dominate conversation
    • Give interviewer space to probe

3️⃣ TIPS

1. Use ONE simple mnemonic

SCALE

  • S β†’ Scalability
  • C β†’ CAP
  • A β†’ Availability / Fault tolerance
  • L β†’ Latency
  • E β†’ Environment - mobile / web

πŸ‘‰ Enough for interviews βœ…


2. Learn to CONTROL the interview (soft skill)

If interviewer interrupts:

Say:

β€œI can dive deeper here, but I’d like to first complete the high-level design and then come back”


3. Don’t memorize answers, learn thinking

❌ Wrong mindset:

  • β€œShould I use Kafka?”

βœ… Right mindset:

  • β€œDo I need async processing?”

4. Always mention trade-offs

Example:

β€œI’ll use cache to reduce latency, but this introduces consistency challenges”

πŸ‘‰ This is what interviewers LOVE


5. Add 1–2 advanced points (edge boost πŸš€)

From comments:

  • Monitoring & metrics
  • Bottleneck detection
  • Query patterns

πŸ‘‰ Just mentioning these = strong signal


6. Final Recommendation

Your compact interview mental model should be:

1. Clarify top 3 functional requirements  
2. Clarify top 3 NFRs  
3. List core entities  
4. Define API/interface  
5. Draw simple end-to-end design  
6. Deep dive into bottleneck  
7. Add scaling + reliability + monitoring

And remember this

Do not fight the interviewer’s flow.  
Stay structured even when interrupted.