In 2011, I flew to Seattle for an on-site interview with Amazon, that is an interesting experience and I learned a lot from the preparation and knowing how these company finding new talents. I would like to share some of my experience on that interview.
After handing out my resume on school’s career fair, I got an email from Amazon campus recruiter that they have an interview event for campus hire hold on Amazon campus in Seattle, and they would like to pay me the trip to the interview. That really surprise me because what I heard is they will usually have one or two phone interview before you get to the on-site interview. However, this is a great oppurtunity, and also a free trip visiting Seattle. So I just go for it.
My sister in law live in Seattle, and she introduced me a friend who work in Amazon. I got lots of great advices about how to prepare the interview with Amazon. The position I applied for is general software engineer so I will not inteview with specific team members. Therefore I just prepare for general questions.
First, for technical interview. There’re two books that really explain the process and questions they will ask:
- Cracking the code interviews
Those two book is really helpful. And is the main source of preparation. I started a github project and push answers on it for preparation, Also I wrote the code on notebook for practicing writing code on whiteboard.
Also, TopCoder is your good friend, attend some Single Round Matches or do some questions in practice room to really get the tempo of solving questions.
For algorithms, the recruiter recommanded some books and resources:
Algorithm in Nutshells is a digest book for the algorithms and data structures.
- TopCoder algorithms tutorials teach you the skills to solve problems on Topcoder using algorithms and data structures you learned.
- Introduction to Algorithms is the masterbook of algorithms.
- Programming Pearl is another book about sophiscated pragramming questions. The friend in Amazon told me it is a good book for solving algorithm questions.
Also, http://caterpillar.onlyfun.net/ is a great resouce for basic algorithms if you can read chinese :)
For coding questions, I mainly prepared in Java so I reviewed the language basic through some internet resources, also remember to check regular expression and basic file and folder read, write Api in the language.
Also I read other resouces from internet:
- My job interview at google is a great interview article that contains a lots of resources worth for reading. Also I translated it into Chinese before.
- Five essential phone screen question is also helpful on the basic problems.
Euler project is a resource for mathmatical computer programming questions.
Before the departure, I asked my brother for some mock up interview and try to solve the problems by writing codes and speak my thought in the same time. Also I got a mock up interview on phone with the friend in Amazon, that is helpful because he can point out my errors and ask questions on my answer like real interviewer. (actually he is, all Amazon Engineer need to be interviewer).
After 8 hours flight and transfer, I arrived in Seattle at night and took Taxi to Hilton Bellevue. The main traffic tool Amazon suggest is Taxi, they will reimburse all traffic expenses during the interview.
Next day, I took taxi to Amazon campus near Bellevue, the texi driver said Amazon just move their campus to south lake union recently. I arrived around 10:00, the interview hold on 11:00. So I visited the South Lake Union park before interview.
On 11:00, the interview began with a lunch with Amazon engineers, who will also be the interviewer afterward. It is not part of the interview, but a chance to let you understand more about Amazon. I sit on the table with an engineer who work in customer service team. I asked some questions about software development and life in Amazon. The interesting thing is, Amazon is composed by lots of small and medium teams running Agile, each team using the languages and services by their requirements and scale, the stack is differ from team to team. The culture looks pretty Engineer driven. And he said the life and workload balance is reasonable in Amazon.
After lunch, we was taken to different rooms with whiteboard, which is the place we will stay in the rest of the interview. There’s four sessions, each is 45 minutes and no rest netween sessions. It seens like a really hard schedule for both side.
First session was from an enginner in Kindle app store. I signed the NDA so better not to talk about the question. But it is a simple programming question, not too hard but need to handle some details. I wrote the question in a python-like pseudo code first, and rewrote in java. It takes more time but make you able to write code with fewer errors. I am pretty comfortable in this way, but need to control the time of writing pseudo code and real code.
Second session was from web team (probally), He asked about some data structure. how do you implement it, pros and cons, and some optimize questions. As the same I write the data structure in Pseudo code first and rewrite with Java.
Third session was from an engineer in wireless team. He asked a tricky question about data structure. After answer that, he asked about the pro and cons of my implmentation and the design decision. I made a small mistake when answering a design question. I said I put the method in class just to keep code concise for interview, but I should rather talked more about the pro and cons about how I made the decision.
Last session was from kindle team. He asked a practical question that he solved in Amazon website before. In the beginning I wrote the pseudo code in python, and he suggest me just wrote in python. But I got confused with Python api of folder. And didn’t answer well on the optimize question afterward. So the lesson is, just make sure you are familier with API of the language you use.
Afterward, they escorted me to the lobby and I took taxi back to meet my sister in law. Having some authentic Taiwanese dinner and met some friends who works in Amazon and Microsoft. I took to flight back to New York in the next morning.
In the end I didn’t get the job, and they encouraging me to try again in half year. But I learned a lot through the preparation of the interview. The interview process is pretty fun - solving different problems with engineers on whiteboard - is like playing a big quiz game. Not every programmer like these pop questions, but at least I think it is pretty interesting and challenging to solve. I will definatlly have more technical interview in future. And this experience will help a lot.
Thanks for the friends who help me on the interview. And for this oppurtunity to visit Seattle - it is a nice city to live. Wish I can visit there again in near future.