Saturday, July 18, 2020

Amazon | SDE1 | March 2020 [Reject] / Google | L3 | July 2020 [Offer]

Original post: Link


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.


My story (skippable)

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.


Interview Process

Amazon

Online Assessment (45 min):

  • 2 popular questions from LC. Make sure you read a post about Amazon's online assessment. I only missed 2 test cases.

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. I was not sure how to answer it either.

  • 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 because the interviewers spent too much time explaining the question because English is not his native language, so I felt like I only had a small time left.

  • 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. 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 but simpler. I don't have any experience in this. I only learned it online. 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.

==> Result: Reject

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 also 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 is 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, I felt like the interview was trying to help me go directly to the solution. So I didn't feel good 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 minute 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. My confidence was boosted up a lot after this round.

  • 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):
    He went straight to the question. The question is similar to a popular hard sliding window problem in Leetcode. I practised a lot in this topic, so I aced this round very confidently. I explained carefully how I got to this solution on every step. Again, thanks to this community, my solution was very clean.

  • Round 4 (45 min technical):
    He also went straight to the technical question. This is 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 questions and follow-up. The question also looks like a real life problem, 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 is not a technical round, the interviewer is also an engineer. So when I talked about my past experiences and examples, he could understand what I was talking about, but 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 it can easily overwhelm me.


What I learned, my advices

  • Don't stress. I came from a small country, and English is my second language. Working for a big company was a dream that I did not think I could do it one day. But listen to me, when the chance comes to you even if it's a lifetime opportunity, just don't stress yourself out too much. I couldn't even sleep before my Amazon onsite, and next time I knew it had a really bad time. Learning how to handle your stress will also help in interviews.
  • Good preparation will boost your confidence. Make sure you practice important topics, and go through them many times if you need to. I did around 400 LC questions, but some of them I redo over 3 times. Make sure you check the discussion. I found a lot of useful solutions and clean coding styles from other people here. At the end of the day, interviewing is a game of luck. Good preparation will increase your chance of having good luck.
  • Leetcode contests are very helpful. I made sure I attended every week's contest in LC. They are fun to me and it helped me practise thinking of a solution fast.
  • Have a good plan on what topic you will learn for the day. Example: Today is a graph, tomorrow can be dynamic programming, etc. And last week you can repeat those again if you want. Make a list for each topic (or clone them) to organize and practise.
  • Good preparation does not always mean working too much. Make sure you have your "off" time to do your habits, hobbies, personal and healthy stuff. I only focused up to 8-10 hours a day. After that, because I am a gamer, so I play games to relax.
  • Believe in yourself. You can do it. I am a normal ordinary person, and I did it. You could too!

Useful links:

GOOD LUCK, everyone!!

No comments:

Post a Comment

My Journey from a Tier-3 College to Microsoft, Google, and Meta: Lessons Learned

Original post: Link   Time to give back to community. Went through couple of post myself and got inspired and belief that cracking FAANG is ...