← Capital One Interview Insights

Capital One·Data Scientist·Technical Phone Screen·Senior

SeniorPrefer not to say
May 2026Remote

Summary

Capital One data scientist interview that went pretty deep into optimization problems. The core of it was a donor outreach allocation question that started straightforward but kept getting harder with each follow-up. Left feeling like I handled part one fine and kind of winged the rest.

Questions Asked (3)

Q1

You have up to 100,000 donors, each with known probabilities and expected donation amounts for two channels: email and a gala event. There are per-person costs for each channel, a fixed gala cost, and you can invite at most 100 donors to the gala (not both channels). How do you choose which donors to invite to the gala to maximize expected net revenue, and what's the time complexity?

Algorithms & Data StructuresProduct Analytics & Metrics
Author's notes

This one clicked for me pretty quickly.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Frame the problem as a constrained optimization: for each donor, compute the incremental expected net revenue from inviting them to the gala versus email, then select the top 100 positive increments. Explain that this greedy approach is optimal because the gala capacity constraint is the only coupling, and the fixed gala cost is a constant that doesn't affect selection. State the time complexity as O(n log n) due to sorting, or O(n) with a heap for top-k.

Pro tip: Always clarify that the fixed gala cost is a sunk cost for the decision—it only affects whether to hold the gala at all, not which donors to invite. Also, mention that if the gala is not held, all donors get email, so compare the total net revenue of holding the gala (with optimal invites) versus not holding it.

1. Define the decision variables and objective

For each donor i, let E_i and G_i be the expected net revenue from email and gala respectively (after per-person costs). The objective is to maximize total expected net revenue: sum of email net for non-invited donors plus sum of gala net for invited donors, minus fixed gala cost if any invited.

2. Compute incremental value of gala invitation

For each donor, calculate the incremental net revenue of inviting them to the gala instead of email: Δ_i = G_i - E_i. This captures the trade-off. Donors with negative Δ_i should not be invited.

3. Select top 100 donors by positive incremental value

Sort donors by Δ_i in descending order and select the top 100 with Δ_i > 0. This maximizes the total incremental gain because the capacity constraint is the only restriction and the objective is linear in the selection.

4. Compare total net revenue with and without gala

Compute total net revenue if gala is held (sum of E_i for all donors + sum of Δ_i for selected donors - fixed gala cost) and if not held (sum of E_i for all donors). Choose the option with higher net revenue.

5. Analyze time complexity

Computing Δ_i for all n donors takes O(n). Sorting takes O(n log n). Selecting top 100 can be done in O(n) using a min-heap of size 100. Overall time complexity is O(n log n) or O(n) with heap, and space O(n) or O(100) with heap.

Key Points to Mention

  • Greedy algorithm is optimal because the objective is linear and the only constraint is a cardinality constraint (at most 100).
  • Fixed gala cost is a constant that does not affect the ranking of donors; it only affects the decision to hold the gala.
  • Per-person costs for each channel should be subtracted from expected donation amounts to get net revenue.
  • Donors not invited to the gala receive email, so the opportunity cost is the email net revenue.
  • Time complexity: O(n log n) with sorting, or O(n) using a heap for top-k selection.
  • Edge cases: fewer than 100 donors, negative incremental values, or gala not profitable even with optimal invites.

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

Q2

Now suppose some donors are in households that must be treated as a group: either all household members get gala invitations or none do. Groups have varying sizes and you still have a total invite cap. How does this change the problem and how would you solve it at scale?

Algorithms & Data StructuresTechnical Trade-offs
Author's notes

Yeah this is where I started sweating.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Reframe the problem as a 0/1 knapsack variant where each household is an indivisible item with weight equal to its size and value equal to the sum of its members' donor scores. Discuss how to solve it at scale using dynamic programming with value-based state compression, greedy heuristics with guarantees, or integer programming with decomposition.

Pro tip: Acknowledge that the household constraint can significantly reduce the effective number of items, making exact methods feasible for moderate sizes; for very large scale, propose a two-stage approach: first solve a linear programming relaxation to get an upper bound and identify fractional households, then use branch-and-bound or rounding heuristics to get a feasible solution.

1. Model the problem

Define each household as an item with weight = size and value = sum of individual donor scores. The goal is to select a subset of households with total weight ≤ capacity to maximize total value.

2. Analyze complexity

Explain that this is NP-hard (0/1 knapsack), but the number of households may be much smaller than the number of donors, and weights are bounded by household sizes, which can be leveraged.

3. Choose an exact algorithm for moderate scale

Use dynamic programming where the state is the total weight (or total value if values are small) and iterate over households. Complexity O(n * capacity) or O(n * total_value).

4. Scale with approximation or decomposition

For large scale, use a fully polynomial-time approximation scheme (FPTAS) by scaling values, or apply Lagrangian relaxation to decompose the problem. Alternatively, use a greedy heuristic based on value-to-weight ratio and then improve with local search.

5. Validate and iterate

Compare the solution against the LP relaxation upper bound to assess quality. If needed, refine with branch-and-bound or column generation for very large instances.

Key Points to Mention

  • The problem becomes a 0/1 knapsack with indivisible items (households), which is NP-hard.
  • Dynamic programming can solve it exactly if the capacity or total value is manageable; otherwise, approximation algorithms are needed.
  • The number of households is typically much smaller than the number of donors, which can make exact methods feasible.
  • Greedy heuristics (e.g., by value-to-weight ratio) provide fast approximate solutions but may not be optimal.
  • For large scale, consider LP relaxation, rounding, and branch-and-bound, or use an FPTAS to get a (1-ε) approximation.
  • Trade-offs: exact vs. approximate, time vs. quality, and the impact of household size distribution on algorithm choice.

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

Q3

How would you modify the selection approach to account for uncertainty in the probability and expected donation estimates, for example if you only have prediction intervals rather than point estimates?

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

Least prepared for this one.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Acknowledge that point estimates are insufficient for decision-making under uncertainty, and propose a probabilistic framework that propagates uncertainty from predictions to selection decisions. Focus on how to compare options using distributions rather than single values, and discuss trade-offs between exploration and exploitation.

Pro tip: Emphasize that uncertainty quantification is not just about being conservative; it's about making better decisions by incorporating risk. Mention that in practice, you'd validate the approach through simulation or historical backtesting to ensure robustness.

1. Clarify the decision context and uncertainty sources

Identify what decisions depend on the estimates (e.g., which campaigns to fund) and where uncertainty comes from (model uncertainty, sampling variability). This frames the problem and ensures the solution aligns with business goals.

2. Choose a probabilistic selection criterion

Instead of ranking by point estimates, use a criterion that accounts for uncertainty, such as probability of being best, expected value with risk adjustment, or Thompson sampling. This directly incorporates the prediction intervals.

3. Propagate uncertainty through the decision process

Use Monte Carlo simulation or analytical methods to compute the distribution of outcomes (e.g., total expected donation) given the uncertainty in individual estimates. This yields a distribution of the selection metric.

4. Evaluate trade-offs and select

Compare options based on the chosen criterion, considering risk tolerance and exploration needs. For example, select the option with the highest probability of exceeding a threshold, or use a bandit algorithm to balance learning and earning.

5. Validate and iterate

Test the approach via simulation or historical data to ensure it performs well under uncertainty. Monitor outcomes and refine the model as more data becomes available.

Key Points to Mention

  • Prediction intervals provide a range of plausible values; use them to quantify uncertainty in expected donation and probability estimates.
  • Probabilistic selection criteria: probability of being best, expected value with risk aversion, or upper confidence bounds.
  • Monte Carlo simulation to propagate uncertainty and estimate the distribution of total expected donation.
  • Thompson sampling or Bayesian bandits to balance exploration and exploitation under uncertainty.
  • Risk tolerance and business context: sometimes a conservative choice is better, other times a high-risk high-reward option is preferred.
  • Validation through simulation or backtesting to ensure the approach is robust and improves decision quality.

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