Uber Interview Questions (12+ Questions)

Last Updated: June 8, 2026 β€’ 12 Questions β€’ Real Company Interviews

Prepare for your Uber interview with our comprehensive collection of 12+ real interview questions and detailed answers. These questions have been curated from actual Uber technical interviews across various roles including DevOps Engineer, Data Engineer, QA Engineer, and more.

12
Interview Questions
1
Categories
3
Difficulty Levels

Table of Contents

Our Uber interview questions cover a wide range of technical topics and difficulty levels, from entry-level positions to senior roles. Each question includes detailed explanations and answers to help you understand the concepts and prepare effectively for your interview.

πŸ’‘ Pro Tips for Uber Interviews

  • Practice each question and understand the underlying concepts
  • Review Uber's specific technologies and methodologies
  • Prepare follow-up questions and edge cases
  • Practice explaining your solutions clearly and concisely

Interview Questions & Answers

1. Macvlan Network Configuration Fix

Company: Uber Difficulty: hard Categories: Devops

Solve macvlan network limitations where containers cannot reach the host or gateway. Create host-side macvlan interfaces, configure IP addresses in the same subnet, add routing rules, and enable bidirectional communication between containers and physical network. Essential for advanced networking, bare-metal deployments, legacy network integration, and scenarios requiring containers with distinct MAC addresses on physical networks.

2. Count User Events from JSON Activity Logs

Company: Uber Difficulty: easy Categories: Devops, Data analysis, Data engineering, Quality assurance

Parse JSON activity logs to count events per user and generate an aggregated report using Python dictionary operations.

3. Course Schedule

Company: Uber Difficulty: medium Categories: Devops, Data engineering

def can_finish(num_courses: int, prerequisites: list[list[int]]) -> bool:
adj = {i: [] for i in range(num_courses)}
indegree = {i: 0 for i in range(num_courses)}

for crs, pre in prerequisites:
    adj[pre].append(crs)
    indegree[crs] += 1
    
q = deque()
for i in range(num_courses):
    if indegree[i] == 0:
        q.append(i)
        
completed_courses = 0

while q:
    curr = q.popleft()
    completed_courses += 1
    
    for neighbor in adj[curr]:
        indegree[neighbor] -= 1
        if indegree[neighbor] == 0:
            q.append(neighbor)
            
return completed_courses == num_courses

4. Calculate Cumulative Sales

Company: Uber Difficulty: medium Categories: Data analysis, Data engineering

Example of How to Answer the Interview Question

The given scenario involves working with sales data from a sales_records table, comprising details such as sale dates, product names, and units sold. The task is to craft an SQL query that will yield each record alongside a new column named total_units_sold, which indicates the cumulative number of units sold for each product up to and including the current sale date. The final results should be ordered by the product name and the sale date. Below is a detailed, SEO-friendly explanation of how to handle this interview question:

SQL Solution

To tackle this task, you can utilize the SQL Window Functions, especially the SUM() function combined with the PARTITION BY clause to calculate running totals. The query will leverage window functions to maintain the total units sold for each product chronologically up to the given date.

Here's the SQL query for this solution:

SELECT
    sale_date,
    item_name,
    units_sold,
    SUM(units_sold) OVER (PARTITION BY item_name ORDER BY sale_date) AS total_units_sold
FROM
    sales_records
ORDER BY
    item_name,
    sale_date;

Explanation

  • SELECT Clause: We choose the relevant columns sale_date, item_name, units_sold, and generate a new column total_units_sold.
  • SUM() Function with OVER Clause: The SUM(units_sold) OVER (PARTITION BY item_name ORDER BY sale_date) computes the cumulative sum of units sold for each product (item_name), ordered by the sale date (sale_date).
  • Result Ordering: ORDER BY item_name, sale_date ensures the output is first ordered by the product name and subsequently by the sale date for each product.

By structuring the SQL query in this manner, you ensure that the running total for each product is correctly calculated and effortlessly retrieve the desired data layout.

Implementation Context

This query will be effective in scenarios such as generating daily sales reports, monitoring product performance over time, or analyzing sales trends. It can be adapted to various relational database management systems (RDBMS) like PostgreSQL, MySQL, SQL Server, and Oracle, making it versatile for different SQL environments.

Relevance to SEO

By explaining the SQL solution in a clear and detailed manner, this content becomes highly relevant and useful for individuals searching for information on SQL interview questions related to cumulative totals and window functions. It provides a practical, step-by-step approach that is likely to rank well in search engine results for queries like "SQL running total query," "SQL cumulative sum example," and "SQL window functions interview question."

Final Thoughts

Providing a detailed yet concise solution to SQL interview questions can help demonstrate proficiency in SQL and understanding of advanced functions. When crafting SQL solutions, always consider the readability and efficiency of your queries to ensure they perform well even with larger datasets.

5. Airport Name Lengths

Company: Uber Difficulty: medium Categories: Data analysis, Data engineering

WITH joined AS (
SELECT
f.flight_id,
LENGTH(TRIM(orig.airport_name)) AS origin_airport_name_length,
LENGTH(TRIM(dest.airport_name)) AS destination_airport_name_length,
LENGTH(TRIM(pl.plane_model)) AS plane_model_length
FROM {{ ref("flights") }} f
LEFT JOIN {{ ref("airports") }} orig
ON f.origin_airport = orig.airport_id
LEFT JOIN {{ ref("airports") }} dest
ON f.destination_airport = dest.airport_id
LEFT JOIN {{ ref("planes") }} pl
ON f.flight_id = pl.plane_id
)
SELECT * FROM joined

6. Government Budgeting Variance

Company: Uber Difficulty: hard Categories: Data analysis, Data engineering

Practice statistical aggregations in PySpark. Learn how to perform multi-key inner joins and calculate the sample variance of budgetary data across federal departments.

7. Analyzing Pharmaceutical Equipment Maintenance

Company: Uber Difficulty: hard Categories: Data analysis, Data engineering

Master complex window functions in PySpark. Learn how to combine dense_rank with row_number to rank maintenance costs and extract the most recent service records for pharmaceutical equipment.

8. Multi-Channel Sales Integration

Company: Uber Difficulty: medium πŸ”’ Premium Categories: Data engineering

Objective

Combine sales data from three different sales channels (online, store, and mobile) and aggregate it to generate a comprehensive report. The report should list each product's name, total sales amount, number of transactions, and the channels through which the product was sold. The resu...


πŸ”’ Premium Content

Detailed explanation and solution available for premium members.

Upgrade to Premium β†’

9. Customer Region Switch Tracker

Company: Uber Difficulty: easy πŸ”’ Premium Categories: Data engineering

How to Track Customer Region Changes Over Time with SQL

Objective

Track the changes in customer regions over time using a detailed SQL query. Identify customers who have moved from one region to another, and list the old region, new region, and the date of the change for each customer.

...


πŸ”’ Premium Content

Detailed explanation and solution available for premium members.

Upgrade to Premium β†’

10. User Transaction Milestone

Company: Uber Difficulty: medium Categories: Data engineering

SELECT
user_id,
spend,
transaction_date
FROM
(
SELECT
user_id,
spend,
transaction_date,
ROW_NUMBER() OVER (
PARTITION BY
user_id
ORDER BY
transaction_date ASC
) AS transaction_rank
FROM
transactions
) AS ranked_transactions
WHERE
transaction_rank = 3;

11. Meeting Rooms

Company: Uber Difficulty: easy Categories: Data engineering

def can_attend_meetings(intervals: list[list[int]]) -> bool:
intervals.sort(key=lambda x: x[0])

for i in range(1, len(intervals)):
    if intervals[i][0] < intervals[i-1][1]:
        return False
        
return True

12. Link Extraction Testing

Company: Uber Difficulty: easy πŸ”’ Premium Categories: Quality assurance

Master link extraction testing with Selenium. Learn basic link finding and attribute extraction for beginners....


πŸ”’ Premium Content

Detailed explanation and solution available for premium members.

Upgrade to Premium β†’


Ready to Practice More?

Explore interview questions from other companies or try our hands-on labs to build practical experience.