Everything you need to know about interviews at companies like Amazon and Google: Part 1
Hello friends, from today we are starting our new series. The series will offer you a bumpy ride in the interview world of the top-notch IT companies. I have been in the industry for a couple of years now and have interviewed most of the top silicon valley companies including Facebook, LinkedIn, Uber, and Airbnb. I have been an interviewer for Amazon, Google, and my current startup company. Thus I am lucky enough to see things from both sides and have quite a lot to share with you. In the series, I will also discuss my personal thoughts about some of the pros and cons in the current interview process.
So let’s get started!
Today, we will focus on a typical interview process. How it looks like in Google and Amazon from an interviewer’s point of view. I will introduce the first few stages of an interview process, which includes the first phone call, an online test, and a phone interview.
The interview process begins with a phone call! The recruiter will schedule an initial phone call with you as per the convenience. The first phone call is quite informal and lasts for about 10-15 minutes. General questions related to your background and job experience according to your resume shall be asked. Other than this, the recruiter will explain the complete interview process.
As per the recruiter’s point of view, he/she wants to figure out three most important things in the first phone call. The first thing is validation. The recruiters would like to validate that you a real person and you do have the experience as described in your resume. The candidate must be prepared to answer questions such as “what did you in your previous job” and “what was the most challenging part of your last project?”
The second thing is communication. The recruiters will figure out the communication skills. Does the candidate speak understandable English? For software engineers, as long as one can explain the idea clearly, it won’t be a problem. Candidates should not worry if they have a slight accent issue. Being confident is more important.
The third thing is the position. The recruiter would like to know if the candidate is willing to work in the particular position. If not, the recruiter might consider the candidate for other positions he or she is recruiting for, or maybe reroute to other recruiters.
In Amazon, the recruiter usually recruits for a specific team. Most of the interviewers in the phone and onsite interviews are from the team itself. In Google, there are two types of hiring, general hiring, and non-general hiring. For the non-general hiring, it’s similar to the Amazon’s hiring process, the recruiter is recruiting for a specific team. But 90% of the hires are general hiring. In this, the recruiter is usually recruiting for the whole company. So there is no interview with a specific team, and one can choose the team after accepting the offer. So the positions are general positions such as Software engineers or Software Engineer in Test.
After the successful completion of the first phone call, the candidate will receive an invitation to give an online coding test. The online test is not typically tough. Everyone who is willing and ready to do a job related to programming should certainly be able to solve such test. The main purpose of this test is to weed out obvious incapable candidates before the recruiters would put their efforts for phone interviews. It is not necessary that everyone has to give the online code test. For experienced candidates, the recruiter might directly jump to phone interview or even onsite interviews.
Then for whom are such online tests meant for? These online tests are mostly meant for internship applicants and newly graduated candidates. Sometime, the recruiters will require the candidate to complete the online assessment first, and then they would schedule the first call with candidates after they pass the online tests.
The online assessment is generally hosted on Hackerank. For Google, usually, there are two coding challenges that need to be solved within 60 minutes. For Amazon, there are two coding challenges, debugging questions, and reasoning questions to be solved within 90 minutes.
The debugging questions include fixing the code and getting the expected output.Every question has some code with an error. The candidate has to figure out what’s wrong and correct it. Usually, the bug is pretty obvious and simple, so changing one line would give the correct output. While the candidate would be searching for a complicated error, the solution might be pretty simple!
Reasoning includes mathematical and analytical questions such as finding patterns, reading comprehension, etc. Both the debugging as well as the reasoning questions are not difficult and many candidates successfully solve it.
The coding challenges include writing code for a question. These questions are also simple. For example, “An integer array is given, find the most frequent number and it’s count in the array”. Here, the function signature is given and the candidate is expected to implement the function signature. The code can be written in language such as Java, C++, Python, as per the candidate’s convenience. There are also pre-written test cases which can be run to evaluate the solutions. The tests would cover some of the edge cases and include scalability test cases as well.
The candidate is allowed to access the Internet during the code test and any resource could be referred. Once done, the candidate should submit the solution. Post submission, the assessment is evaluated by an automated judge which runs all possible test cases against the code. The solution is then graded by the total number of test cases passed. The latest version of Hackerank grades the code according to the code quality metrics such as nesting level and method length. If the grade passes the threshold, it would be further sent to the software engineer who would review it in terms of code accuracy and code readability. The reviewer will make a final judgment.
I have been a reviewer for online assessment when I was working in Amazon. The moment I noticed a 100% passing rate of the test cases, I would mostly select the candidate for the next step. Even if the candidate has bad programming habits like using meaningless variable names such as a, b, c, etc. I would still select the candidate. So the top priority in an online test is to clear all the test cases. It will make it easy for the reviewer to review and grade the solution.
Also, remember that writing an elegant code and being proactive regarding comments on quirks or assumptions would create a better impression. But the process certainly differs as per the organization. In some teams, the solution is just graded by the machine while in others, the reviewer might get involved.
After successfully passing the first two stages, it’s now time for the phone interview. The phone interview is approximately 45 minutes. The main purpose is to filter out candidates who would not be able to clear the onsite interview. The cost of conducting the 4 onsite interviews is expensive. The company covers hotel and flight expenses. It is actually a big investment.
In Amazon, the engineer would usually be from the team with whom the candidate would likely work in the future. In Google, the engineer is usually from a pool of interviewers based on their availability. The engineer would give a brief introduction at the beginning of the 45 mins phone call. Then, the engineer would ask questions from the candidate’s resume. Questions like “What makes you apply for this company and what are your concerns” would also be asked. The candidate should also be aware of different areas of technology because some questions would be asked based on your knowledge out of your expertise.
The engineer would then ask you to code in a text editor to solve some coding questions using real-time collaborative text editors like CollabEdit.
The difficulty level of the coding questions in the phone screen interview would be similar to the difficulty level in the onsite interview. Typical questions like “construct the Binary Tree using Inorder and Postorder Traversal” or “return the k most frequent elements from the given list of non-empty words” are asked. The candidates should have a good understanding of data structure and algorithms for solving such questions. We will be discussing on “How to prepare for such coding questions in another article”.
The solution can be written in any programming language, the editor offers you the syntax highlight for most of the programming languages. Remember that the candidate won’t be able to compile the code. Google can be considered a special case because it uses Google doc as the text editor. It doesn’t support with syntax as well! Generally, the candidate encounters one coding question but sometimes, the question could be divided into several parts. For example, in the second part of the question, the candidate might be asked to solve the same question with some constraints like doing it in linear time or doing it in linear space. Another part of the question could also be an extension of the problem. Again, all this depends on the speed of the candidate. If the candidate is able to solve part 1 quickly, the interviewer might throw the next part to the candidate.
There have been cases where candidates claim to solve the problem with zero bugs but are still rejected. This usually happens when the coding questions are divided into more parts. But it takes too much time for the candidate to solve part 1 and the interview runs out of time, so the interviewer never gets a chance to move to the next part.
However, the expectation of the interviewer might be that the candidate has to get to part 2 in order to pass the phone screen.
At the end of the interview, the engineer is asked to submit his/her feedback to the recruiter. The feedback includes sections like problem-solving skills, communication skills, candidates interests, and motivation. The engineer will then submit the recommendation for the next step. It could be selected for onsite, rejected, additional interview or reroute. The strongest would be selected for onsite interview. If the interviewer thinks additional signal is needed before making a decision or he wants a second eye to examine the candidate, he would request for a second phone interview.
So this is why some candidates might just face one phone screen interview while others could face two before being shortlisted for the onsite interview.
Let’s summarize what we have talked about today. In this article, we have discussed the three main stages involved in the interview process. The first stage is a phone call where the candidate is rung by the company. Then onwards, the second stage is an online code test where the candidate’s programming skills are tested online. The third stage is the phone interview which determines whether the candidate should be called for an onsite interview or not. So we have seen each and every stage in detail.
The next article is about Onsite Interview. I hope these articles can help you get the gist of the interview process. Guys, see you soon in the next article, till then, aspire and inspire!
Did you have a look at our code review series?