Uber 2019 new grad面经

2020 University Graduate: Software Engineer

Applied: 6th September 2019

Reply back for phone screen: 18th September 2019

Phone screen: 30th Septemeber 2019. Alloted 45 min. Completed in 30 min.

Phone screen:

Interviewer talked about his role, I talked about mine (I have one year of experience as a SWE in India and working as a DevOps intern since May 2019 in USA). I chose Python3 and python interpreter was available to test the code (unlike Facebook phone screen which only lets you write code and you pray that the code works afterwards).

The question seemed LC medium or easy. A list of transactions is given, the transaction is of following format: {“PayerBank”: PayerBankName, “PayeeBank”: PayeeBankName, “Amount”: Amount}. The target is to find final transactions to be carried out between a pair of bank. Something like Clearance House . The ordering between the pair doesn’t matter, but the pair should occur only once. I was able to come up with O(n) time and O(n) space solution using hashtables, where key is (bank1, bank2) and value is amount.

The interviewer seemed highly convinced with my solution and asked if I had some questions. I asked about Uber’s role in open source contribution. (eng.uber.com)

Phone screen positive reply: 1st October 2019

Onsite interview date: 25th October 2019. San Francisco.

Onsite:

First Interview, Technical, 9AM, Interesting and Challenging, White Board, In-person:
Introduction by both parties. He was working in Uber Transit. He asked me if I wanted to be in Dev or DevOps. I said Dev due to interest in products directly impacting customers.

Number of Islands questions. Solved using BFS.

He then asked to suggest solution for finding number of unique islands. For eg, two islands with C and C shape are same so the second one shouldn’t be counted. I suggested considering the start point of BFS as (0, 0) location and traversing relative to this position. The traversal co-ordinates would be saved as a list and future traversals would be ignored if such path is already taken. He seemed impressed by simplicity of solution.

He threw another variant of above. Find rotationally uniquely shaped islands. For eg, two islands with C shape and U shape are same, thus U shape is ignored. He said not to care about time complexity. I said we can take similar approach as above and store the rotations of the traversal. Thus, when saving C shape, reverse-C, U, reverse-U are also saved. Thus a future U shape is ignored. He seemed fully impressed. He asked me to find out time complexity (O(len(longest_island)) of initial problem. I felt a bit stuck but he helped me out through hints.

He talked about his team and an interesting project. This was one of the most comfortable interviews I ever had since the interviewer was very helpful and friendly.

Second Interview, Technical, 10AM, Curve Ball, Hackerrank Platform, Zoom call:

Introduction by both parties. I couldn’t clearly understand the question till end so I won’t confuse readers with it. But the interviewer could understand that his question was not very straightforward and he was iterating on it at every step of conversation. It felt more like a conversational technical interview. The key here was to ask questions. I think I might have asked him atleast 50 questions throughout the interview. But the interviewer was patient and helped me with each line of code. He seemed happy with my communication skills. I generally talk through each line of code and explain why I am writing that line. I also state that “this line might change later” in case I am not sure about my logic. I did the same for my phone screen. Conversation ended with team related questions. He was on some GPS related ML team.

Third Interview, Technical, 11AM, Interesting and Challenging, Hackerrank Platform, In-person:

Introduction by both parties. The interviewer was from some Android App related team. It felt bit like a system design question. You guys must be familiar with excel sheets. There is a class given with four methods: get, set, link, unlink. In get function, given x and y value, get the value in (x, y) cell. In set function, given x, y and value, set value in (x, y) cell. In link function, given cell co-ordinates A and B, link cell A to cell B such that whenever cell B is given value m, cell A also has value m. In unlink, this link between A and B is removed. If you observe closely, this creates a graph. I was also able to point out that cycles could exist. I suggested BFS with visited flags in order not to go in infinite loop. He seemed happy. I couldn’t test the code completely but he said if I am given 5 more min I will debug it.

The interesting part here was I was asked such a question related where BFS was the hidden solution (related to users and group of users, group containing group, if you guys have heard about Active Directory). I couldn’t find it then but I could now with edge cases, so practice and exp is the key.

Final Interview, Behavioral, 12 Noon, Intimidating, Zoom call:

The interviewer seemed to be from one of the senior positions and was very particular about my responses. For eg, when I said I want to be part of a fast moving team, he asked me to define fast moving. I somehow felt less confident after this round and believed that if I get a reject it would be because of this round. However, it gave me an experience which I would have not got so easily.

I roamed around at Golden Gate after my interviews since my flight was at 10PM, that somehow lowered my anxiety and made me feel confident about the result.

Result Date: 7th November 2019. Offer :slight_smile:

Uber was an important company for me since I bombed FB phone screen. I am glad I made it through. I wish best of luck to all the job seekers out there :slight_smile:

Open to questions.