Applied online and was contacted by a recruiter the next day. I went through two technical phone interviews, each with a pair of engineers. The questions were fairly straight-forward. Some implementation questions, software architecture, and algorithm design.
After going through the first two interviews, I was informed by the recruiter that they wanted me to speak with a manager (it was not explicitly a technical). I then had a third phone interview scheduled with the recruiter. Over the course of the next week, the recruiter changed the time and manager on me five times before settling down on a date and person. By the time the third interview rolled around, I got called by a manager who wasn't the one I was scheduled to talk to. This manager seemed unprepared and was unaware of the position I wanted to take at the company (mobile development, more geared towards UI). This manager completely dismissed my design work and delved straight into a machine learning question (i never stated i had experience in this field). I was asked a few questions about how to improve an aspect of the Uber service. I responded with some naive answers about device-device communications, to which he shot down immediately and went deep into a machine learning topic.
The next day I was informed they would pick a different candidate.