My Google Interview - from coding to salary negotiation

5 ½ hours. That's how long the interview was. Take a deeper look into my Google interview and why I made the difficult decision to decline my dream company.

Hello World

A Google recruiter first reached out to me with a "Hello World" in October of last year. As usual, I didn't respond to it because I wasn't serious about leaving Microsoft then. She greeted me with a "Hello World" again in November. And again in December - only this time - in binary. It was around then that I seriously considered leaving Microsoft (▶️ I’m quitting Microsoft). So I finally replied and let the recruiter know I was interested in the opportunity. They let me bypass the first stage, or one round of coding interview, and invited me straight to their virtual onsite - the final stage of the interview.

Just for context, I'm PK, a software engineer in Seattle. I previously worked at Microsoft, Amazon, and ebay.

The Great Rejection

Along with Google, I had a few onsites lined up with other tech companies, the first of which was Coinbase. To be frank, I didn't prepare at all for the first few weeks. It wasn't like I was full of myself or anything; I just didn't want to study. I mean, interviews aren't exactly fun, right? Preparing for them? Even less. Completely unprepared, I went into the Coinbase phone screen, thinking, "it's only the first coding round anyways." Guess what? I got rejected right away. 🙄 Given how unprepared I was, it was a fair result; but still, it was shocking nonetheless. ⚡️ I was actually glad of the negative outcome because it reminded me that I shouldn't take these interviews lightly. I admit. Grinding LeetCode again was the last thing I wanted, but only two weeks remained until my Google Interview. Yes, it was time to get serious.

LeetCode

The next day, I burned all my PTOs at Microsoft and devoted 100% of my time to prepare for the dreadful interviews. In my video, How to Use LeetCode Effectively, I explain that when you have an upcoming interview, you should hit the company tag, select 6 months, and solve the problems in descending frequency. There's a good chance some of them might come out in your interview. For Google, however, I went against my advice. I practiced only a handful of Google-tagged problems because I knew Google doesn't reuse the questions often. Instead, I revisited the classic problems and brushed up on the core concepts of data structures and algorithms, all of which I organized in my LeetCode cheat sheet on my website.

Google Interview

Time passed quickly. In the past two weeks, I didn't do anything except eat, sleep, and LeetCode. It was finally the time to put my grind to the test. My Google virtual onsite had five rounds to it, and overall, it was 5 ½ hours long. I repeat. Five and a half hours long. There were breaks between each round, but still, 5 ½ hours f'xxxing long. Each round was 45-minutes with four codings and one behavioral. I met five engineers throughout the interview, each conducting one round. I can't share the details, including the exact questions I got. However, I will tell you that none were straight out of LeetCode. My strategy for the win. 😎

The Interviewers

Coding problems were one thing. But I was actually more worried about the interviewers. I even made a skit about an interviewer never shutting his mouth throughout the entire interview because it literally happened to me before. Thankfully, most interviewers I met at Google were generally okay, but I'll note two of them. One guy looked like he had come to the most boring place on earth. Whenever I asked him questions, he repeated, "read the question." I tried my best to be amicable, but I couldn't shake off the feeling that watching me code was the last thing he wanted to do. Another interviewer, I assume, was probably an entry-level engineer. I wasn't surprised because junior engineers interviewing seniors is pretty common in big tech. To make matters worse, he confessed it was his first time conducting an official interview… 🤦 I used one of the templates in my cheat sheet to solve his problem. But this kid didn't understand how the formula worked. So I explained it to him, but he still couldn't figure it out. The clock was ticking, and I had no time to waste. After struggling for around ten minutes, I said, "You know what? You can work this out on your own later. For now, let's move on." We finally moved on.

The Update

The clock hit 3:30, and my 5 ½-hour-f’xxxing-long interview was finally over. Coding interview-wise, I solved every problem optimally except for one. And this annoyed the hell out of me. Because this is Google. The Google. For Google, you pretty much have to clear every round to receive an offer. No wonder why they have less than a one percent acceptance rate. Anyhow, a week passed since the interview, and the recruiter returned with an "update." I honestly had a bad feeling about this "update" because I thought the decision was too quick; I imagined it would take longer should they extend an offer.

I picked up his call in the afternoon. Sure enough, he didn't seem that excited. He told me my overall feedback was positive, but he kept stressing that one non-optimal solution. When I was about to lose hope, he suddenly said, "We will extend an offer." I was like, "Oh shit, no way!?" I said, "Wait, are you serious?" He seemed a bit confused at my reaction and said. "Yes, your feedback was positive overall. Did you not expect an offer?" So I replied, "When recruiters come back with good news, they're usually hyped with all the congratulations and stuff. But your voice was dry, making me think that this was just a courtesy call informing me of my rejection." He chuckled, apologizing that he didn't deliver his intentions well, and started congratulating me suddenly. 🙄

The Lowball

The catch here, however, was the pay. 💵 That's right. The total compensation. 💰 As I mentioned previously in my video - I rejected a $360k Google Job Offer - Google tried to lowball me. That probably was why he was cautious initially; he knew the offer wouldn't impress me. He didn't disclose the exact numbers, but the rough range he shared was even below what I made at Microsoft. I asked him whether we could negotiate. He said yes, but only if I had competing offers, including the proof. The good news was that my other interviews went well, with offers on the way. But how on earth was I going to prove them? The Google recruiter asked about my expectation, and I answered $320k plus in total compensation. He said he would try his best but noted it might be difficult to meet my expectations. Regardless, the war of negotiations began.

The Proof

I informed the recruiters that I was expecting multiple offers, but none of them wanted to be the first to put the card on the table. A pro tip about salary negotiation. Keep a poker face, and don't put all your cards on the table. This is the only time you have the upper hand; use it to your advantage. One company offered a base salary of $170k verbally. The recruiter, who extended the initial offer, said he could go higher but stopped there because he wasn't sure of my intentions. I brought this number to Google. Of course, they weren't willing to move a dollar without "proof." They asked me to somehow provide written evidence of my competing offers. One that made the most sense was submitting a screenshot of my conversation with other recruiters. So I reached out to the competitor's recruiter and tried to confirm whether my recap of the initial offer was correct via email. This recruiter, who knew I was in talks with Google, didn't reply to the email but intentionally confirmed the figures over a phone call. Clever, right? He probably knew I was trying to capture written evidence. I tried to get him to reply to the thread directly by asking random questions like "what are the vaccination requirements?" or "Do you guys have offices in Seattle?" He still answered my petty questions verbally over the phone but finally replied to the original thread on my third attempt. I took a screenshot of it and submitted it to the Google recruiter as my "proof." He still requested additional evidence, like extending each thread to see the full content. But eventually, he was convinced that I had a legit competing offer.

The Decision

After a few more rounds of back-to-back ping pong, I declined Google's $360k offer. It was a tough call, given the company's status, but I made that decision for several reasons. One, the teams they matched me with weren't interesting; I wanted to learn new things. Two, another company was willing to invest more in me and offered a higher total compensation. Three, I preferred a more flexible remote work option - not a hybrid. And four, I still couldn't believe they tried to lowball me with a below-average offer.

Five months have passed since I made that controversial video about rejecting Google's $360k offer. I recently asked myself. Would I make the same decision if I could go back in time? Or would I choose Google? It still is a tough question, but my answer still is no. Putting all reasons aside, I don't think I would have enjoyed the work I would have done at Google. I'm constantly learning new things from where I am now. But had I joined Google, I would probably be doing similar stuff I had done at Microsoft.

The Growth

In summary, I ended up somewhere other than my dream company. But in retrospect, interviewing Google was one of the most valuable experiences in my life. Most importantly, it gave me confidence. Remember how it took me nearly a year to find my first full-time job (▶️ 12 Years in the Life of a Software Engineer)? Google wouldn't even consider my application back then. Not that I declined their offer out of retaliation, but it reflected how much I had grown. And who knows? We might cross paths again someday. For anyone interested in learning about my software engineering journey and tips and tricks on how to become one, check out my blog at piratekingdom.com. Don't forget to like and subscribe. I'll see you at the next one. Peace.

 
Previous
Previous

The coding project that improved my skills the most

Next
Next

My Ultimate LeetCode Tricks