← Reddit Interview Insights

Reddit·Machine Learning Engineer·Onsite - System Design / Architecture·Senior

SeniorPrefer not to say
Jun 2026

Summary

Reddit ML Engineer system design round, one big open-ended question about building a comment-prediction ranking signal end-to-end. The scope was massive and the follow-ups kept coming once I thought I was done.

Questions Asked (5)

Q1

Design a full ML system for an API that takes a user ID and up to 1,000 candidate post IDs and returns a score per post representing the probability that the user would comment on each post if shown it.

System DesignTechnical Trade-offs
Author's notes

This is the main question and it ate the whole session.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by clarifying requirements and constraints, then outline the end-to-end ML system covering data, features, model, training, serving, and evaluation. Emphasize trade-offs between latency, accuracy, and scalability, and discuss how to handle the 1,000 candidate posts efficiently.

Pro tip: Focus on the ranking aspect: since you need to score up to 1,000 posts per request, consider a two-stage approach (candidate generation + ranking) and discuss how to optimize for low-latency inference, such as precomputing user and post embeddings.

1. Clarify Requirements and Constraints

Ask about latency requirements, scale (QPS, number of users/posts), and whether the system should be real-time or batch. Clarify the definition of 'comment' and how to handle negative feedback.

2. Data and Feature Engineering

Identify data sources: user interactions (comments, votes, views), post content, and user profiles. Design features for users, posts, and user-post interactions, considering both static and dynamic features.

3. Model Selection and Training

Choose a model architecture suitable for ranking (e.g., two-tower, gradient boosted trees, or deep neural networks). Discuss training data creation (positive/negative sampling), loss functions (e.g., binary cross-entropy), and offline evaluation metrics (AUC, NDCG).

4. Serving and Inference Optimization

Design a low-latency serving architecture: precompute user and post embeddings, use approximate nearest neighbor search for candidate generation if needed, and batch score the 1,000 posts. Discuss caching and fallback strategies.

5. Evaluation and Iteration

Plan for online evaluation (A/B testing) and monitoring (latency, prediction drift). Discuss how to incorporate feedback loops and retrain models periodically.

Key Points to Mention

  • Two-stage ranking: candidate generation (retrieval) followed by ranking to handle 1,000 posts efficiently.
  • Feature engineering: user embeddings, post embeddings, interaction features (e.g., historical engagement), and contextual features (time of day).
  • Model choice: two-tower models for retrieval, deep ranking models (e.g., DLRM) for scoring, and handling of cold-start users/posts.
  • Training data: positive examples from actual comments, negative sampling strategies, and handling class imbalance.
  • Serving: precomputation, caching, batching, and latency optimization (e.g., using TF Serving, ONNX, or custom inference).
  • Evaluation: offline metrics (AUC, NDCG), online A/B testing, and business metrics (comment rate, user engagement).

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q2

Your training data comes almost entirely from what the production ranker already chose to show. How much exploration traffic do you actually need, and how do you limit the cost to user experience?

A/B Testing & ExperimentationTechnical Trade-offs
Author's notes

Knew this was coming but still fumbled the quantitative part.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Acknowledge the feedback loop problem and propose a principled exploration strategy that balances statistical power with user experience. Discuss how to size exploration traffic based on the ranker's uncertainty and the cost of suboptimal recommendations, and outline safeguards like limiting exploration to low-risk surfaces or using contextual bandits with conservative policies.

Pro tip: Emphasize that exploration should be continuous and adaptive, not a one-time experiment, and that you can leverage off-policy evaluation to reduce the amount of live traffic needed. Also, mention that Reddit's diverse content and user base allow for natural exploration in less critical areas like new communities or low-traffic threads.

1. Define the goal and constraints

Clarify what you're optimizing (e.g., long-term user engagement, content diversity) and the constraints (e.g., acceptable drop in short-term metrics, engineering complexity).

2. Quantify exploration needs

Estimate the amount of exploration traffic required using statistical power analysis or simulation, considering the ranker's current uncertainty and the desired confidence in new policies.

3. Design the exploration mechanism

Choose an approach like epsilon-greedy, Thompson sampling, or contextual bandits, and decide where to inject exploration (e.g., a small percentage of traffic, specific user segments, or non-critical surfaces).

4. Mitigate user experience cost

Implement guardrails such as capping exploration exposure per user, using conservative exploration rates, and monitoring real-time metrics to roll back if degradation occurs.

5. Evaluate and iterate

Continuously assess the trade-off between exploration benefits and costs using A/B tests and off-policy evaluation, and adjust the exploration strategy accordingly.

Key Points to Mention

  • Feedback loop and position bias in logged data
  • Exploration-exploitation trade-off and its impact on long-term metrics
  • Statistical power and sample size calculations for A/B tests
  • Contextual bandits and off-policy evaluation techniques
  • Guardrails: limiting exploration to low-risk surfaces, capping exposure, and real-time monitoring
  • Reddit-specific considerations: diverse content, community dynamics, and non-critical surfaces for exploration

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q3

The comment score gets blended daily with other objectives like upvotes and dwell time. How do you keep it calibrated across model retrains so the blend weights don't drift?

Technical Trade-offsSystem Design
Author's notes

I said Platt scaling and isotonic regression and mentioned holding out a calibration set.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Frame the problem as maintaining a stable multi-objective ranking system where the comment score is one signal among many. Explain that calibration across retrains requires monitoring the score's distribution and its contribution to the final blend, with automated guardrails to detect and correct drift. Emphasize a combination of offline validation, online A/B testing, and periodic recalibration of blend weights.

Pro tip: Propose logging the comment score's percentile rank and its weight in the final ranking daily, and setting alerts if the weight shifts beyond a threshold. This shows you think about production monitoring and proactive maintenance, not just model training.

1. Define calibration metrics

Establish metrics like score distribution (mean, variance, percentiles) and its correlation with other objectives. Track the blend weight's effective contribution to final ranking.

2. Monitor drift in production

Implement daily monitoring of these metrics and set alert thresholds. Compare current values to a baseline from the last stable period.

3. Validate on holdout data

After each retrain, evaluate the new model on a fixed holdout set to ensure the comment score's calibration and blend weights remain consistent with expectations.

4. Recalibrate blend weights

If drift is detected, recalibrate weights using a constrained optimization that preserves the relative importance of objectives. Consider using a small online learning step to adapt.

5. A/B test changes

Before full deployment, run A/B tests to confirm that recalibration improves or maintains key engagement metrics without unintended side effects.

Key Points to Mention

  • Multi-objective ranking and blending techniques (e.g., weighted sum, rank fusion)
  • Calibration methods (e.g., Platt scaling, isotonic regression) for score normalization
  • Drift detection (e.g., KL divergence, PSI) and monitoring dashboards
  • Online learning and continuous calibration to adapt to changing user behavior
  • A/B testing and guardrail metrics to ensure safe deployment
  • Trade-offs between stability and responsiveness in weight updates

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q4

Optimizing for comments can reward outrage-bait and controversial content. How would you detect that the model is learning that shortcut, and what would you do about it?

Product Analytics & MetricsTechnical Trade-offs
Author's notes

My first instinct was slice analysis on content categories, which is fine but pretty surface level.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by framing the problem as a proxy metric misalignment: comments are a noisy proxy for engagement, and the model may exploit spurious correlations like outrage. Then propose a two-pronged strategy: first, detect the shortcut through diagnostic metrics and causal analysis; second, mitigate it via objective redesign, data curation, and robust evaluation.

Pro tip: Emphasize that you would validate the presence of the shortcut with a small-scale A/B test or counterfactual analysis before investing in complex fixes, and always monitor for unintended consequences like reduced overall engagement.

1. Define and measure the shortcut

Identify proxy signals of outrage-bait (e.g., sentiment intensity, controversy scores, user reports) and track their correlation with comment volume. Use causal inference methods like instrumental variables or propensity score matching to isolate the shortcut effect.

2. Diagnose model behavior

Analyze feature importances and model predictions: check if the model disproportionately promotes content with high outrage signals. Conduct error analysis on controversial vs. non-controversial content to see if the model overfits to outrage features.

3. Redesign the objective and data

Augment the comment-based reward with quality signals (e.g., comment sentiment, constructive feedback, user retention) and penalize outrage. Curate training data to downweight or remove outrage-bait examples, and consider adversarial training.

4. Implement robust evaluation and monitoring

Set up online A/B tests with guardrail metrics (e.g., user reports, toxicity, long-term engagement) and offline evaluations using counterfactual or holdout sets. Continuously monitor for shortcut resurgence and iterate.

Key Points to Mention

  • Proxy metric misalignment: comments as a noisy proxy for engagement
  • Causal inference to distinguish correlation from causation
  • Feature importance and model interpretability techniques
  • Multi-objective optimization balancing engagement and quality
  • Data curation and adversarial training to reduce shortcut learning
  • Online A/B testing with guardrail metrics and long-term monitoring

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.

Q5

Comment velocity on a popular post changes minute to minute. How do you keep those features fresh in online serving without creating skew against the batch features used during training?

System DesignTechnical Trade-offs
Author's notes

This one actually went well.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Start by acknowledging the tension between low-latency online serving and batch training, then propose a unified feature computation pipeline that uses the same logic for both. Emphasize techniques like streaming aggregation, feature stores, and time-travel to ensure consistency. Conclude with monitoring and validation to detect and mitigate skew.

Pro tip: Highlight that skew often arises from subtle differences in data sources and processing logic, so advocate for a single source of truth and automated consistency checks. Mention that Reddit's scale demands a distributed streaming system like Flink or Kafka Streams.

1. Identify the challenge

Explain why comment velocity is challenging: it changes rapidly, and batch features computed offline may not match real-time values, causing training-serving skew.

2. Unify feature computation

Propose using a streaming pipeline (e.g., Flink, Kafka Streams) to compute velocity in real-time, and ensure the same logic is used for batch training via a feature store or lambda architecture.

3. Ensure consistency with time-travel

Use point-in-time correct joins when generating training data to avoid leakage, and log online features for later training to close the loop.

4. Monitor and validate

Implement monitoring for feature distributions and skew detection, with alerts and automated retraining if skew exceeds thresholds.

5. Optimize for scale and latency

Discuss trade-offs: approximate algorithms (e.g., count-min sketch) for high cardinality, caching, and pre-aggregation to meet low-latency requirements.

Key Points to Mention

  • Training-serving skew and its causes (data source, logic, timing)
  • Streaming vs batch processing and lambda architecture
  • Feature stores (e.g., Feast, Tecton) for consistency
  • Point-in-time correctness and time-travel in training data
  • Monitoring and alerting for feature drift and skew
  • Scalability and latency considerations (approximate algorithms, distributed systems)

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.