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

1. Requirements (~5 min)

Functional Requirements

  • Define what the system should do
  • Format: Users should be able to...

Example (Twitter):

  • Post tweets
  • Follow users
  • View feed

Tips:

  • Focus on top 3 features only
  • Ask:
    • “Should the system support X?”
    • “What happens if Y?”

Non-functional Requirements

  • Define system qualities

Examples:

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


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. 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

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

👉 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

From debates:

❌ 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.