| layout | default |
|---|---|
| title | Interview Problems |
| parent | Practice and Projects |
| nav_order | 3 |
| permalink | /practice/interview-problems/ |
Explain contract, assumptions, complexity, ownership, failure behavior, tests, and operations before implementation.
- Design a reusable validated descriptor and trace attribute lookup.
- Replace an unnecessary metaclass with a simpler mechanism.
- Build a lazy merge pipeline with bounded memory and cleanup.
- Design cancellation and backpressure for an async crawler.
- Choose threads, processes, or asyncio for three measured workloads.
- Diagnose retained memory in a long-running worker.
- Package a library while preserving imports and behavior through deprecation.
- Design deterministic tests for retries and concurrent duplicate requests.
- Design an idempotent payment endpoint under simultaneous requests.
- Threat-model a file upload and processing pipeline.
- Prevent lost updates in a seat-booking transaction.
- Design a cache policy when stale catalog data is acceptable but stale authorization is not.
- Design logs, metrics, traces, and alerts across an API and worker.
- Roll out a schema and application change with safe rollback.
- Investigate a latency regression using profiling and production signals.
Show interview prompts
For each problem ask: What is the source of truth? Which work is bounded? Who owns cleanup? What happens during partial failure or restart? Which invariant needs atomic enforcement? Which data is untrusted or sensitive? How will the design be tested and observed? What simpler alternative was rejected and why?