Two coding rounds. First question was a merge intervals variant dressed up as “Detect attacks along a horizontal line from 0 to 10.” The idea being you have a list of ‘attacks’ represented as intervals of integers/floats (e.g. [1, 2], [3.4, 5.2], and you need to merge the attack intervals to determine T/F representing if the horizontal line was attacked/blanketed in its entirety.
Second question was given a list of the form:
list = [
{
"start_time": 1_000_000_000,
"end_time": 2_000_000_000,
"topics": {
"/control": {"type": "control_signal", "num_messages": 50},
"/planner/planner/debug": {"type": "planner_debug", "num_messages": 10},
},
}, …]
return a list of 3-tuples of (topic, type, number of messages for this topic). Was really just a list parsing question, nothing tricky.
System design was a frontend-flavored architecture round. Prompt was an open-ended "design a driving log visualizer.” Basically an internal scrub tool with synchronized video, lidar, and telemetry overlays across multiple panels.
Went through requirements first then landed on a 4-layer architecture (view / store / DAL / server), talked through the data layer in the most depth for chunked time-series fetching and a normalized client cache keyed by chunk ID with an extra LRU window near the playhead. Heavy, unexpected emphasis specifically on frame coordination across panels so panels don't lose synchronization when the playhead moves. Likely lost points here. Ran out of clock before build/deploy/serve. Was unconventional in that it was very much driven by the interviewer as opposed to other sys design interviews.
Discussion
Loading comments…