I had my resume referred into Amazon's university recruitment system, and received an email confirmation letting me know they had received my resume and they would contact me if any positions seemed like a match. I then received an email from a recruiter letting me know they wanted to do a 45-minute phone interview.
After setting up the date and time, the phone interview seemed to go by very fast. The interviewer asked some general getting-to-know you questions, and then directed me to go to a weblink with a shared document. He posted the question, "Implement a stack." I coded in Java and explained what I was doing as I was doing it, and he was very helpful and edited a few minor typos that I made. Then he asked me how I would add a getMinimum function to the stack. I had heard the problem before, so I told him that and explained what my solution would be, and then coded it up. He asked me a time-complexity question related to my stack, which I answered, and then I had five minutes (or less!) to ask him questions.
A few days after the phone interview, I was contacted by my recruiter to set up an in-person interview. We set up a date and time. On the day, I had six interviews, four of them technical. One of my non-technical interviews was during lunch with one of the managers for the team that was offering the position, and I was able to ask him as many questions as I wanted before he asked me any questions. The only other non-technical interview was with a technical accountant (? I don't remember his position) not on the team, and he asked me general interview questions, like, "What's been your most difficult problem?" and "Have you ever had to anticipate what a customer wants or needs?" All the interviewers were very friendly and gave helpful suggestions. They also gave at least five minutes (often more) to let me ask my own questions.