Phone interview of about 20 minutes with recruiter to know the reason why I applied, my expected salary range and when I would be available. I answered I'd give three weeks notice to my current employer.
Interview on site with recruiter, team lead and director. Technical and non-technical questions. Their intention was to know my personnality, my strengths and weaknesses, how I would fit in the team. They kindly answered my questions, really honest answers. Interview lasted about one hour. They said I'd get an technical interview online that I'd be able to answer from home, needed to plan for 100 minutes.
Got the technical questions, took about 120 minutes to complete at my own pace. Very broad range of subjects as it was intended for a generalist programmer.
A phone about one week after the technical questions to plan for a small phone interview. This interview was with recruiter, two team leads and the director and they wanted to know more about my long term goals, had questions about my personal career path up to that point.
Got a phone call 3-4 days after the last phone interview, saying they wanted to give me an offer but needed to verify some professional references before, which I gave them the next day.
The verification of references took about one week and I got an offer.