I applied through my school's job board (JobMine, University of Waterloo). I received an on-site interview in Waterloo on a Wednesday morning.
All interviews were done at the Tatham Centre on the University of Waterloo Main Campus.
This interview was focused on both - I timed 10 minutes on behavioural / past projects / "talk about yourself", 25 minutes for the coding problem, and another 10 minutes on "do you have any questions for me", all time which I felt I was using well.
This first coding question was riveting. (NDA, can't say what they are) I got stuck in some places, but I wrote down the pseudocode, stated my assumptions, got the green light, and started coding. I got stuck in some areas, (since I was using a Java HashMap and its entrySet() method, which I confused with keySet()) but eventually had about 90% of the code done (with test cases written off on the side, and the expected result given my initial pseudocode) before I asked him questions about what his thoughts on Amazon were.
I was driving back to Toronto (where I'm from) when I got the call from Amazon for a follow-up "second round" of interviews, of which it would be three back-to-back interviews at a certain time. Since my time schedule was really weirdly limiting (a fault of my own), I took the three earliest ones - 9:00am, 9:45am, and 10:45am (15 minute break between 10:30am - 10:45am).
The first interview of "round two" was with a hiring manager. He was quite friendly, and did a great job explaining his role and what his progression was through Amazon as well as Waterloo (all Waterloo interviewers from Amazon are alumni, from what I could tell, and had at least a few years of experience at Amazon under their belts). I talked really in-depth about the last intern project I worked on, and he was really intrigued, so kept probing me on details. Eventually, I'd sketched out the entirety of the systems' design, which I was (mostly) responsible for integrating & implementing. This interview felt really good in my book.
The second interview of "round two" was an object-oriented design problem. I felt I was bombing this, but I think I specified what I was thinking and what my goals were at every stage, and never sought to waste time or "pander" to a specific approach. Every time I deviated from what the original assumptions I'd made (that were correct, or at least, not corrected by the interviewer), I would be shepherded back to the correct path (which I felt was bad, since then I'm getting too much guidance, or something). I wrote the required interfaces, designed the classes of objects, as well as their relationships, then wrote pseudocode for the required interface methods, and implemented it. I was able to get through it all and have just under five minutes to spare for questions (40 minute problem!).
The third interview of "round two" was an algorithms problem, but phrased in a way that made it seem like implementation was important. As usual, I set up and framed the question, solving the ambiguities where necessary, and began to design approaches to solving the problem. The only issue was, none of them worked. At each of the instances I suggested something, the interviewer would question them, which would make me clarify assumptions, which would invalidate that approach. We approached the 20 minute mark before I believed that I had come up with something relatively reasonable, until I was about to implement it and realized it was inefficient, which the interviewer noted "good work". It took another ten minutes to reason out a solution that also looked viable, until he gave me a suggestion to spark a data structure that would work perfectly (it was a heap). I didn't have enough time to finish the implementation (pseudocode and test cases checked out), but the interviewer explained that he was looking at the way I approached problems, rather than what the code was supposed to look like.
And that was it for my interviews. I left the TC at 11:30am really scared of what would happen.
I was really (silently) self-critical when in the interviews, and I was fearful that it either showed, or that I had failed. One went decent (first), one went "ok" (last), and one went "oh man why did i do that" (second, but i guess the interviewer didn't think so?).
I got an email roughly two weeks later extending me an offer; it was the happiest day of my life so far.