Google | L3 | Los Angeles | Jan 2020 [Reject]
Anonymous User
11715

Status: Self-taught (2-3 yrs professional experience, 6 yrs total)
Position: L3
Location: Los Angeles, CA
Date: January 2020

1st Onsite (5 rounds):
4 technical and 1 behavioral.

  1. Given n blocks and n length word, can you rearrange blocks so as to make word? (One of my best interviews. Came up with a great solution using backtracking with recursion) Similar questions:
    https://leetcode.com/discuss/interview-question/267985/google-interview-construct-a-word-using-dice
    https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/
  2. Given unordered array, how many integers would a binary search find? (Wasted a bunch of time at the beginning trying to be smart. Came up with O(n log n) solution. After coding that, realized an O(n) solution but ran out of time) Similar questions:
    https://community.topcoder.com/stat?c=problem_statement&pm=5869&rd=8078
    https://leetcode.com/discuss/interview-question/352743/Google-or-Onsite-or-Guaranteed-Binary-Search-Numbers
  3. Create a data structure to take in a stream of numbers and create a function that will give the average excluding the outliers (5% and 95%). (Struggled on some simple math and wasted a lot of time. Got docked points because I missed using a linked-list as an option.) Similar question:
    https://leetcode.com/problems/find-median-from-data-stream/
  4. Create a data structure that will allow insert of integer and then removal calls rand func which returns the same probability (follow-up, what if there weights with each insert) (Nailed the first part, but then couldn't explain why appending to a dynamic array was an O(1) operation. Then struggled to come up with a solution for the follow-up and ran out of time. Also had to take a piss really bad.) Similar questions:
    https://leetcode.com/problems/insert-delete-getrandom-o1/
    https://leetcode.com/problems/insert-delete-getrandom-o1-duplicates-allowed/
    https://leetcode.com/problems/random-pick-with-weight/

2nd Onsite (2 rounds):

  1. Given an array of 0s and 1s, find all contiguous 0 subarrays. (Came up with a really good O(n) time and space solution but I have a feeling they wanted O(1) space) Similar question:
    https://leetcode.com/problems/count-number-of-nice-subarrays/
  2. I couldn't find a similar question but basically had to do with CSS minification. (I would hardly call this a question because there wasn't any trick to it. But maybe I missed the boat on it. Threw some code together and was scrambling for time because I wasted it chatting and grabbing water. The follow-up was all about testing.)

My experience:
I was originally contacted by a recruiter at Google and scheduled a quick phone call the following week. After the phone call I was invited to setup a phone screen call which was going to be a 45 min call with 1-3 technical questions. I scheduled that 5 weeks out (which seemed to be the most I could do) to allow myself as much time to prep. Up until the call with the recruiter I had no preparation. I spent the next 5 weeks studying and preparing as much as I could, doing Leetcode and watching Youtube vids on data structures and algorithms.
Shortly before the phone screen I submitted a reference that I knew at Google. They cancelled the phone screen and moved me straight to the onsite interviews. I did my first round about a week after the phone screen was scheduled to occur.
The day of the interviews was exhausting. Not just physically but mentally. The questions were tough, the interviewers show no emotion and they don't waste any time between interviews so you better time your bathroom breaks. I did two technical interviews, then had an hour lunch with a Googler (off the record), then did the behavioral and then two more technicals.
By the end of the day I was very tired but I felt that I did good. I was able to provide a solution for every question and fully code out said solution.
Within the week, I was contacted by my recruiter and told that I did good but they needed two more interviews before they could try moving forward. It was close to the end of the year so I scheduled the next round for January.
Going back the second time I was far more relaxed knowing what to expect. With the last interview I took my time chatting with the interviewer and didn't feel stressed for time (even though I barely had time to write the code on the wall).
Again I felt good about my interviews and was pretty sure I'd move forward. But alas, I got the call that I didn't get enough support from my interviewers to move forward and that was the end. The two areas which I failed in were coming up with a solution quickly and not being independent enough. Both of which I'm okay with.
All in all, it was a great experience and I'm glad I went through it.

For the motivational type:
Yes, I'm fully self-taught. I skipped going to college and I didn't go to any coding bootcamp or do any online degrees. Just hard-core practice and learning. Going into the first question was the first ever backtracking solution I've ever come up with and I struggled a lot on grasping dynamic programming but was able to use in the final question. My suggestion, just practice and try and dive in to figure out how something is the way it is. Work on a gradient. When I started, I failed to solve most of the easy questions. But after the first month I got really good with them and moved on up. Do challenge yourself.

Not that it matters:
Easy: 127
Medium: 28
Hard: 4

Comments (23)