Round 1
Coding (45 min): Job Processing Schedule with priority. Higher-priority jobs get processed first. Asked to implement a class with two APIs, addJob and getJob. Follow-up: add a delay to each job — for example, after job A is processed, it can't be processed again until at least 3 getJob API invocations have happened.
BQ (45 min): Standard behavioral questions — the biggest challenge I ran into recently, what I'd do differently if I did it again, a coworker who was difficult to work with, and a time I had to juggle multiple tasks.
Got the Round 2 onsite scheduled the very next day after this interview.
Round 2
Coding (45 min): 2D 0/1 matrix, asked whether you can walk from the first row to the last row. Follow-up 1: return all valid non-duplicate paths. Follow-up 2: if every cell now has a weight, find the shortest path from the first row to the last row — discussed BFS vs. Dijkstra tradeoffs, ended up going with Dijkstra.
System Design (1 hr): Design a deals service. Deals are ingested weekly via a separate pipeline and need to be ranked based on the user's browsing history, with a start and end time. Each user can only claim a deal once. Users browse active deals on the main page, 20 per page by default, with filters available.
Coding (45 min): Implement a tic-tac-toe game class on an N×N board that allows K players, where each player takes turns placing their own character; whoever first gets 3 in a row/column/either diagonal wins, and it's a tie if the whole board fills up. Required two APIs: play(player, i, j) -> Status and getStatus() -> currentStatus. Follow-up: how would you optimize space if the winning condition were a full row/column/diagonal instead of just 3 in a row.
Got word the next day that feedback looked positive overall and I'm moving on to team match. The Google onsite experience was perfect, and the recruiter's follow-up was really efficient too! Hoping team match goes smoothly!
Discussion
Loading comments…