As I was living in a different city at the time, the interview process was conducted via phone. It started with a quick chat with the recruiter who asked some basic questions, followed by a programming assignment that I had a week to complete.
The next phase of the process was a group interview session and a 1 hour programming test. There were 10 questions of varying difficulty and after completing the test we discussed the questions in detail. After that we discussed the project I'd be working on and what type of role I'd have, as well as some general "team-fit" type questions.
The final stage of the process was again with the recruiter, who laid out the details of the job offer. I was happy with the offer and accepted it. The company paid for my move and I started about 2-3 weeks later.