Google | L4 SWEIII | San Bruno, CA | 2022-05-03 [Reject]

Status: 4 years professional, BS CS
Position: SWEIII
Location: San Bruno, CA
Date: May 3, 2022

Initial Steps
A Google recruiter emailed me around December 2021 for a SWE3 roll at YouTube. Due to personal reasons, I wasn't able to make the initial recruiter call happen until March 24, 2022. Thankfully the recruiter was persistent and accomodating. The recruiter said my experience looked good enough to skip the technical screen.

They found a role alignment and proceeded to scheduling the onsite. They said the furthest out they could schedule it would be a month out. So I pushed for the furthest possible, in order to give me time to prepare on LeetCode. They were willing to split the interview between two days: 3 rounds on day 1 and 2 rounds on day 2. Interview was schedueld for May 2 & 3. I decided to also try to line up interviews with other companies in order to make use of being in interview-ready form. I succeeded in lining up on-sites with Microsoft and Amazon as well, but failed earlier on in the process with Meta (hiring freeze), AirBnb, and Apple.

I also reached out to a close friend at Google for an internal referral. This could give me a boost at the hiring committee stage.

On-site Preparation
With on-sites for Google, Microsoft, and Amazon approaching, I put in as much time outside of work and family as possible to Leetcode. I had a busy 1 week vacation during that month, so in reality I had 3 weeks to prepare). Prior to the process I had solved 200 LC questions (~100 easy, ~100 med). During the 3 weeks of preparation, I solved an additional ~60 (more mediums than easies). I did several practice video interviews with friends, including one at Google who helped me understand the process well. I put a majority of my practice into Tree and Graph problems, as I heard these were very common with Google.

Virtual On-site
Round 1: Behavioral / Googleyness (day 1)
This round went great. I had prepared a lot, and that helped. They were very pleasant to talk to, which helped me settle in. Some of the questions they asked:

  • Introduce yourself
  • Tell me about a change in direction you've faced in a project. They followed this question up with many follow-ups.
  • Tell me about a time you've had to work with someone with a different workstyle than you.
  • If you and 2 teammates had 3 differing approaches to an immediate problem that needs to be solved, how would you proceed in this situation? How would you keep the team of 3 motivated after an approach was selected?
  • Tell me about an unreasonable request you've been given.
  • Given vague requirements, how would you proceed?

Round 2: Technical
Build a MergeDedupingIterator class and functions. Given 2 iterators over unsorted collections, merge the 2.
This question was pretty Java-specific (the language I chose to interview with). I had to ask a lot of questions to understand the assumed functionality and desired functionality of the iterators. We arrived at a correct solution (with a lot of help from the interviewer) just in time. He seemed a little frustrated with my lack of experience using interators. This round went pretty bad.

Round 3: Technical

  • Question 1: Remove the first element matching a given key from a doubly-linked list. This was one of the easiest questions I received, and I was able to solve with through test cases in 20 minutes.
  • Question 2: Given an XML structure, what data structure would you use to represent the nested tags and values? Write a class to represent that. Then write a function to removeFirstMatchingNode(Node root, String tagname).

Round 4: Technical (day 2)
LC 1730 , followed up with LC 1293
I solved part 1 fine via DFS. For part 2, we were able to just remove 1 wall. So I made an approach where we get a set of all the end nodes for DFS from the top left, then DFS for all the end nodes from bottom right. Then find if there are any intersection between these sets. If so, that is a wall that can be broken and its a path from top left to bottom right.

Round 5: Technical
Similar to LC 1048
Given a dictionary, find the longest word in the dicionary that can be decomposed 1 letter at a time, with each iteration being a dictionary word, all the way down to the single character. For example: assuming the dictionary is a standard english dictionary:
grater -> rater -> rate -> rat -> at -> a would be a word of length 5. But the answer is likely a word much longer than this.

This was a very difficult question for me. I talked about a brute force approach that was something like O(n!). I ended up implementing this with a little bit of help. I told him how I would improve performance here with a hashmap, but didn't have time to do it. I think it was my worst round.

Conclusion
After a week, the recruiter said I didn't evaluate well enough to consider moving to hiring comittee for L4. But she proposed to push for L3, which I agreed to. Two days later, she said we didn't get the support needed for L3 either.

How could I have done better? Google seems to have a high bar, and don't have problems rejecting candidates that do OK. You really need to do great. I had a month of sporadic leetcoding. Ideally I could have worked longer on this. I got lucky and didn't receive any LC Hard questions or DP. These are fair game for next time I interview, and I will have to be better prepared.

Comments (4)