Google | L4 SWE (EngProd) | Seattle | April 2020 [Offer]

My interview experience with Google was quite different than what I expected (after reading many experiences on forums like this), so thought I'd share it here!

Background

I interviewed with Google and Amazon right after college, got rejected by Google, and ended up working for Amazon for the past 4 years.

Current position: SDE2 (L5) with ~170k total comp.

Overall, I've actually been relatively happy at Amazon. My main complaint is Amazon's frugality, both in how they treat the engineers and their software. Compared to other "FANG" companies, Amazon's pay and perks are a bit lackluster. I've also experienced a consistent lack of proper investing in internal tooling and infrastructure: I've worked in multiple teams and had to solve the same challenges over and over again where it'd make more sense to solve it for a majority at the company-level.

Applying to Google

For the past two years, I'd been putting off interview practice. I'd do it for a month and then get too busy and forget all about it. One of my friends in Google referred me around Nov 2019 to put some fire under my ass. I talked to a recruiter pretty quickly after that, where we talked about my interests. The majority of my experience at Amazon was working on internal tooling and AWS (which is what I like), so she said my interests align with the engineering productivity org in Google.

She said they're going to skip doing phone screens and jump straight to onsite. I was busy with re:Invent goals, so asked for an interview towards the end of Jan. Closer to the date, I realized I had barely spent any time practicing, so asked to push back the interview to the end of Feb. The onsite coordinator said they only do that for emergencies and I basically told him that I'm not prepared and don't want to waste anyone's time, so if they can't push it back I'll just reapply later. Interview got moved to the end of Feb!

Prep

I spent around 4 weekends going through problems on InterviewBit before discovering LeetCode. I took 3 days off work the weekend before the interview and pretty much studied nonstop (~15 hours/day) for 5 days. I focused on popular med/hard Google questions here + wikipedia pages of the common data structures and algorithms that everyone talks about. My main challenge was developing the right intuition in a span of a few minutes, but otherwise I was pretty good at the coding part once I had the right intuition.

I had two friends at Google mock interview me (failed both!). Both of their questions were LeetCode hard and in the top 30 Google questions here. At this point, I wasn't super optimistic about my chances.

The Onsite

I requested a chromebook (tip from a friend). When speaking with the interviewers, they actually preferred those too because they could access the code later and they'd see it projected nice and clean in the interview room. I was definitely relieved to not write code on a whiteboard. I used the whiteboard for bouncing ideas and working through examples.

I was told I'm being interviewed as level 4 and my loop will consist of five 45 min interviews: coding, coding, Googliness (or as we call it in Amazon, LPs), lunch, domain-specific, coding. "Domain-Specific" was new to me, and I was told it'll be specific to EngProd principles.

Reading up on EngProd more, it seems like it used to be kind of an SDET position in Google that recently got "upgraded" to SWE. People used to have to reinterview to change into SWE from EngProd but now they're basically two flavors of the same SWE role. I didn't think much of it and went to the interview.

I won't share too much about the coding problems as there are plenty of similar problems here on LeetCode.

  1. First coding question was a monopoly-like board game where you'd have to find the minimum number of times you'd ideally have to roll the dice to finish the game. It was a LeetCode medium IMO with a simple greedy algorithm. It started with basic constraints and each time the interviewer added a constraint or two to see how I'll handle it. The whole thing felt very collaborative and easygoing.

  2. Next was basically implementing long division. Imagine how you divide numbers yourself on paper, now convert that algorithm into code (without using actual division or modulo operators). Keep in mind that some divisions result in a repeating part. I asked a lot of clarifying questions and discussed corner cases. By the time I was done asking questions, the problem was reduced to dividing two positive, non-zero numbers where the first one is smaller than the second one. Also felt like LeetCode medium.

At this point, the coding questions seemed too easy (compared to my mock interviews), so I was afraid that the interviewers had more questions to ask and we just never got to that point.

  1. Basically chatted about real and hypothetical situations at work for 45 min. Pretty much what you'd expect from any behavioral interview, I wouldn't say there was anything particularly Googly about it. I have no idea how I performed.

  2. After lunch, we talked a lot about software engineering best practices, designing testing infrastructure, alarming/monitoring, catching bugs early, and so on. I took a lot of inspiration from similar solutions we'd come up with in my teams at Amazon. This interview felt like chatting with a coworker where I felt comfortable asking questions about how Google has solved some of these challenges.

  3. This was supposed to be coding, but the first half of it went very similarly to the previous interview. The second half suddenly changed gears into system design (which I was explicitly told wasn't a part of the loop and I had prepped zero for). I told the recruiter about this and he said there's indeed been a miscommunication.

Post-Onsite

With 2/5 coding interviews and no phone screens, I was expecting HC to not get a strong signal and either be rejected or brought in for more interviews. A week later (first week of March), I heard back that HC recommended me for hire!

This is when the COVID situation started getting more serious in WA. In the next 3 weeks, I only managed to have two team matching calls, and only one in the office that I wanted (SLU as opposed to Kirkland which is ~30-40 min away). This was in part due to the uncertainty from COVID, and I believe also due to my profile being tagged as EngProd. Google Cloud recently expanded in Seattle, so I have a hard time believing there weren't any teams hiring an L4 engineer. Both of the managers that I spoke with emphasized that EngProd SWEs have the same hiring/promotion bar and no requirement to reinterview to switch to generalized SWE, so maybe my assumption about EngProd negatively affecting my options is not valid.

Negotiations

They asked for my expected salary and other offers (I hadn't interviewed with anyone else). There's an internal database of salary information in Google that people self-elect to provide. I went over that data with a friend to get an understanding of what to expect for my level in Seattle.

The manager in my preferred location passed on me, so I went with the other team. Took about 2 days to mutually pick the other team, 1 day for exec review approval, and offer a few hours after that. I used the farther location as negotiation leverage and asked for a counter offer with the condition that I'll immediately sign the offer if it's approved. My counter was accepted the next day. Overall, the process was super smooth and way faster than I expected.

COVID Onboarding

Google's temporarily moving all onboarding to completely virtual. They're also shipping equipment to your home. Even though I'm supposed to WFH starting on April 13, I've been told that this date might be pushed back 2-3 more weeks as they're experiencing a supply chain crunch. I'll be getting free PTO during any potential delays, which is definitely nice of them to offer!

Final Thoughts

Overall, the process was much smoother and faster than I'd anticipated. I'm still not sure how much the EngProd tag affected this whole process. I'm tempted to say it made the interview process easier and the team matching step harder. But I can equally say that it made the interview process more realistic—less focus on programming competition style of questions and more things I'll actually have to think about at my job. The important thing is getting your foot in the door, so I'm sure I'll have a better answer in the next few months!

Comments (8)