Got the offerL4 at Google
- Difficulty
- Process took
- 6+ Weeks
- Rounds
- 4
- Format
- Remote
- Applied via
- Company Website
How it went
- Don’t rush through your answers, In both technical and behavioral rounds, it’s important to take your time to think and articulate your thoughts clearly.
What they would tell you
- Don’t rush through your answers, In both technical and behavioral rounds, it’s important to take your time to think and articulate your thoughts clearly.
How to prepare
- Practice daily DSA and system design prep, focus on both breadth and depth.
- Prepare your stories, reflect on your career, failures, wins, and moments of growth Keep them honest and concise.
Their background
I’m currently a Software Engineer with 4+ years of experience working with Java, Python, and cloud technologies
Round by round
- 1
Phone Screening Round60 min
The first interaction was a phone screen with a Google engineer. This round was focused on evaluating my coding skills and my approach to solving problems. Problem: Evaluate Mathematical Expressions with Embedded Operations The task was to simplify Mathematical expressions involving embedded operations. For example:
- x - (y - z) simplify to x - y + z
- x + (y - x) simplify to y My approach in breaking down the operations and ensuring the correct precedence while simplifying the expressions. Follow-up - How to handle expressions that involved nested parentheses more efficiently
- 2
Technical Coding 160 min
The onsite interview, three rounds. In this round, I was asked to design and implement a BookManager class. I had to create a BookManager class with the following core functionalities:
- insert(bookNumber, score): This would add a new book along with its associated score.
- get(): This function should return the book with the highest score. However, after a book is retrieved, its score decreases by 1, and it becomes temporarily ineligible for the next get() call. Follow-up: Once a book is retrieved, it should remain ineligible for the next n get() calls, not just one.
- 3
Technical Coding 260 min
I was presented with a stream of tuples in the format (timestamp, message)—all arriving in non-decreasing timestamp order. The task was to display a message only if it hadn’t been shown in the last 10 seconds. Example Behavior:
- (10, "solar panel activated") → show
- (11, "low battery warning") → show
- (12, "tire one: low air pressure") → show
- (13, "solar panel activated") → suppress (last shown at 10)
- (21, "solar panel activated") → show (21 − 10 = 11)
- (35, "solar panel activated") → show (35 − 21 = 14) To solve this, I used an eviction-based logic, where I kept track of the last shown timestamp for each message. If a message had been displayed within the last 10 seconds, it was suppressed; otherwise, it was shown and the timestamp was updated. I emphasized that the time complexity of the displayMessage() method was O(1), as it simply checked and updated a hash map.
- 4
Googleyness + Behavioral60 min
More on my fit with Google's culture
- Tell me about a time when you had to take ownership of a project.
- How do you handle disagreements in a team?
- Tell me about a time you worked under pressure to meet tight deadlines. In this round, the interviewer wanted to gauge how well I aligned with Google’s Leadership Principles. I made sure to use the STAR method to structure my answers and provide detailed examples from my past experiences.
What came up
A candidate-reported account, lightly edited. Interview processes change by team and date.