Design a ranking and recommendation system
Company: Meta
Role: Software Engineer
Category: System Design
Difficulty: medium
Interview Round: Technical Screen
Design a **ranking + recommendation system** for a personalized feed (e.g., short videos, posts, or products).
### Requirements
**Core goals**
- Given a user `U`, return a ranked list of items for their feed.
- Support both:
- **Home feed** (personalized recommendations)
- Optionally: **Following feed** (content only from followed creators)
**Functional**
- Candidate generation (retrieve a large pool of potentially relevant items).
- Ranking (order items by predicted utility).
- Handle freshness/recency, diversity, and content policies (blocks, safety filters).
- Support exploration vs. exploitation.
**Non-functional**
- Low latency per request (e.g., p95 < 200 ms) with high QPS.
- High availability, graceful degradation.
- Near real-time adaptation (user actions should influence feed quickly).
- Observability and experiment platform (A/B tests).
### Deliverables
Explain:
- High-level architecture and data flow (online serving + offline training).
- Storage choices (feature store, embeddings, logs).
- Model/feature strategy and how you ensure freshness.
- How you evaluate: offline metrics + online metrics/guardrails.
- Key failure modes and mitigations (cold start, feedback loops, abuse).
Quick Answer: This question evaluates a candidate's competency in designing end-to-end ranking and recommendation systems, covering candidate generation, ranking, freshness, diversity, exploration–exploitation trade-offs, scalability, availability, and observability.