I was referred by an employee and contacted by their recruiter. My recruiter was one of the nicest people I have had the opportunity to work with. The entire process was so smooth and handled exceptionally well.
I was first contacted via email to setup an phone interview to discuss my likes and interests so the recruiter could decide which teams to forward my resume to. After this, I had 2 phone screens. There was an NDA about the questions but they are very straight forward and there were no ultra-difficult questions. All questions were simple discussions of algorithms and data structures. Make sure you know your basics extremely well. I mean extremely ! other than that, you're fine.
After these 2 interviews, I was asked to schedule a 5 hour back to back skype interview session. All the interviewers were extremely nice and the interviewing was great fun. Then ensured you were comfortable and allowed you to be creative and efficient. I was asked several questions about algorithms, data-structures and design. Make sure you know the basics of OOP design and you're comfortable deconstructing a problem to design a good solution.
After 4 interviews, my brain refused to work in the last one and I was unable to answer a very simple data structure question. Even my interviewer recognized I was probably tired after all the interviews and very patiently tried to help me out. In the end I was able to barely come up with the solution. After this, I was asked to take up one more skype interview and this one went very well.
I was contacted after about a week by the recruiter and they made an offer.