I applied for a position in Boulder, CO with Worldwide Advertising.
I completed an online coding challenge that was 2 questions in 90 minutes. For this portion, your code will tested against unit tests. You'd be able to see the inputs/outputs of a couple of the unit tests, but the rest you wouldn't. It was pretty similar to other online coding challenges. I got 1 problem passing with 12/13 unit tests and didn't get the other one.
Next up was the phone screen. This lasted roughly an hour and consisted of a couple of behavioral questions along with a coding problem done on a shared editor. For my first phone screen, I thought the interviewer was friendly, kind, and definitely wanted me to succeed. I believe I had the general approach down and most of the code. It wasn't perfect, but I think I showed I had the right idea and would get it.
After this, I was invited to have an onsite interview. My choices were a Monday or Friday in Seattle or wait until they had an onsite in Boulder. I was fine with either and they chose to fly me out to Seattle. They put me up in a hotel about a mile from the office that included breakfast in the rate. I got some say over the flight times and the travel company they used even allowed me to use my frequent flier account. I had four interviews.
The first onsite interview did not go well (data structures / algorithms + behavioral questions). They brought a laptop for me to use, but they spent 15 minutes of the 60-minute block trying to get the internet connection to work. We ended up using the whiteboard. After being given the problem, the interviewer immediately asked what my algorithm was. I replied that I needed to think about it, to which he retorted that he needed to know my algorithm. I drew out some quick sample inputs on the board that I could work through. The interviewer did not like how I drew them and insisted I redraw them to his liking. I came up with an approach and then proceeded to write code. While I was writing the code on the whiteboard, the interviewer interrupted me to let me know that I "need to write code or this won't go well for you." I replied that I'm writing code. Eventually, we ran out of time. At this point, he stated that there were "so many problems" with my code. Throughout this whole interview, he was letting out angry/frustrated sighs and interrupting me to reiterate things (like, "I need to know your algorithm" or "you need to write code" while I'm writing code). Maybe he was the "bar raiser" and this was all intentional, but I don't think it was. This guy was rude and mean. I later looked him up on and assuming I found the right guy, there was a chance I could report to him. Had that been the case and I was offered a job, I would not have accepted it.
The second interview was object-oriented design. This interviewer was much nicer. She also asked some behavioral questions.
Next up was the systems design interview. If you read the recommended book, it was exactly like they describe (they even used a question from it). This interviewer also asked a couple of behavioral questions.
The fourth interview was another object-oriented design question and behavioral questions.
Lastly, they had someone take me out to lunch. We just went to the onsite cafeteria. They say this isn't an interview, but don't believe it. I think this was an interview trying to gauge your motivation for wanting to work at Amazon and see if you'd be a good fit from a personality perspective.
After a few days, I was contacted by the lead recruiter and told they needed more data points and wanted to do an additional phone screen. This was then setup for the following week. This was exactly like the first phone screen (coding problem and a few behavioral questions).
Ultimately, I didn't get the job. It is their policy not to provide feedback and was told I could reapply in 9-12 months.
My advice would be to first read the recommended book. This will give you a good idea on how to approach the interviews in general. Multiple questions from my interview were in this book.
As far as the coding for the data structures and algorithms, go to Leet Code and work those. At least one of my problems was in there. You need to be able to solve Leet Code's algorithms problems (of difficulty medium) in an hour window. In retrospect, I should have spent more time on this aspect.
Lastly, the recruiters will tell you to have 5-6 examples that show their leadership principals. The problem here is that over the course of 6 interviews, each asking at least two behavioral questions, you'll quickly run out of examples. Reusing the same examples is not good. Also, over the course of two months, it was hard for me to remember what examples I used.
In general, the recruiters will give you great advice.