Python interview practice, rustlings-style: 35 warm-ups + 20 interview exercises, from easy to hard. Python 3.14, no dependencies.
It opens the next exercise and re-runs its tests every time you save.
Keys: n next · h hint · r re-run · l list · c check all · x reset · s solution · q quit
| Level | Folder | What's inside |
|---|---|---|
| Warm-up | exercises/0_warmups/ |
35 short "fix this" tasks: strings, collections, functions, classes, iterators, decorators, asyncio… |
| Middle | exercises/1_middle/ |
01–06: iterator utils, LRU cache, retry decorator, bug hunt, KV transactions, log report |
| Middle+ | exercises/2_middle_plus/ |
07–10: Money, rate limiter, event bus, task graph |
| Senior | exercises/3_senior/ |
11–17: contextmanager, single-flight cache, circuit breaker, external sort, async map, worker pool, bug hunt |
| Staff | exercises/4_staff/ |
18–20: generator event loop, mini pydantic, DI container |
Solutions are in solutions/ (same layout). Interview questions are in questions/middle.md and questions/senior.md.
- Don't open
solutions/until the tests pass. - Name the edge cases before you write code.
- When the tests pass, answer the Discussion questions at the end of the exercise. That's what interviewers ask.
python3 -m unittest discover -s tests -p "test_ex05*" -vCheck the reference solutions:
SOLUTIONS=1 python3 -m unittest discover -s tests