Spent probably too long on the retrieval layer and didn't get to re-ranking until the last ten minutes.
Start by clarifying the scope: what type of events (e.g., local, online, social), what 'recommendation' means (ranking, retrieval, notification), and key constraints like latency, scale, and privacy. Then outline a high-level system with data sources, feature engineering, candidate generation, ranking, and evaluation, emphasizing trade-offs and metrics relevant to Meta's social ecosystem.
Pro tip: Anchor your design around Meta's unique data: the social graph and user engagement signals. Discuss how you'd leverage friend attendance, group affiliations, and past interactions to solve cold-start and relevance, while being mindful of privacy and fairness.
Ask questions to understand the product: event types, user actions (browse, RSVP, share), scale (DAU, events), latency needs, and success metrics. Define what a 'recommendation' entails (e.g., ranking a feed, push notifications).
Identify data sources: user profiles, social graph, event metadata, historical interactions. Propose features: user-event affinity, social signals (friends attending), temporal/geo features, and content embeddings.
Design a two-stage system: candidate generation (e.g., collaborative filtering, graph-based retrieval) to narrow millions to hundreds, then a ranking model (e.g., deep neural network) to score and order. Discuss model choices and trade-offs.
Define offline metrics (AUC, recall@k, NDCG) and online metrics (CTR, RSVP rate, DAU). Plan A/B tests and consider counterfactual evaluation. Address how to measure long-term user satisfaction.
Discuss scalability (distributed training, serving), latency (caching, approximate nearest neighbors), cold-start (content-based, social), privacy (differential privacy, federated learning), and fairness (avoiding bias).
AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.