Worked very closely with the recruiter over a couple of months to work out a time to visit Seattle for an interview. The recruiter was very capable and showed great passion for finding me a good fit in Amazon. On interview day I met with 5 team members (plus a couple of people just sitting in on the interview) for a total of 45 minutes each. They each spent from 10-20 minutes discussing prior experiences and then gave me a somewhat open-ended coding problem to solve on the whiteboard. Most of them mentioned that the result wasn't important, but was more interested in how I came to the conclusions that I did. During the whiteboarding I got very little feedback on how I was doing (one interviewer was typing vigorously on his laptop the entire time & was either taking a lot of notes or doing work himself). It was very hard to tell if I was going off on a tangent that they weren't interested in or if I was on track. At the end of the day I was happy with all of my solutions & didn't feel like I'd gotten stumped on any of the topics. There was one interview, though, that looking back on I wish I'd done differently. The recruiter mentioned that I could use any programing language that I wanted, but I would suggest to everyone to consider using something that the interviewer is familiar with. In the one questionable interview I used C# along with IEnumerables & LINQ to solve the problem. The interviewer asked a lot of questions on what IEnumerables were & probably thought I'd made up LINQ. At the end of the interview I doubt he had any idea what I had done. In hindsight, I should've used more basic C# or used another language entirely so the interviewer could understand what I was doing.