From the interviewers point-of-view, the goal is to assess a person's:
- technical design skills
- ability to collaborate
- work under pressure
- resolve ambiguity
Red flags in interview:
- over-engineering: delight in design purity, ignore trade-off
- narow mindedness, stubbornness
- giving out answer without thinking & talking through the problem
Ask the right questions:
- what specific features
- how many users, traffic
- scaling plan
- tech stack (mobile/web): language, cache service
Make a initial design and ask for feedback
- draw box diagrams
- back-of-the-envelope estimation on storage
- look for edge cases
Depending on job level, the interview may focus on high-level design, or performance characteristics (bottleneck)
- do not try to explain technical details (e.g. how an algorithm works)
- careful with time management. Don't get carried away by trivia
Answer follow-up questions, including:
- identify system bottleneck and potential improvement
- recap of design (especially if more than one solutions are suggested)
- failure cases
- operation and monitoring (metrics, error logs)
- scale to next level
- Design Rate Limiter
- Design Consistent Hashing
- Design Key-Value Store
- Design Unique ID Generator
- Design URL Shortener
- Design Web Crawler
- Design Notification System
- Design News Feed
- Design Chat Systen
- Design Auto-complete
- Design YouTube
- Design Google Drive