Backend, Python, APIs
Stage-by-stage report
Interview Q&A
Strong performance
How this stage was scored
Consistently accurate, and you corrected yourself once mid-answer, which reads as confidence rather than uncertainty.
Better, but still the weaker half. You handled two of three follow-ups well; the third about cache invalidation stalled at naming TTLs without addressing staleness.
A clear step up from your first sitting. Answers now have a shape: direct answer, then the reason, then the tradeoff.
Topic breakdown
Strengths
Answers have a shape now
Direct answer, then the reason, then the tradeoff: the structure that took your communication from 41 to 68 across two sittings.
Self-corrected calmly
You caught and fixed a mis-statement mid-answer without flustering, which reads as confidence rather than doubt.
Grounded in examples
You anchored abstract points in real cases throughout, e.g. key-based cache invalidation over a bare TTL.
Where to focus
Depth on consistency
The cache-invalidation follow-up stalled at naming TTLs without addressing the write-write race underneath.
Practice: When two writes race, reach for versioning or compare-and-set, not a TTL.Don't restate to fill silence
Under pressure you restated the question rather than reasoning forward, which spends time without adding signal.
Practice: When unsure, say the next thing you'd check instead of repeating the prompt.
One thing to fix next
Communication has gone 41 to 68 across two sittings, which is the single biggest improvement here. Depth under probing is now the thing to work on: when a follow-up comes, assume it means your first answer was incomplete rather than wrong.
Per-question breakdown
Your answer
Cache the response, but key the cache on something that changes when the underlying data changes, so an update naturally produces a new key rather than relying on a TTL to expire. Where that is not possible, invalidate on write and accept a short window of staleness.
Strong. Key-based invalidation before reaching for TTLs is the answer most candidates get to only after prompting.
Your answer
You could end up caching the older one. You would need a TTL to be safe.
You identified the race but fell back to TTLs, which mitigates rather than solves. The follow-up was looking for versioning or a compare-and-set on the cache entry.
Your answer
It decouples them in time, so the consumer being down does not fail the producer's request. The cost is that you now have to reason about ordering, retries and duplicate delivery, so it is worth it when the work can be asynchronous and not when the caller needs an answer.
Answered the question and named the cost without being asked. This is the structure to keep.

