Status: 1-2 YOE in a small company
Position: Software Engineer L3
Date: July 2020
Today I received my official offer. It marked the date I can finally pursue my dream job. Leetcode played a big role in helping me up to this point. So I thought I should write this to contribute to the community because I did read from other people's interview experiences as well.
I respect the NDA from companies, so I don't tell exactly what questions were asked. I also think knowing the questions does not help anything at all beside stressing you guys out. I think practicing is still the key.
Earlier this year, I left my previous company to do a full time job search. I made that decision because I wanted to look for a new opportunity, but I was really weak in Algorithm and Data structure. I had only ONE onsite before, so for this time, I thought I should be practicing more than 8 hours a day to prepare for any upcoming interview especially from FAANG. I knew it was a bold move, but honestly I thought my job search would be only 1-2 months or shorter. Unfortunately, this virus situation took place, and it really made it way harder for me. It was a real "bumpy road".
I started by applying for some positions in those big companies. The Amazon recruiter hit me up 1 month after. I was supposed to fly to Seattle for the onsite, but Covid-19 came to the US, so it turned out to be a virtual one. I was not so familiar with the virtual setup and it was my first ever onsite with a big company. I was so worried and stressed the day before the onsite. I couldn't even sleep the night before ,and I was very nervous during the interviews. As a result, I did it badly, and it ended with a rejection. I also have negative experience with the Amazon recruiter and interviewers. It was so strange that the recruiter only sent emails to me. I did not have any chance to talk to him through the phone at all.
I tried my best move on. I attended another onsite for Postmate next month, but they also rejected me because they thought I was not experienced enough. Although, I thought I did well in most of their rounds except the one where I had to design a frontend website.
Rinse and repeat. I had some calls with other small companies in my area. They didn't go far either. At this point, it was months into my job hunt, and of course, I felt like giving up and the imposter syndrome became really strong in my mind.
Out of the blue, I received an email from a Google recruiter. I felt blessed and tried to focus back. The hiring process in Google was a little long: phone interviews, onsite, hiring committee, team match and offer letter. This recruiter is by far the BEST recruiter I have ever known. He was so helpful and thoughtful. I felt like he did boost my confidence up a lot. He provided detailed information about what I should know in every step of the process.
AMAZON
Online Assessment:
Virtual Onsite (4 rounds):
Round 1 (45 min technical and behavioral):
The interviewer asked me 2 leadership principle questions. I spent 15 mins on that, and I had a feeling that he lost interest in me after this. He gave me the technical problem and just let me do it by myself, without any hints. The question was easy, but the follow up was unclear as he made it a real life problem with server memory constraint, etc. I was not sure how to answer it either. I think I didn't ace this round, and I think I met a bad interviewer. This really made me more worried for the next rounds.
Round 2 ( 45 min technical and behavioral):
Leadership principle questions for 20 min. The question was a popular sliding window problem from Leetcode. I wasn't too familiar with the sliding window topic, so I struggled on this one. Also the interviewer spent too much time explaining the question (repeating his phrases, and thinking about what words he should say) because English is not his native language, so I felt like I only had a small time left. This ended up as another bad round for me.
Round 3 ( 45 min technical and behavioral):
Leadership principle questions for 15 min. The interviewer was from another team. So I guessed he was the bar-raiser. The question was about date time. It was not hard for me, and I was able to do it. The interviewer was also engaged in discussing the question with me. This is the only round where I thought I did well.
Round 4 (45 min system design and behavioral):
Leadership principles for 15 min. The system I had to design was similar to dropbox yet simpler. As a junior dev, I don't really have too much experience in this. I only learned it online (links below). During the interview, I think the interviewer knew that, but it also seemed that he rushed me to talk about the things he wanted to hear from me. There was a part where he kept asking the same question until he heard the good answer from me. It gave me the strangest feeling ever. At this point I felt like I was in a classroom, and he was my teacher trying to get the right answer from me. Overall, I think I did not show any of my strengths here to the interviewer either.
==> Result: Reject
I knew I would fail right after doing the onsite. Being nervous was the real reason I did poorly on this. Beside that, I realized that I surely need to do more LC problems.
GOOGLE
Technical phone screen 1 (45 minute):
The interviewer asked me a quick question about my background. I spent around 10 minutes answering this. It also seemed that the interviewer did not want me to spend more time on this either, so we moved to the technical part of the interview.
The question was a hard array question from the top 100 Google questions in Leetcode. I bombed this round really hard because I had not met this type of question before, even after the interview, I struggled trying to understand the solution from Leetcode.
Technical phone screen 2 (45 minute):
I was allowed to do another phone screen. This second time, the interviewer went straight to the technical part. The question was similar to a popular hard array question from Leetcode. I did really well in this round from analyzing the question and going from the brute force to the optimal solution. I also did well in the follow-up question. I was able to write full solutions for all parts.
Virtual Onsite (5 rounds):
Round 1 (45 min technical):
We spent around 10 minute talking about my background and reasons why I applied for Google. The algo question was fairly easy. I couldn't find this question from Leetcode. The topic is array, stream data, and sort. For the follow-up question, It seemed like the interviewer was trying to help me go directly to the solution. So I didn't actually have a good feeling about this because it felt like I was guided step by step. But overall, it was not too bad.
Round 2 (45 min technical):
5 minutes on my background. The question was a string question. I really liked this one because it was not too hard for me, and the interviewer made this question feel like a real life problem where they have to solve it in their jobs everyday. A lot of follow-ups, I was able to adjust my solution for each one and wrote the solution for each. I had a really fun time with the interviewer because he was super friendly. The whole round really made me feel like I was naturally discussing with my colleague about an interesting topic. My confidence was boosted up a lot after this round. Another thumbs-up for Google interviewer!
Break (1 hour):
I really appreciate this break. I could refresh myself with a light meal and a quick nap. It did help me a lot.
Round 3 (45 min technical):
The interviewer went straight to the question. The question was similar to a popular hard sliding window problem in Leetcode. I practiced a lot in this topic, so I aced this round very confidently. I explained carefully on how I got to this solution at every step. Again, thanks to the LC community, my solution was very clean.
A fun thing happened during this round. My interviewer got disconnected from his internet for straight up 7-8 minutes. I was left alone and wasn't sure what to do. I decided to keep on writing the solution instead of waiting for him. And thank god, he got back, so I tried to explain right away what I did when he was gone. He was easily on board with me after.
So guys, let me know what you would do if you were in this situation. Would you wait for him to get back and continue, or would you just continue writing the solution like me?
Round 4 (45 min technical):
The interviewer also went straight to the technical question. This was a graph question, but I cannot find it in Leetcode. However, if you are familiar with graphs (BFS/DFS), this should be a medium question. I was able to code it out on both initial question and follow-up. The question also looked like a real life problem. I finished fairly fast, so at the end, we talked about how I would handle some situations related to this problem (error handlings, etc).
Round 5 (45 min behavior):
Even though it was not a technical round, the interviewer was also an engineer. When I talked about my past experiences and examples, he could understand what I was talking about, and he also dug deeper into some technical terms as well. Since I prepared for the leadership principles for the Amazon interviews, I thought I did ok for this round as well.
==> Result: Pass
Passing Google onsite does not guarantee anything. You still have to pass the Hiring Committee which is about 10% (check resources below)
~Thoughts: I think I like Google onsite better for these reasons:
Google gave me a break while Amazon didn't.
Google put the behavioral part separately into one round. Amazon puts both in each round, so it cuts off the time to solve technical questions which can easily overwhelm me.
Google interviewers I had were more friendly and engaged. (This surely doesn't apply to all, just from my own experience)
GOOD LUCK, everyone!!
Updates:
- I have fixed the bad links, and I also added my top Google list that I used to practice.