Applied online and then quite a while later (1-2 months) I got an email inviting me to come to Seattle for an on-site interview. There was no phone interview or anything like that. The day of the interview, all the candidates were split into groups of 3 and we were given a problem to complete, which was very clearly separated into 3 parts. All of the parts involved some sort of minimization problem and one of them, the one I chose, involved making predictions based on historical data and then minimizing costs based on the prediction. I got the impression that they kind of wanted us to work together but the problems weren't too related to each other and they said that we were not supposed to do any pair programming so that didn't really happen. We just worked on our problems and then periodically had short meetings with Amazon engineers to talk about our progress (I think there were 3 of these throughout the day). At the end, we submitted our code and then had a short info session with some more engineers and that was it.
Overall, it was a pretty good way to do interviews, I think. Definitely gave them a lot more info about my skills than most interviews do.