Interview Experience | Open Connect / CDN | π₯π₯π₯ | Netflix
2026 (early Oct) Software Engineering L5, Open Connect Platform @ Netflix β USA, Remote β Virtual β 3 rounds | π Neutral | Medium-Hard
Open Connect team: a phone screen plus two virtual onsite rounds.
Round 1 β Phone Screen
Consistent hashing. The appliance hashes are already sorted on a ring. Given a title id, return the first appliance clockwise. I binary-searched for the first hash greater than or equal to the title hash, and wrapped to index 0 when nothing qualifies. On an example where the title hash was larger than every appliance hash, I returned -1. The interviewer pointed out that the ring wraps.
The follow-up stayed verbal: if that appliance is out of service, the title falls on the next one. They did not ask me to write it.
Round 2 β Coding
I got a heartbeat log of (appliance_id, timestamp) pairs, already sorted by time, plus a threshold T. Return every appliance that has been silent for more than T seconds relative to the latest timestamp in the log. I kept a map of last_seen per appliance, scanned once, and compared against the final timestamp.
Follow-up: also return how many heartbeats each appliance has missed in a row, assuming a fixed interval. I switched each appliance to a small queue of recent arrival times and derived the miss count from the interval. The boundary cases "exactly on T" and "never reported at all" were still wrong when time ran out.
Round 3 β System Design
Design the Open Connect control plane: a few thousand appliances in ISP rooms that each have to stay on a desired state (software version, and whether they are serving). The interviewer said content fill is another team.
I drew an agent on the box that pulls desired state on a timer, reports actual state, and upgrades or takes the box out of serving when the two differ.
Follow-up: how to roll out a new version. I said start with a small set and sample by region so they are not all in one ISP. He asked what happens when a box that was offline for a few days comes back still holding an old version. I said attach a generation and drop anything older. I did not go into how to resolve a conflict.