The brief
Recommend useful content while balancing relevance, freshness, and exploration. Your design should meet these requirements:
- Recommendations use user and item signals.
- New users and new items still receive reasonable results.
- The system can measure changes without blocking requests.
Scale to design for
Millions of users and items; recommendations served in < 100–200 ms; new users/items daily; experimentation is continuous.
State these assumptions out loud in the interview, then let them drive your choices: they decide what needs caching, sharding or asynchronous processing.
Before you start
You'll get more out of this round if you're comfortable with:
- Candidate generation vs ranking
- Collaborative filtering
- Embeddings basics
- A/B testing
Questions an interviewer may ask
Expect follow-ups like these once your high-level design is on the board. Have an answer, and a reason, for each:
- How do you go from 10M items to 20 recommendations in 100 ms?
- What does a brand-new user see?
- How do you avoid popularity bias?
- How do you test a new model safely?
Common mistakes to avoid
- Scoring every item per request
- No cold-start plan
- Training/serving skew
- Evaluating only offline metrics
- No feedback loop logging
Concepts this round covers
- Candidate generation
- Ranking
- Cold start
- Personalization
What a complete answer covers
An online candidate/ranking flow, offline training loop, fallback behavior, and a measurable experimentation plan.
There is no single correct design. A strong answer meets the requirements at the stated scale and explains the trade-offs behind each choice. New to the format? Read how to prepare for a system design interview.