I submitted my CV through the amazon recruiting system (applying for a particular job offering). Within 2 weeks a recruiter contacted me to schedule a phone interview. The first phone interview was with a software engineer, who was very kind and comprehensive. The first interview lasted about 1 1/2 hour and I was asked about algorithmic time complexity, reverse a linked list, traverse a tree, design patterns, and object oriented design. At the end of the interview I was asked to provide code for a problem the engineer send me. I had about 5 hours to submit my solution (java code) via email.
One week later a second phone interview was scheduled with another software engineer. The interview lasted about 1 hour and covered algorithmic time complexity, tree manipulation, sorting algorithms, object oriented design, SQL joins, etc. At the end of the interview I was asked to review a code snippet that contained errors/ bad practices. I had 24 hours to submit my solution via email.
For two weeks the recruiter went silent until I asked about the status of my application. I was then invited to an on-site interview. The onsite interview lasted about 6 hours, and I had 6 1:1 interviews with technical and non technical interviewers. The first two interviews were about cultural fit and motivation. My advice for cultural fit and motivation, know very well why are you applying, what's your history (of employment) and your details with respect to customer relationship. You should absolutely know the amazon core values!
The 4 reminder interviews were very technical in nature. The first was about solving a recursion problem. The second was about solving a large sorting problem and provide a regexp parser. The third was software architecture / technology in general. The final interview was object oriented design, design patterns, and design experience.
Contrarily to other interviews posted here, I had no lunch interview. Instead I had a lunch break and I had to pay for my own lunch.
The interviewers were at all moment very kind and comprehensive. They always tried to help my sort out the problems when I got stuck. Overall, the interviews were challenging, but none of the problems were unsolvable. Studying from "cracking the coding interview" and "programming interviews exposed" helped me a lot. I think that all the questions the interviewer asked me can be found here (with a few modifications), however nerves can betray you even if you think that you know the problem.
One week after the interview I was contacted by the head recruiter who gave me the good news that I passed the interviews and they were interested in extending me an offering.