Recently went through the interview process for a Software Engineer role at Waymo. Sharing a short summary to help others preparing.
Interview Process
Recruiter Screen
Coding Round 1 java
JavaScript / UI Round
Hiring Manager Round
DSA Round
Recruiter Screen
The recruiter discussion was mainly around:
current role and backend experience
interest in Waymo
interview process overview
Round 1 – Coding
This was a progressive coding round.
The problem kept evolving:
Partition a bag of integers into groups of identical values
Then into groups of exactly 5 consecutive integers
Then into groups of 3 or more consecutive integers
What they seemed to care about:
correctness first
runtime / space complexity
adapting the solution as constraints changed
I got through the first two versions cleanly. The third version was harder and became more about explaining the approach and debugging live.
Round 2 – JavaScript / UI
This round was more frontend-oriented.
The problem was to build a generic tree viewer UI component for hierarchical data, like a file explorer.
Topics discussed:
recursive rendering
ul / li for semantic structure
expand / collapse behavior
stopPropagation
event delegation tradeoffs
this round evaluated not just implementation, but also:
debugging
reasoning about DOM/event handling
explaining tradeoffs clearly
Round 3 – Hiring Manager
This round was conversational and scenario-based.
Topics included:
why Waymo
production ownership / on-call
reliability and observability
cross-team collaboration
handling stakeholder misalignment
use of GenAI tools in day-to-day work
The most interesting part was a hypothetical scenario around:
investigating unexpected system behavior
identifying root cause with limited information
reasoning step by step
Round 4 – DSA / System Tracking
This round was about designing a tracker for car positions over time.
Core idea:
record positions for a car
return the most recent positions
then extend the design to keep only a fixed maximum history per car
choosing the right data structures
explaining tradeoffs (List vs Deque)
testing edge cases
runtime / space complexity
This one felt more straightforward than some of the earlier rounds.
rejected.