How to Pass Amazon Onsite Interview
Introduction
Before you can sit for the onsite exam, you must pass the amazon coding interview. Please check this post on how to pass the amazon coding test.
I was able to successfully pass the Amazon exam in my second attempt. It was a very challenging and refreshing experience. In this blog, I am sharing what I did to prepare for the exam.
Interview Structure
The on-site interview has four separate interview sessions, done by four individual interviewers. Each interview should take about 55 minutes.
Out of four interviews, three will be algorithmic questions. One will be a system design question.
Algorithmic Questions
For Algorithmic questions, you will have to write your code on a paper or on a whiteboard. You can use any programming language. You will have to provide the runtime and/or memory complexity of your program. You will have about 40 minutes to finish your question. If you complete it early, the interviewer may ask you a second question.
System Design Question
Same goes for the design question. You have to draw the design diagram on the paper/whiteboard and explain your question to the interviewer. Similarly, you will have about 40 minutes to complete the question.
Leadership Questions
Amazon is very serious about its leadership principles. At the end of each interview, you will be asked some questions about Amazon Leadership Principles. This will take about 10 - 15mins.
Preparation
Algorithms
Basically, follow the same set of preparations that I described here for the coding exam.
Since you won't have IDE support during the interview, you will have to prepare for it as well. Trust me this is important. When you do practice questions do them on paper. Don't worry about small mistakes on language syntax. But try to output the best industrial code you can.
Same principals as online coding interview applies. Use meaningful variable names, try to come up the with best code structure you can.
Design Question
Design question can be very challenging because of the ambiguous nature of it.
These questions can be of two flavors. Either it can be a very high-level question like "Design Netflix". Or it can be quite a low-level question like "Give me a class diagram for a Table". So either you are designing a complex system with high granular modules. Or you are designing a very simple system with very modules with low granularity.
To prepare for this exam again you have to practice a lot. Do sample amazon design questions available online. Try to glance through SOLID Design principles. Key to pass this interview is to be able to justify your design trade-offs to the interviewer. You don't have to present your solution with AWS, or any cloud solutions for that matter. Use whatever technologies you are familiar with.
Leadership Principles
You can read about the leadership principles here. Read each one of them and try to absorb the essence of every principle. Then try to think about your past experiences where you had to apply these principles. I recommend you to prepare two examples for each of the leadership principles from past experiences.
Preparation Resources / Books
Like I have recommended in my other post, I highly recommend you to invest on Amazon best seller Cracking the Coding Interview: 189 Programming Questions and Solutions book.
This book covers all the algorithms, data structures that needed for your interview with complexities and it has 189 practice questions. Book is not cheap. But a sound investment considering that it will help to get to Amazon.
Looking for a free book??
If above book is too expensive, an alternative book is Coding Interview Questions. This is not as good the first book, but gets the job done. You can read this book for free for 30 days if you register for Amazon's Kindle Unlimited Membership Plan's free trial period.
During the Interview
Think Out Loud
Always maintain good communication with the interviewer. Ask questions regularly. Also, try to think out loud. Explain your thought process to the interviewer. For a particular question if you can think of two or three solutions, explain all the solutions to the interviewer. And tell him what you think the best solution and why.
Make Assumptions
Questions can be ambiguous - sometime on purpose. Clarify ambiguities with the interviewer. You may be able to make some assumptions to simplify the problem. If you are going to make any assumptions, clearly state them.
Use Language Provided APIs
You can use any language-provided library for the algorithmic questions. This is highly encouraging because it saves your valuable time. But if you are going to use any API / Data structure, you should be able to explain the inter-workings and complexity of them to the interviewer.
Leadership Questions
For leadership questions, you will be asked about one of your past experience. And you will be asked lots of questions from different angles of the situation. It will be very hard to maintain a lie; so be honest and truthful.
One Screw up Doesn't Count
Also, all interviewers have a vote on you. So if you screw up one interview, don't give up. Give your best shot to remaining interviews.
Other Recommended Readings
https://www.linkedin.com/pulse/20141120061048-6976444-ace-the-coding-interview-every-time/?trk=mp-reader-card