I have a friend at Lab126, a subsidiary of Amazon located in Cupertino, who referred me for a job with his team. I was prompty contacted by a friendly recruiter from Seattle, passed on to the hiring manager and had a first phone interview. First phone interview covered some simple coding questions using collabedit (a big improvement over verbally describing code!). It was apparent to me that I aced this interview, and indeed I did. So a second phone interview was set for the next week. In this interview I was asked one very difficult question which I was totally unprepared for -- I've never seen one like it before or since. I was pretty boggled by this question and made a crucial mistake, I just started coding it before really working out the algorithm. Recommendation: talk it out and describe the algorithm fully before you write any code!
I did barely squeak through this interview and so was contacted by another friendly recruiter in Cupertino to setup an onsite interview in Cupertino the following week. Unfortunately the airfare got messed up (be sure to confirm air reservations within 24 hours even if its over the weekend!) so we pushed it back til the next week. The whole interviewing process stretched out over about 4 weeks.
I studied coding questions intensively in preparation for the onsite interview, I should have prepared before the phone interviews too. This did serve me well in the onsite interview.
Since I was flying from Florida and wanted to stay extra days to check out real estate, they were kind enough to book me two nights (they usually only do one). They also set me up for a rental car which I had to get reimbursed for. The hotel was very nice, literally right next to Lab126 building where I had my interviews, I was able to simply walk over there.
Onsite interview involved 4 coding interviews (1 of which was by video since the guy was in Seattle) and then an interview with the manager of the team I was being interviewed for (while I wolfed down a mediocre sandwich from a catering company). I was out by 2PM, not quite the full day interview I've heard described by others. 3 of the 4 interviews were dead on, I answered the coding questions very well and in timely fashion and the interviewers gave me positive feedback. Unfortunately, the hard one was the bar raiser and I fumbled on that one a bit. This was a question about designing a reservation system for a restaurant -- obvioulsy impossible to code that in one hour. I think the key to these types of questions is to talk it out. My interview with the manager was hard to read, she wanted to know things like what other companies was I interviewing at, did I have any interest in management, etc.
At the end I had a brief interview with HR person who was friendly. She wanted to talk about HR things like relocation, salary, etc.
Ultimately I received a pretty standard corporate "No thanks" e-mail. For me, it was disappointing but probably just as well since the real estate in Silicon Valley area is ridiculously expensive! I was going to feel like I'd gotten a cut in pay given the salary I was likely to receive.