Uber | SDE 2 | Bangalore | July 2024 [Offer]

uber logo
uber
SDE 2bangalore3 yearsOffer
August 18, 20240 reads

Summary

I recently interviewed at Uber for an SDE 2 role in Bangalore and successfully received an offer after a comprehensive process that included an OA, a technical phone screen, and four onsite rounds focusing on DSA, LLD, HLD, and behavioral aspects.

Full Experience

Online Assessment

My interview process began with an Online Assessment, which consisted of three questions, all ranging from LeetCode Easy to Medium difficulty. I successfully solved all of them with all test cases passing.

Technical Phone Screen

Following the OA, I moved to a Technical Phone Screen. The question was to find the minimum absolute difference between any two elements within every K-sized rolling window of a given N-sized array. I managed to implement a working solution with O(NKlogK) time complexity. However, the interviewer expected a more optimal O(NlogK) solution. The idea behind this optimal approach involves a one-time construction of a K-sized sorted set for the first window and a K-1 sized sorted set of differences, which takes O(KlogK). Subsequent window operations (removal, addition, and minimum difference computation) can then be performed in O(logK) each, leading to the overall O(NlogK) complexity. Although I couldn't implement or clearly discuss the optimal solution, I surprisingly still received an onsite interview call.

Onsite DSA

The onsite DSA round had two questions. The first was to construct an N-sized array containing elements from 0 to N-1, given K subsequences of that array. A follow-up asked to return the 'lowest' value solution in case of multiple valid arrays. I was able to solve both the question and the follow-up with optimal time complexity, using topological sort for the first part and a minor modification to the DFS for the second part to ensure descending order traversal. The second question was a string manipulation problem, similar to one found in this post. I implemented a working solution. We discussed that a Trie might be overkill given the limited element set, and the interviewer agreed, so a simple hash-map based approach sufficed.

LLD

For the Low-Level Design round, I was asked to design a well-defined logging library API with get and set methods, where data was expected to be handled in memory. I first implemented a functionally complete solution, incorporating appropriate design patterns like singleton and fluent interfaces. We then discussed and partially implemented improvements, including concurrency handling with locking and time complexity optimization. I encountered some strange compilation issues while working on the optimization, preventing me from fully completing all discussed requirements, but there were no major gaps.

HLD

The High-Level Design round involved a problem statement that the interviewer copy-pasted, rather than verbally discussing. While I don't recall the exact problem statement, it was well-defined, which made the interview more straightforward than usual HLD rounds.

Hiring Manager

Finally, the Hiring Manager round consisted of several behavioral questions and cross-questioning, with a significant focus on my experience managing multiple stakeholders.

Notes

Overall, the interviews were comprehensive and covered standard topics. I found that the most challenging part of the process was getting the initial call from the recruiter, which required personal referrals and patience.

Interview Questions (3)

Q1
Min Absolute Difference in Rolling Window
Data Structures & Algorithms

Given a size N array, for every K sized rolling window in the array, find the minimum absolute difference between any two elements in the K sized window.

Q2
Construct Array from Subsequences with Lowest Lexicographical Order
Data Structures & Algorithms

Construct an N sized array consisting of elements from 0 to N - 1 given K subsequences of that array. It can be assumed that at least one valid answer always exists. Follow-up: In case of multiple valid solutions, return the one that corresponds to the "lowest" value. (i.e. [0, 1, 2, 3] is lower than [0, 2, 1, 3])

Q3
Logging Library API Design
System Design

Design a well-defined logging library API with get and set methods, where data is expected to be handled in memory.

Preparation Tips

I regularly used LeetCode for DSA. For the LLD interview, I read up about design patterns and multithreading. For HLD, I watched videos from the System Design Interview YouTube channel and read a few case studies from Alex Xu's books. Reviewing existing Uber interview experiences was also helpful for fine-tuning my preparation before each round.

Discussion (0)

Share your thoughts and ask questions

Join the Discussion

Sign in with Google to share your thoughts and ask questions

No comments yet

Be the first to share your thoughts and start the discussion!