I interviewed a few months ago for a full time software engineer position at Uber. I got the interview opportunity through friend referral.
I was first scheduled for one round of phone screening that was given by an engineering manager of Uber. Was asked about my technical background, my work, as well as two coding problems. It went very well and I was invited for onsite interview one hour after the phone call.
The onsite interview occurred 2 weeks later and last about 4.5 hours. 4 people challenged me with many technical questions such as whiteboard coding and system design questions. Every one was pretty friendly and walked in quite on time so there was not much break time in between. Last technical interview was a practical one - I was asked to solve a real world problem and implemented it subsequently. Before the actual coding work, interviewer had a thorough discussion with me on details of all levels to make sure it was a reasonable solution that could be done in a matter of minutes. The problem wasn't super hard and the solution could be suboptimal but you need to make it work. Therefore you better be a hands-on engineer at work and write real code in an efficient way (editor choice, API lookup, debugging skills, etc). For myself I use Vim everyday and that helped me a lot. Following the 4th round of technical interview I also got the chance to talk to recruiter and hiring manager for various questions and concerns, which they addressed very well.
I got an offer next day after the onsite interview which after some negotiation I happily accepted. One thing I'd like to point out is that I was blown away by the company's efficiency during the whole hiring process. The hiring manager and a few recruiters I worked with always responded very promptly within a few minutes. BTW I live in South bay and the commuting to/from San Francisco was of course covered using Uber, making the interview experience even more pleasant:)