I was referred by a current employee and was contacted by a recruiter the next day. We set up a phone call for the following week. The recruiter had a lot of information about the company and what each team was working on. She helped me narrow down exactly what position and team would be right for me.
After our call, there was another person in charge of scheduling who helped set up a technical phone screen for the following week. The call was done via Skype and CoderPad. I was told ahead of time who the interviewer would be (an Android engineer on the team I was interviewing with). After going over my background and experience a bit, he asked several technical but non-coding questions, both general programming and Android-specific. We then moved on to a coding question (listed below). After that, I was given time to ask him questions even though we had gone way over time already (not really due to the coding question, we didn't even start that until we had only 5 mins left of the 1 hour the interview was supposed to take). The entire interview was very much a conversation rather than him just drilling me for answers, which was great but probably why we went so far over time!
I was then invited for an onsite interview, which was scheduled for the following week. The onsite consisted of 5 1-hour interviews, an hour for lunch, and a quick chat at the end of the day with the same recruiter I had my first phone call with. I was again told ahead of time who the interviewers would be (except for lunch, where I was just told that I would be eating with a few people - engineers and non-engineers - from the team I was interviewing with). I was also told the format of each interview:
* non-technical culture and behavioral questions on my background and experience, with a manager on the team I was interviewing with
* coding and algorithm questions in whatever language I felt most comfortable with, on whiteboard or (provided) laptop, with a server engineer on the team I was interviewing with
* Android/mobile design (open-ended, talk about trade-offs of different approaches) with an Android engineer on the team I was interviewing with
* Android debugging, where I was given an Android Studio project with bugs to fix, with an Android engineer on a different team
* Android programming, where I was given a skeleton app in Android Studio and asked to call a REST API and display the results in a list, with an Android engineer on the team I was interviewing with
Everyone I interviewed with was friendly and engaged. I was given time with each of them to ask questions. We stuck to the schedule pretty well for the most part, until the 2nd-to-last interview (coding & algorithms) where we slipped about 10 mins, and then the last interview (Android programming) where we slipped another 10 mins.
I talked for about 15 mins at the end with the recruiter about how I felt the day had gone and about when/how I could expect a decision. My interview was on a Thursday and she said they would be meeting the next day to go over how it went with all my interviewers and to make a decision. She emailed me on Monday to set up a phone call to tell me their decision and go over feedback. Since we weren't able to schedule the call until the following Wednesday, I wish they would have at least told me the decision up front. But I did really appreciate that they were willing to give me some detailed feedback. Ultimately, the entire interview process was very well-organized, and my recruiter and scheduler were both very prompt and helpful.