I was given a 30-minute phone interview during which I answered most of the questions (I missed one or two).
Two days later, I received an email requesting me to complete a "homework assignment" within seven days. I completed and submitted it on the fifth day (taking my time), and was notified the next morning that I had been invited to their office for interviews.
I was offered Uber credits to get me to and from the location, but I did not manage to use them successfully as I was unfamiliar with the product before the interviews took place. I arrived at 11 a.m. and had four hour-long interviews with engineers from various teams, including one who is now my manager.
Two interviewers merely wanted to get to know me and gain a sense of my experience, seeing if I was a fit for their team. These interviews were mutual conversations where their experiences sold me on whether or not I wanted to work there.
The other two interviews were largely conversational, but each included one technical question. After some back-and-forth work, I managed to solve both problems reasonably and left the interviews feeling confident.
I was told the next day that I would be made an offer based on my experience (but the offer had not yet been extended). Unfortunately, I was then informed that upper-level management felt my interviews had not been technical enough, and I had to have one more technical interview (ugh!).
Two days later, I traveled to their office again and had my final interview, where I was asked the question below about defining, storing, and retrieving structs.
Ultimately, I had a good experience where it paid to know my domain thoroughly. Uber ATG's interview process was formal but had an informal, personal feeling to it, only marred by some disorganization that I am now trying to help them resolve for future interviewees.
Whiteboard question, written in C:
You have a homogeneous fixed-size data structure ("arena") to house structs that should do X (vague description).
Define the struct.
Define a function that stores it in the arena.
Define a function that retrieves it from the arena.
The following metrics were computed from 16 interview experiences for the Uber Software Engineer role in Pittsburgh, Pennsylvania.
Uber's interview process for their Software Engineer roles in Pittsburgh, Pennsylvania is fairly selective, failing a large portion of engineers who go through it.
Candidates reported having very good feelings for Uber's Software Engineer interview process in Pittsburgh, Pennsylvania.