Google | Reject
Status: 15 YEO
It was a cold and dreary winter day when I happened to check my email in the midst of a busy working day. I expected to find my ordinary, yet another recruiter contacting me to try out for the startup of the day with promise to become the "next Amazon". To my surprise what I found instead was an email by Vickie (fake name for anonymity) from Google asking me to try out. To be certain, I am not looking to switch jobs, and I have a policy to decline all recruiters for years. But an offer from a Google recruiter is my exception. Vickie was peppy, warm, and encouraging and we scheduled a phone screen.
PHONE SCREEN 1 hour
I received a link for Google Meet video chat and a "Google Interview'' virtual coding environment. Google Interview is really similar to how you write code on LeetCode, a plain place to write code with no auto-complete. First you need to select a few checkboxes agreeing to their policies and not to share details- so I will comply and keep exact details vague.
I was very nervous going in and had trouble maintaining a cool head. Interviewer was really nice and encouraging. After one minute of introductions we dove into the question. I was asked to design APIs related to Summed Area Tables https://en.wikipedia.org/wiki/Summed-area_table
It was the first I ever heard of summed area tables and I didn't see anything like in LeetCode afterwards. I came up with a O(N) answer. I was told there was a O(1) answer. The interviewer tried hinting to me the answer, but I wasn't able to get it.
I was certain that I didn't pass and spent the next 2 days really bummed. I got a phone call a few days from Vickie saying the interviewer liked the way I think. My heart nearly skipped a beat in disbelief. I said- "Can you please repeat that?!"
I saw on some website that Google grades on a 1-4 scale. 1 = definitely no, 2 = weak no, 3 = weak yes, and 4 = definitely yes. If that's true I believe I received a 3. To my dismay she passed me on to a different recruiter, Jane (another fake name), who wasn't nearly as nice.
Jane scheduled 4 hours of interview all to be done via Google Meet and Google Interview. The morning of the interviews I woke up cautiously optimistic. Surprisingly, I slept well the night before and ensured I ate a satisfying breakfast to keep me going.
SYSTEM DESIGN 1hr
There was a one minute hello/hello and then we dived into the question. The question was to design a specific feature in Google Maps. However, the interviewer was very specific in the way he wanted the answer. He was much more interested in back-of-envelope calculations and math then he was to the overall design. He said he wanted to know how much CPU cores are needed. He didn't seem interested in API design, front-end interactions, databases or anything like that.
In general, I struggle to do math under pressure and here as well I struggled in the calculations. Overall, it was a positive discussion, although the interviewer was tough throughout the conversation. Not even a semi-smile or word of encouragement. I would probably give myself a 2 "weak no".
1st Algorithm Question 45 min
A hard to describe question without outright saying the question related to "rate limiting". It would probably be equivalent to LeetCode medium. I got the answer within the time allowed using LinkedHashMap and the interviewer was satisfied. I would give myself a 3 "weak yes".
2nd Algorithm Question 45 min
After a longer break it was back for a second algo question. It was a question related to generating power sets from an array. However I wasn't going to be "just" generating a power set, he added a twist that took it from the equivalent of a LeetCode medium to a LeetCode hard. The question itself is not on LeetCode.
I mostly got working code to generate the power sets, and offered ways to solve his twist. Unfortunately, I couldn't calculate the running time of generating a powerset, which he later told me is O(2^n). If I would have solved the twist it would have offered better running time. I would probably give myself a 2 "weak no".
3rd Algorithm Question 45 min.
A question related to concurrency in Java and required in depth knowledge of the Threads API. Once again, the interviewer added an algo twist as well to make it interesting (and challenging). I don't see anything like it on LeetCode. It would probably rate somewhere between LeetCode medium to hard. I solved the question but needed hints on how to properly use threads API as it's not something I've done regularly. Probably give myself a 3 "weak yes''.
I ended the day worn out from preparing and worn out from 4 hours of difficult high-pressure interviews. I told myself I am not looking for a job, so even if I get a no, it will be ok. I was rather certain I had mixed results and the answer was probably 50/50. I reveled in putting my algorithm book back on the shelf and avoided visiting LeetCode to enjoy my respite. A few days later Jane called. "We don't often do this", she said, "but you are in-between. You have potential but you need to solve quicker so can also solve the twists." She offered me the option to take two more algo interviews (no system design, yay!) that would determine my fate. However, I'd need to do really well on both of them to tip the scales.
I was already in mental shape practicing problems and I came so far, I was not going to stop now. So I apologized to my wife and accepted another week of emotional roller coasters.
4th Algorithm Question 45 min.
Questions relating to Iteration and Binary Trees. First she had me code a basic problem as a warmup. I was able to do it quickly and discuss the nature of Binary Trees and ways to traverse. She then got to the real question which is a LeetCode medium and then added a unique twist that took it from LeetCode medium to LeetCode hard. I was able to think of several different possible solutions and their tradeoffs. She liked the suggestions but kept adding restrictions forcing me to see other angles and alternative solutions. Overall an extremely positive discussion but I ran out of time to code what she wanted within the restrictions. I would give myself a 3 "weak yes".
5th Algorithm Question 45 min.
A question related to shortest distance in a matrix, which kind of reminds me of some of the "Island" questions on LeetCode. However, he added a twist that took it from LeetCode medium level to LeetCode hard. I started with solving bruteforce way, rather quickly which had suboptimal run-time. However, no matter how hard I tried I couldn't think of a way to solve for his twist in the time given. In retrospect I should have outright asked for a hint, since the interviewer was not helping me out at all. Hard to rate myself for this one since I got a solution and was able to discuss many alternatives. Probably either a 2 "weak no" or a 3 "weak yes".
I was at a loss if to be optimistic or not. I needed an "enthusiastic supporter" to get accepted, but I wasn't sure if my 4th interviewer was enthusiastic or not.
A few days later I got a phone call from Jane. I could tell from the first second it was a reject. She started with "do you have time for a quick call". The entire phone call seemed like a chore she was counting the second for it to be over. She said it was close and clearly I would be a good fit, but ultimately I need to be able to solve the questions fully to be accepted. I was borderline from beginning to end and didn't ace any of them.
Now back to life summarizing this a few weeks later. I learned a lot while studying, and sacrificed a lot to take a chance. I tell myself, if you are not failing on taking risks, you are not pushing your boundaries. Really depressing too, since I don't have anything to show my hard work. Like running for elected position but losing the election. We've been educated in little-league sports to believe that putting in effort is all that's needed. When in reality, it takes aptitude, attitude, and ultimately luck. Maybe next time luck will be on my side.
I also realize that I am up against a lot of recent grads coming out of CS degrees who LeetCode is like homework problems they've been trained to solve. Whereas, my real world experience helps me to write clean and proper code without thinking, but it doesn't prepare me in the slightest for LeetCode style algo questions.