I applied online via the company's careers site. Got a call in about 2 days saying that the hiring manager is interested to talk. The next day I had a telephonic discussion wherein the hiring manager asked questions about my experience and gave a very nice overview about the company. He also mentioned that I would qualify for 3 groups in the company and asked my preference. He mentioned about the interview process and answered patiently to all my questions.
This was followed by coding round wherein a problem statement is given to you and you'll have to solve the problem at your leisure and send them the solution. This was run directly by the hiring manager. Again he was very nice and asked me to take as much time as I want. The question was not of the kind where you can answer only if you know the trick. This was more of a concrete graph problem for which you will have to brush up your algorithmic skills. After I submitted my solution the very same day the hiring manager reviewed the code, gave me some minor comments. But all in all he liked what I had done and called me over to a bunch of in-person interviews.
I had a 5 hour long in-person interview where I spoke to 5 people including the hiring manager. The interviews touched upon coding skills, data-structures / algorithms, distributed systems concept and system design skills. There were a couple of places where I fumbled a little bit and on one occasion missed out on a complexity analysis question :( But all-in-all I had a very nice time interacting with the team and all the team members were very cordial and friendly. A couple of days later I heard that they had liked me and would extend the offer. The offer was reasonable and I didn't bargain.
Throughout the interview process the HR person was very helpful and gave a lot of details about the company. I thoroughly enjoyed the interview process.