Catch the bug
Plausible-but-wrong code where the naive tests pass. Name the defect under each card's target time — this is what the AI-enabled round actually tests: spotting wrong AI output, not prompt craft.
0/23 done
- Midpoint overflow in binary searchSorted catalog index lookupinteger overflow in index arithmetic<60s
- Nested blocking join on a shared fixed pool starves itselfInventory availability API (fan-out per-SKU checks)Thread-pool starvation / self-deadlock from blocking on a task submitted to the same bounded pool<90s
- Removing from a List inside its own for-each loopInventory catalog syncstructural modification during for-each iteration<60s
- JDBC connection leaked on the exception pathOrders API — GET /orders/{id} read, backed by a pooled DataSourceResource leak: pooled Connection/Statement not closed when a statement throws → pool exhaustion<90s
- equals() overridden, hashCode() forgottenInventory dedup servicebroken equals/hashCode contract — hash-based lookups miss<60s
- Dedup on the wrong key#5 Event processorduplicate event slips through<60s
- The transition that validates the wrong thing#4 Offer FSMinvalid state transition<60s
- The lock that never releases on failure#8 Idempotency storestale lock on exception<60s
- == on boxed Integers: works at 50, breaks at 500Warehouse inventory reconcilerreference-equality compare on boxed Integer instead of value equality<60s
- Read-modify-write with no version: the lost updateWallet / Accounts API (balance credit)Lost update from non-atomic read-modify-write; no optimistic version or row lock<90s
- The 'LRU' cache that isn't#2 LRU cachewrong eviction order<60s
- No timeout on the remote call -> thread-pool exhaustion cascadeOrders API: inventory check on a remote service per incoming orderUnbounded blocking call (no connect/read timeout) drains a bounded thread pool<90s
- Money math in double drops centsCart checkout / pricing serviceprecision loss in money math (binary floating point)<60s
- The Hidden Query Inside the Loop (N+1)Orders dashboard API — list orders for a day, enriched with customer namesN+1 queries: one DB round-trip per list item instead of a single batched fetch<90s
- Retry without an idempotency key double-chargesPayments API — charge customer through a flaky gatewayNon-idempotent operation retried on failure, causing duplicate side effects<90s
- OFFSET/LIMIT pagination drifts when the list mutates between page readsOrders API — infinite-scroll feed, newest-firstUnstable pagination over a mutating dataset (rows skipped/duplicated across pages)<90s
- The worker that loses work#3 Job queuelost task on failure<60s
- close() on the happy path onlyRemote config fetcherstream/socket leak when parsing throws before close()<60s
- Plain HashMap shared across worker threadsEvent counting servicenon-thread-safe map mutated concurrently (lost updates / corruption)<60s
- Query built by string concatenation of request inputOrders API — order lookup by customer + status filterSQL injection via unparameterized string concatenation of untrusted input<90s
- Static SimpleDateFormat shared across threadsConcurrent audit loggernon-thread-safe formatter shared across threads<60s
- The Empty Catch That Eats FailuresNightly order settlement / Payments batch jobSilent exception swallowing — failures vanish with no log, retry, or alert<90s
- The cache that never forgetsPricing cache (product/checkout hot path)Unbounded in-memory cache with no eviction → memory leak → OOM<90s