I applied online. The process took 2 weeks. I interviewed at Amazon (Seattle, WA) in Dec 2012
Interview
I applied to Amazon on their website and was contacted via email to set up two 45-minute technical interviews.
Each ended up lasting about an hour, and involved a few personal questions (e.g. tell me about a difficult problem you encountered and how you solved it, what's your favorite data structure) followed by short-answer technical questions (e.g. what is a hash table), and finally a programming problem. I was asked to code live on a code collaboration website, and was allowed to pick my preferred language.
The coding questions were fairly simple - they don't try to hit you with anything you haven't seen before. One involved searching a linked list, then adding the possibility of duplicates, then detecting whether the list looped.
The interviewers are very nice - they are not out to trick you and will nudge you in the right direction if you get stuck.
Interview questions [1]
Question 1
Given a linked list, find a key value and how many times it occurs. Include the possibility of a loop.
Straightforward. Two phone interviews were scheduled on consecutive days a week after the recruiter contacted me. Asked some data structures question, a few simple coding problems, and then some general OO design stuff. Coding was done via collabedit while on the phone.
Interviewers were nice and would provide hints if necessary. Make sure you know your running times.
Interview questions [1]
Question 1
Be ready to use OO concepts to answer some very general design questions.
The process took 3 weeks. I interviewed at Amazon (Seattle, WA) in Feb 2012
Interview
Amazon posted an intern offer on my school career website. I submitted my resume, was contact about 2 weeks later to schedule two 45 minute phone interview. First interview I was asked about to describe projects on my resume, then was asked to list off some data structures. Asked to list all the sorting algorithms I could think of (only listed mergesort, quicksort) and then was asked if I knew the runtimes of these. Then was a coding question which I can't remember, something to do with strings. I had to read it aloud back to him. Asked how I could improve it and the runtime. Then asked about object oriented programming and how I would represent a card game and which methods it would need. The interview ended with me asking questions. The second interview was with someone with a heavier Indian accent, he said he was a tester. He asked me the difference between an arraylist and linked list, then to write a program on paper, I cant remember what it was exactly. I was then asked how I would test the program and if there were bugs how I would deal with them. Then asked about polymorphism and inheritance. Interview ended with me asking questions. I was contacted about a week later to schedule a 3rd phone interview and they actually apologized that I had to have one. Had the interview a week later and right off the bat was asked only one programming question. It was how to find a subset in a string. I had to describe the runtime. The interview was only a half hour I believe and it ended with me just talking to the guy, he had been working there for 7 years and knew someone else who had for 13 years. Asked about the pagers, etc. The day after I was offered an acceptance. To tell the truth, I thought I ruined my chance with all interviews. I answered runtimes wrong, and admitted I didn't remember what polymorphism was. So I was very surprised that I had an offer for another interview. I also thought I ruined the 3rd interview because it took em a very long time to figure the answer--and I don't even know if i got the right answer in the end, because the interviewer had to help me. The main key is to EXPLAIN YOURSELF. I said I had difficulty with things, and how I would TRY to program it or fix it and just talked it out while I was writing it. It really helps to show how you think ,which I guess they liked in my case!