Interview Experience | Prime Video Ads / Backend | π₯π₯ | Amazon
2026 (late Sepβmid Oct) Software Development Engineer II, Prime Video Ads Channels @ Amazon β Seattle, WA β Virtual β 3 rounds | π Neutral | Medium
One phone screen, two VO rounds.
Round 1 β Phone Screen
Quick self intro, straight into coding.
Coding was Locker & Package, OOD. You have to pin down the matching rules yourself.
Clarified a few things: lockers and packages are both S/M/L, and can a small package go in a bigger locker. Interviewer said yes, but same size first. Wrote Locker, Package, LockerSystem, one free-locker queue per size. assign tries the same size, otherwise goes up one size. Pickup looks up the locker by code and puts it back in the queue.
Follow-up changed the scenario: a package not picked up in 3 days gets returned and the locker frees up. Said add an expiry time, check it on pickup, plus a background job that scans. Then talked about lots of sites and lots of lockers. Only said split by site, didn't go further.
Round 2 β VO Coding
Coding was a playlist shuffle variant with ads instead of songs: a list of ads to play, each tagged with an advertiser. Reorder so the same advertiser never plays twice in a row, return empty if it can't be done.
Max heap on remaining count. Pop the biggest, and if it's the same advertiser as the last one, hold it and pop the second biggest, then push the held one back. I didn't check up front that if the biggest count is over (n+1)/2 it's impossible. Only noticed when the run ended with two from the same advertiser left. Added the check.
Follow-up: not just adjacent, the same advertiser needs at least k ads in between, what then. Said add a waiting queue, anything just used sits there to cool down and goes back into the heap after k steps. Got it half written. The k boundary on the dequeue was off by one and I didn't finish fixing it before time ran out.
Round 3 β VO SD
SD: calls to the downstream ad decision service, add rate limiting + circuit breaking so a slow downstream can't stall playback.
First drew one token bucket per host, keyed by partner. Got asked how to cap the total across a lot of hosts. Said a Redis counter. Then: every request now has an extra Redis hop, what if that latency is too much. Switched to local buckets that pull quota from a central service on an interval. Didn't get into how the quota gets split.
Breaker trips on timeout ratio. While it's open, that break just doesn't get ads and the content keeps playing. How many requests to let through in half-open and how many successes before closing, I didn't explain well. Last few minutes were my questions.