I was contacted by a recruiter at an external location via phone, and, after a few conversations (one of them mostly being the recruiter enthusing over intentional software - this became a theme) we set up the first of two phone interviews.
The phone interviews themselves were pretty straightforward - the first one was about trees and graphs, and the second was about hash tables. The first one is incredibly easy, while the second one is typical for a phone screen. Don't take the difficulty of the questions personally - a surprising number of people don't get past the screen
The onsite interview came a few weeks later. I got flown out in the evening the day previous, recieved a night at a pretty nice hotel and got to visit the offices for 3 rounds of interviews the following day. Two of the guys were nice while one didn't really seem like he wanted to be there.
Interview format is as follows: You get walked to the interviewers' office, talk briefly about your background, and are asked the relevant programming question. You get the whiteboard to answer your question. After the fact, you get the typical 10ish minutes to ask questions of the interviewer.
The non-technical manager who was supposed to interview me ended up having scheduling conflicts, so I didn't participate in that section of the interview
The problems weren't horrendously difficult - had I gone at the top of my game I probably wouldn't have had a problem securing the job. I didn't leave much room to breath between the flight and the interview, however, and as a result didn't perform as well as I could have.
I will say, the recruiter enthusing over the company got old after a while. He spent about 10 minutes between each interview gushing over how awesome the company is - it got old pretty fast, and ended up being the most annoying part of the process by far. From what I understand, this is only a slight exaggeration of what's typical from a recruiter, though, so take that as you will.w