I got an email out of the blue asking me if I wanted to fly to Seattle and interview. I still don't know where they got my resume; but I assume it was from when I applied for a co-op position a year before. I was excited to go, but from the very start I got the impression it was going to be tough. I got an email about a week beforehand with about 8 attachments containing literature about the company. I was informed that I would be doing a programming problem for most of the day, and I would have my choice of language, compiler, and OS.
When I arrived on campus, we were given visitor badges and told to wait until someone came to get us. I felt weird that the majority (at least 75%) of interviewees were foreign students. It made me feel like I was out of my league. We were taken upstairs to a conference room where HR gave a speech about how great the company is. We were then assigned to a table, and given a laptop and packet describing the programming challenge. The challenge was supposed to be team-based (with the people at your table), but it turned out to be more individual that I anticipated. The problem broke into three pieces, and each person picked a part to do. You didn't have to use the same language. The parts were basically independent, but I could see where sharing code between teammates could be helpful.
We were given 6 hours to complete the task. After about half an hour, an engineer came to gauge our understanding of the problem, and clarified anything we didn't know. We then worked for about an hour, and an engineer pulled each of us out for a personal "interview". It was the least personal interview I have ever had. The engineer was all business, and we just talked about my approach to the problem. When I got back, I had about 4 more hours to complete the assignment. Half an hour before the deadline, we were individually interviewed again. Pretty much the same type of thing, just talked about my approach. The interviewers were always interested in efficiency. They asked questions like "how could you make this better/faster", and "why did you use this data structure".
I really got bit in the butt because I was forced to use C++, instead of C (which I am much more familiar with). I was unfamiliar with the C++ libraries, and I had to waist a lot of time looking at documentation. BIG TIP: be very familiar with your language before you go!
My solution was incomplete, and I knew this when I turned in. I was encouraged to write a README file which explained my shortcomings, and any ideas I had to make the code more efficient.
At the end of the interview, we had a group Q&A with a developer. I got the impression that this was a very stressful job with poor work/life balance. I love the area, so if I had gotten an offer it would have been a tough decision weather I was willing to sacrifice a stressful job for my dream city.