I initially applied through a headhunter. The process began with an HR interview, which mostly asked about my background and why I was interested in applying. The HR interview was followed by a timed coding test that, if I recall correctly, had a 2 hour time limit. The test can be taken in Java, C++, and another language that I'm not remembering; it wasn't particularly difficult, and I didn't need the two full hours to complete the two problems.
The next step was a full day of technical interviews. I met with seven or eight people from different teams over the course of the day, and all of the interviews were technical. I mostly solved problems by writing on paper, but later in the day I wrote code on a computer as well. The day ended with a meeting with HR, who outlined the offer process.
Next was a series of phone calls with different team members in order to help me make a choice between the two teams I was being considered for. Once I chose a team, the formal offer was extended.