The 60-second answer
Validate nonnegative weights and positive total mass; normalize only if the interface requires probabilities. Build cumulative mass, draw a uniform sample in [0,total), and binary-search the first cumulative boundary above the sample.
Build the answer in this order
Validate nonnegative weights and positive total mass; normalize only if the interface requires probabilities.
Build cumulative mass, draw a uniform sample in [0,total), and binary-search the first cumulative boundary above the sample.
Define exact boundary behavior to avoid off-by-one errors with zero-weight categories.
Test deterministic edge cases plus empirical frequencies over many draws.
A useful interview mental model
This is the shape of a strong answer—not a script to memorize.
Senior-level signal
- Senior answers offer the alias method for repeated draws and a Fenwick tree for frequently updated weights.
- Discuss reproducible RNG injection rather than relying on global random state.
What the interviewer is really testing
Likely follow-up questions
Common weak-answer patterns
- Ignoring shape, dtype, device, masking, or broadcasting assumptions.
- Using a framework call without explaining the underlying operation.
- Skipping gradient, numerical-stability, and batching checks.