Intro:
Exp: 7 YOE
Current Role: Backend Software Developer
Edu: Masters in IS
Round 1:
Behavioral interview by hiring manager:
- Discussion around my resume
- Most difficult project and why. Followup questions
- More behavioral question
Feedback:
- Good communication skills
- Executer
- May need more experience as a leader
Round 2:
- Design data structure to get/insert/delete an element. It should also support DeleteRandom method. All the methods should be O(1)
- Followup - edge cases and multithreading
Feedback:
- your best interview
- came up with the optimal algo quickly
- clean code
- Candidate may require more exp for L5 position
Round 3:
System design - Design chat application. It should have a feature that the user can see the status of the sent message.
Feedback:
- Candidates reasoning for data model design wasn't convincing (SQL vs No SQL). <------
My take:
- I agree with the feedback. I think my estimates were little off initially. I discussed the pros and cons of different approaches and which databases to use(NoSQL vs SQL). I proposed using NoSQL and gave the reasoning that they are easier to scale. But given the estimates, this reason wasn't strong enough to use NoSQL.
Learnings:
- Needed more practice with the estimates while designing the data model.
- I was following a template but somehow it didn't feel structured enough. Need more practice
Round 4:
Coding round. Have to code and run on the computer.
Q: Given a partially sorted array, find min range (i and j) such that sorting the array from i to j will sort the entire array.
Feedback:
- candidate took too much time to come up with the algo and start the coding. Had to give hints <-------
- clean code and good debugging skills
My take:
I haven't seen or practiced a similar question before. I started with the brute force approach on the paper and then worked my way up to the optimal solution using the hints interviews gave. This took almost 25 mins. I was able to implement and fix bugs in the algo in the remaining 10 mins. In the end, we were out of time and I couldn't run my algo to test all the test cases.
Learning:
More practice.
Overall, I had a great experience interviewing with Uber. The interviewers were nice and so was the recruiters. I have given many onsite interviews but this is the first time when I got such detailed feedback. Hope other companies follow this suit.
Any suggestion or feedback is welcomed :)
Onto next interview!
Thanks