A Bloom filter is a probabilistic set for membership tests. It can return false positives (might say “present” when it’s not), but it never returns false negatives. It’s very memory efficient and fast, but you can’t retrieve the original items.
Advanced answer
Deep dive
Expanding on the short answer — what usually matters in practice:
Complexity: compare typical operations (average vs worst-case).
Invariants: what must always hold for correctness.
When the choice is wrong: production symptoms (latency, GC, cache misses).
Explain the "why", not just the "what" (intuition + consequences).
Trade-offs: what you gain/lose (time, memory, complexity, risk).
Edge cases: empty inputs, large inputs, invalid inputs, concurrency.
Examples
A tiny example (an explanation template):
// Example: discuss trade-offs for "what-is-a-bloom-filter-and-what-trade-off-does-i"
function explain() {
// Start from the core idea:
// A Bloom filter is a probabilistic set for membership tests. It can return false positives
}
Common pitfalls
Too generic: no concrete trade-offs or examples.
Mixing average-case and worst-case (e.g., complexity).