I submit my application online and was e-mailed a few months later to set up a phone interview. The phone interview covered basic questions like talking about my education, some of my past experience with programming, why I was leaving my previous employer, etc. They gave me a chance to ask questions about the company, the position, etc. It was friendly and easy going.
Then I was given a technical project to do - I was given an outline of the project criteria and was given a week to complete it. They were also very flexible about the time frame (i.e. I was told that if I needed more time I could just let them know).
After the technical project I had a technical phone-interview, where we went over my project and they asked me specific questions about the way I wrote my code.
After the technical interview I was invited for an in-person cultural interview, which was designed to see if I'd be a good fit with the team.I was asked a few technical questions at this point, but they were broad, and it was mostly questions on how I interact with managers, co-workers, etc.
It was a thorough interview process, but overall I enjoyed it!