I interviewed at Uber because they are an impressive company and probably a great place to work. I didn't receive and offer. I cannot say that I was surprised. I do believe there were a few things they could have done better to increase my chances as well as to treat their candidates better.
As others have mentioned, they encourage their candidates to handle a coding challenge. While this is not unreasonable, they did not set clear expectations. Specifically, if you are invited on-site, they will carefully review your submission in person. I might have performed better at the interview if I didn't have to admit so many areas for improvement in my submission. Had I been aware that my code would be part of the interview, I probably would have done a better job. This is something to be aware of because they failed to mention it prior to my submission.
Otherwise, the interviews were tough and tiring. The questions were somewhat less structured than many other companies.
The office seemed quite disorganized. I doubt it's always like that, but it did appear that I was invited at an especially hectic time, both at the office and in the neighborhood outside. I might have benefited from them inviting me at a more reasonable time. The recruiter had rushed me through the whole process. Maybe I would have been more prepared if I hadn't allowed this to happen.
Finally, they repeatedly volunteered to pay to reimburse my transportation costs and then failed to do so. It wasn't a significant amount, but it was more than I have spent anywhere else. The only reason I splurged was that, with no suggestion of my own, the recruiter volunteered to cover the costs multiple times. Of course, after I was rejected I was not reimbursed. It's an easy empty promise to make.
Interview questions [1]
Question 1
Be prepared for very general design oriented questions that require a great deal of discussion.
I applied through a recruiter. The process took 4 weeks. I interviewed at Uber (San Francisco, CA) in Aug 2013
Interview
I was contacted by a recruiter via LinkedIn who was looking for a backend developer, I informed her that wasn't my speciality but if they were looking for <insert speciality here> I'd be happy to talk to them. She passed me off to another recruiter who set me up with a call with the hiring manager.
Call with hiring manager mostly covered non-technical topics, largely about how my speciality might fit in at Uber. After that I had an onsite interview scheduled.
The onsite was a technically rigorous interview with three sessions, it reminded me of the Google style interview process. Some whiteboard coding, lots of discussions about how my speciality could fit in at Uber and a lot of sysadmin style technology questions. Everyone I met was really pleasant and very smart.
I got a call just under a week later saying that they I had done well but weren't convinced that I had demonstrated sufficient software engineering skills (outside my speciality) and asked if I could do a take home coding test. I finished the test in a handful of hours over two evenings and got it back to them. From the sounds of things the code test normally happens before the onsite interview. A few days after that I heard that they wanted to make an offer.
At this point I was also waiting for an offer from another company and told them so and asked for some time. The recruiter was happy to give me time to consider other offers and went through the offer in some detail. The offer was a good (but not amazing) salary plus stock options, the stock options were worth almost as much as the salary at the present valuation of the company (according to the recruiter).
The story takes an unexpected detour here as my other offer is delayed due to problems at the other company. The recruiter was very understanding but grew a little frustrated as the delay turned into a multiple week saga. Eventually the other company made an offer that had a similar salary component but a much larger equity component. It was a hard choice but I was more interested in the market segment of the other company so I declined Uber's offer.
Everyone I met at Uber was great and I would have been delighted to work there.
I applied online. The process took 2 weeks. I interviewed at Uber
Interview
I applied on their website and had a call with a recruiter within a week. The next day he asked me to do a coding challenge. I spent the weekend doing it and within a day of sending it to them, they said I had impressed them with my work and asked me to fly to SF for a final round. Note that I had to book my own flight and hotel and I didn't get reimbursed until two weeks later. Not a big deal but be prepared to front about $1,000 if you're coming from the east coast on such short notice.
The onsite wasn't very organized, people stepped in and out. I met with all engineers (besides a brief chat with the recruiter), in total about 8 - 10 people. I know for a fact I didn't do well on one interview. The interviewer had a very strong European accent and I also answered one of his questions wrong. He even laughed at me, which I thought was extremely rude. I did well on all the other interviews throughout the day.
A week later I got a rejection email saying that they liked my passion but didn't think I had enough Python experience. Very much a canned rejection email.
Interview questions [1]
Question 1
Pretend I am a 5 year old and explain what an NP-complete problem is.