Uber Software Engineer Interview Guide
The role of an Uber Software Engineer
Uber is an American technology company that provides services such as ride-hailing, food delivery (Uber Eats), delivery, couriers, freight transportation, and electric bicycle and motorized scooter rental. The company is based in San Francisco and has operations in over 900 metropolitan areas worldwide. It is one of the largest firms in the gig economy.
As the company grows and expands into new verticals such as food delivery services, electric bicycles and motorized scooter rental services, it needs software engineers who can use their technical finesse to enhance the user experience for Uber's customers.
Role and responsibility
- Work to create products and services to improve the customer experience for riders, drivers, eaters, restaurants and business owners and cities alike.
- Closely collaborate with product, design and business teams to understand product ideas and business needs and help deliver these as a series of fast experiments. Explore similar aspects in the Flexport Software Engineer and Intuit Software Engineer guides.
- Implement native user interfaces with the latest technologies.
- Drive adoption of best practices in code health, testing, and maintainability.
- Play an active role in the team's technical design choices, code reviews and documentation.
- Coach and mentor junior or new engineers joining the mobility team.
Skills/qualifications required
- Bachelor's degree in Computer Science or related fields.
- Demonstrated software engineering experience through previous internships, work experience, coding competitions, and/or publications.
- Programming experience in one or more application or systems languages (Go, Python, Ruby, Java, C/C++, etc).
- A commitment to writing understandable, maintainable, and reusable software.
- Willingness to learn new languages and methodologies.
- The capacity to work independently and execute with minimal oversight.
- An innate desire to deliver and a strong sense of accountability for your work.
- Strong coding abilities: You have advanced knowledge of at least one programming language and OOP patterns. You've used programming tools (e. g. version control) and already have a couple of full-stack projects under your belt.
- Ownership: Uber wants you to own the code you write, every bit of it. Know clearly where it works, and where it breaks. Proactively exhibit an improvement plan and passion to drive it forward.
- Design and business insight: You understand requirements beyond the written word. Whether you're working on an API used by other developers, an internal tool consumed by our operation teams, or a feature used by millions of customers, your attention to detail leads to a delightful user experience.
- A standout colleague: You believe that you can achieve more when you work in a team - that the whole is greater than the sum of its parts. You rely on others' candid feedback for continuous improvement.
Uber Software Engineer salary
- Entry-level salary: USD 130,000
- Senior positions: USD 350,000.
- Median salary: USD 243,000 with the base component being USD 175,000, stock component being USD 50,000, and bonus being USD 18,000.
Uber Software Engineer Interview Guide
The Uber Software Engineer interview is a 3-stage process, comprising the phone screen, technical screen, and the onsite round.
Phone Screen
Overview
The Phone screen is a 45-minute telephonic interview with the recruiter. Here, the recruiter asks questions related to your CV and work experience, if any. The basic aim of this exercise is to test the candidate's motivation for the role and to know if he/she meets the experiential and cultural fit for the role and the company. Candidates who are fresh out of college should be thorough with their CV, and any projects or internships they might have done while at college.
Interview Questions
Most asked interview questions in the Phone Screen.
- Why do you want to pursue a career in software engineering?
- Why Uber?
Technical Screen
Overview
The technical screen is a one-hour interview with the hiring manager and an Uber software engineer. This round is aimed at assessing your technical skills in the following areas:
- Coding Aptitude
- Systems Design
- Algorithms and Data Structures
Coding Aptitude
The coding aptitude section of the technical screen will feature questions that test the general programming abilities of the candidate. The focus will primarily be on object-oriented programming. Students need to be proficient in at least one of the programming languages among C++, Java, and Python. Candidates who are good at all these programming languages will be in a better position as compared to other candidates. Candidates are asked 2-3 questions that need to be attempted through an online shared code editor.
Most commonly asked Coding questions in the Technical screen:
- Given an array of integers, return a new array such that each element at index i of the new array is the product of all the numbers in the original array except the one at i.
- Given a sorted array a[ ] and a number p, write a function that counts the occurrences of p in a[ ].
- Write a code to add an element in the middle of a linked list.
- Can you write a function to convert a sorted list into a binary search tree?
System Design
Systems design is the process of defining the architecture, product design, modules, interfaces, and data for a system to satisfy specified requirements. Companies such as Uber need candidates with good system design abilities to help them solve real problems that they might be facing through the tangible application of knowledge.
Most commonly asked System Design questions
- Explain the design elements of a search engine.
- Tell us your approach to designing a web crawler. When should it be used?
- Design a recommendation system?
- How would you design a garbage collection system?
- Tell me how you would design a chat application like Whatsapp or Facebook messenger?
Algorithm and data structures
Data structure is a fundamental concept of any programming language, essential for algorithmic design. It is used for the efficient organization and modification of data.
Most commonly asked algorithm and data structures questions
- What is the requirement for an object to be used as a key or value in HashMap?
- Given an integer n, write a function to compute the nth Fibonacci number.
- Write an algorithm to remove duplicates from a given array in Java?
- Write an algorithm to find all pairs of an integer array whose sum is equal to a given number?
Want to practice more such questions with an Uber Software Engineer?
→ Book now!Onsite Round
Overview
The onsite round is an extended version of the phone screen. It is conducted at one of Uber's campuses and consists of 5-6 interviews covering various sections like:
- Data structures and algorithm
- Database management
- System design
- Coding aptitude
- Behavioural aptitude
Each of the 5-6 interviews in the onsite round is 1-hour long. Questions in the onsite round are more in-depth as compared to the technical screen. In addition to the 4 interview topics covered in the technical screen, the onsite round features an additional interview on behavioural aptitude.
Check out the Instacart Software Engineer and Amazon Software Engineer guides for more examples.
Data structures and algorithm
The questions here will involve the application of data structures concepts, such as arrays, linked list, stack, queue etc to write algorithms.
Most commonly asked Data Structures and Algorithm question in the onsite round
- Write an algorithm to find the sum of two linked lists using Stack.
- Write an algorithm to print all nodes of a given binary tree using inorder traversal without recursion.
- Write an algorithm to swap two numbers without using the third variable.
Database Management
Database management refers to the process of manipulation and control of data by companies to meet necessary conditions throughout the entire data lifecycle of a project or software system. Uber focuses on assessing a candidate's database management skills, especially their SQL abilities.
Most commonly asked database management questions in the onsite round
- Describe BLOB in MySQL. What is it used for?
- State the difference between VARCHAR and CHAR. Give examples of cases where you would prefer using one over the other.
- Differentiate between Data Definition Language (DDL) and Data Manipulation Language (DML).
- In MySQL, where are FEDERATED tables used?
System Design
In the course of their role of building software and systems, software engineers often run into tasks that involve system design.
Here are the most commonly asked System Design questions in the Onsite Round
- Are you aware of URL Shorteners? How would you design a URL Shortening service like goo.gl or bit.ly?
- Design the front end of an online cupcake selling company.
- Suggest 3 changes to Uber's front end design. How would these changes be useful?
- Design an audio streaming service.
Coding Aptitude
Coding is one of the most fundamental skills that software engineers are expected to be good at. Uber expects candidates to be proficient in any or all of Go, Python, Ruby, Java, and C/C++ programming languages.
Candidates will face 2-3 coding questions in the allotted one hour of the coding interview.
Most commonly asked Coding questions in the onsite round
- You are given a string. Write a function to find all non-single letter substrings that are palindromes.
- Suppose you are given a positive integer, x. Write a code to print all possible combinations of positive integers that add to the number x.
- Write a code to search for a given number in a sorted array, with unique elements, that has been rotated by some arbitrary number. Assume that the array does not have duplicates. Return null if the given number does not exist in the sorted array.
Behavioural
The Behavioural interview will consist of questions to assess behavioural aspects of your personality. You may be asked situational questions as to how you tackled a particular question. Interviewers may also be interested in knowing what drives you to become a software engineer, or what is your motivation for choosing Uber.
The important thing to keep in mind in behavioural interviews is to speak your mind and be honest in your replies. There is always a possibility of back and forth between you and the interviewers over a question or an answer, so be ready for that.
Most commonly asked questions in the Behavioral section
- Why Uber?
- Why software engineering?
- Where do you see yourself 10 years down the line?
Tips
- Follow the "Think out loud" approach to let the interviewers know your approach to the answer, and avoid rushing to answer.
- Do not hesitate to ask clarifying questions.
Ace the onsite round by practicing with an Uber Software Engineer!
→ Book now!With the above pointers, we are sure you would do well in your Uber Software Engineer interview.
Thanks for reading.
All the best!