Amazon VO: Behavioral Deep Dive + Document Processing Under Limited Capacity + Splitting Alexa Conversations into Sessions
Amazon VO recap: behavioral questions on scope creep, trade-offs under tight deadlines and asking for resources; a system design for maximizing useful output from massive document data under a QPS limit; and splitting Alexa conversations into sessions by 60-second gaps, with an out-of-order insertion follow-up.
Amazon's VO interviewers really dig deep! Behavioral, system design and coding all came with follow-ups, but it went fine overall.
Behavioral
The main topics:
- What do you do when requirements keep changing? For example, a new requirement shows up halfway through a project (scope creep) — how did you handle it?
- How do you make trade-offs under a tight deadline? For example, did you use temporary workarounds or isolate traffic to ship on time?
- Have you proactively asked your manager for resources? For example, when you realized the work wouldn't fit, did you talk to your manager and re-prioritize?
System design
Problem: you can only process a limited number of requests per second but have a massive amount of documents. How do you maximize the useful output?
My approach:
- Process in batches by priority
- Deduplicate documents
- Use caching
- Queue and rate-limit
- Adjust batch sizes dynamically
That squeezes the most out of the limited capacity.
Coding: split Alexa conversations into sessions
Problem: split a user's conversation with Alexa into "sessions" by time. Rule: utterances no more than 60 seconds apart belong to the same session; a gap over 60 seconds starts a new one.
Solution: sort all records by time, then look at the gap between each pair of neighbors. If it's at most 60 seconds, add to the current session; otherwise close it and start a new one. Return the list of sessions.
def split_sessions(records, gap=60):
"""records: [(timestamp, text)]; returns a list of sessions, each a time-ordered list of records"""
sessions = []
for rec in sorted(records, key=lambda r: r[0]):
if sessions and rec[0] - sessions[-1][-1][0] <= gap:
sessions[-1].append(rec)
else:
sessions.append([rec])
return sessions
Follow-up: what if utterances arrive out of order?
Question: if utterances don't arrive in order but trickle in (not necessarily at the end), how do you put each one into the right session?
My answer in the interview: go through the existing sessions and compare the new record's time with each session's last record. If it's within 60 seconds, append it; if none match, start a new session.
Further optimization: sessions are ordered by start time, so binary search can find the two sessions around the new record — O(log S) instead of scanning them all. One case that's easy to miss: the new record may fill the gap between two sessions, in which case the two must be merged into one.
from bisect import bisect_right
def insert_record(sessions, rec, gap=60):
"""sessions are sorted by start time; inserts a new record in place"""
t = rec[0]
i = bisect_right([s[0][0] for s in sessions], t) # sessions[i-1] starts at or before t
join_prev = i > 0 and t <= sessions[i - 1][-1][0] + gap
join_next = i < len(sessions) and sessions[i][0][0] - t <= gap
if join_prev and join_next: # fills the gap: merge both sides
sessions[i - 1:i + 1] = [sessions[i - 1] + [rec] + sessions[i]]
sessions[i - 1].sort(key=lambda r: r[0])
elif join_prev:
sessions[i - 1].append(rec)
sessions[i - 1].sort(key=lambda r: r[0])
elif join_next:
sessions[i].insert(0, rec)
else:
sessions.insert(i, [rec])
Found this helpful? Let's talk.
Happy to swap interview notes, do mock interviews, or share referral info.

Scan to add me on WeChat
More Amazon notes
View all ›Amazon New Grad Four-Round VO: What Changed This Year + Three Business-Scenario Coding Questions + Bar Raiser Deep DiveAmazon · 2026-10-04›
Amazon China SDE 27NG Four-Round VO: GenAI Behavioral + Topological Sort + Minimum Size Subarray + Binary SearchAmazon · 2026-10-02›
Amazon New Grad Interview Question: TaskScheduler, Fully Analyzed (Topological Sort)Amazon · 2026-10-02›
Amazon SWE 26NG Four Rounds: Dijkstra Delivery Routes + Sliding Window + Top K Orders + Bar RaiserAmazon · 2026-10-02›