The first step of the process was a phone screen with a recruiter. She was pretty knowledgeable about the technology involved and the process, and answered several of my questions.
I then did a technical phone screen. Using a screen sharing program, I was asked to solve a relatively simple algorithmic problem in either Java or C#. The website we were using did not have any sort of IDE like abilities, and because of that, my interviewee was pretty lenient as far knowing the exact class and method names.
I felt like I had done okay, but not great on the phone screen, and two weeks passed before I heard back from them. They asked me to do an on site interview, and were pretty flexible about scheduling it around when I was available.
The on site interview started out with a coding problem where I was left alone with a skeleton of a project and asked to complete it to the specs written. I was given the choice to do this in either C# or Java. I was left alone for this, had a full IDE, and was allowed to use the Internet. It took a little less than an hour to do it correctly.
That was followed by 3 seperate one on one interviews with different people, 2 were about software design, and one was a sort of classic data structures/algorithms question.
At the end of the last interview, the head of recruiting came in, told me I had done well, and that I should expect a job offer in the next week or so, which I did get. He also mentioned that if I hadn't done well wouldn't have made it to the last interviewer.