I applied on the web responding to an offer and providing a resume. I was contacted the day after (really) and asked to have an online programming test. I had 7 days to do it but I did it right after receiving the email. The test was of 2 hours and consisted in three problems, two of them were pretty easy and I found the last one much harder. The email explained that the code will be reviewed manually by Amazon engineers.
Less than a week later, I was invited to set a date for a phone interview. We set it for two weeks later. The interview was 90% technical and included basic data structure knowledge and complexity. There also had a conception question and a problem solving. Nothing too complicated for a serious candidate.
They mailed me back a week later (a Friday) to invite me to join an Assesment Day the next Thursday. I went to it, it consisted in a day starting with a short introduction to the different teams and the challenge they had to face. We were 8 to this assesment day, 4 such days were organized and we were told they had 6 vacancies. After the presentation, I had 4 face-to-face interviews each of 45 min - 1h, with a nice sandwich pause between the second and the third interview. Almost all interviews included question based on the experience ("Tell me a time when ..."). They dig into your example quite far, so come up with real and interesting examples. The second interview only consisted in a programming session which I found very easy compared to the other technical questions. Of course, all interviews were mainly technical.
The first one was about generalities and were pretty easy. I found the third and the fourth much more difficult. The third one included a long conception question and a problem solving question. Finally, the last one was only a problem solving question (a problem that the team had actually had to handle, probably simplified) that we discussed very deeply. These are the only interviews where I was not able to provide what I thought to be the best answer, since I came up with better ideas soon after the interviewers left the room. For problem solving question, especially the last one, they don't seem to be interested in seeing you solve that all, but rather detect all the difficulties and propose a naïve solution (but being aware of that and explaining what should be improved and how, if you have any idea).