← Back to blog Uber OA Beginner Guide: Four Practice Problems and Full Platform Walkthrough
Uber

Uber OA Beginner Guide: Four Practice Problems and Full Platform Walkthrough

2026-06-02

If this is your first time preparing for Uber's Online Assessment, the first wall is rarely difficulty - it is not knowing what the platform looks like, how to allocate time, or what counts as "normal" question quality. Uber's OA sits around LeetCode Medium, leaning slightly easier, but Uber sends OAs to SDE, Data Engineer, and Data Scientist tracks in the same window, so prepping the wrong topics burns half your time.

This is the site's first beginner-level guide for Uber OA. We start with platform, time, and scoring fundamentals, then ship four fully practice-ready problems (not the existing real-question debriefs already on the site) covering prefix sums, binary tree reconstruction, union-find, and DP. By the end you should be able to drop into a 90-minute mock immediately.

Uber OA at a Glance: Platform, Length, Format

Field Detail
Platform HackerRank (most batches), occasional CodeSignal
Length 90 min (SDE) / 75 min (DS, DE)
Question count 2-3 coding + occasional 5-10 MCQ
Languages Python / Java / C++ / Go are mainstream
Scoring score = AC test cases / total cases; complexity matters for hidden cases

The most important rule: HackerRank's "Run" only executes the visible samples. Passing samples is not the same as passing submission. Always wait until "Submit" returns the full hidden test result.

Mindset: What Counts as "Good Enough"?

Self-assessment Beginner Pass-bar Strong
LeetCode Medium AC speed 30-40 min 20-25 min 12-15 min
Data structures fluent <3 5-6 8+
Edge case awareness usually forgets adds afterward lists upfront
Platform IO fluency improvises can write templated

Conclusion: pass-bar is enough to clear Uber OA. You do not need to grind to first-blood Hard speed.

Practice 1: Prefix Sum - Range Trip Counts

Given an array trips[] of N daily trip counts and Q queries (l, r), return the sum over [l, r]. N, Q <= 1e5.

Approach: classic prefix sum.

def range_trip_sum(trips, queries):
    pref = [0] * (len(trips) + 1)
    for i, t in enumerate(trips):
        pref[i+1] = pref[i] + t
    return [pref[r+1] - pref[l] for l, r in queries]

Time complexity: O(N) preprocess, O(1) per query. Practice target: write it from scratch in 5 minutes.

Practice 2: Binary Tree - City Path Reconstruction

Given a serialized string "1,2,#,3,#,#,4,#,#" (preorder with # as null), rebuild the tree and return the root.

Approach: consume tokens with an iterator, recurse to build.

class TreeNode:
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def deserialize(data: str):
    tokens = iter(data.split(','))
    def build():
        v = next(tokens)
        if v == '#':
            return None
        node = TreeNode(int(v))
        node.left = build()
        node.right = build()
        return node
    return build()

Time complexity: O(N). Practice target: understand why an iterator beats index tracking.

Practice 3: Union-Find - Driver Network Connectivity

Given N drivers and M relationships, find the size of the largest connected group.

Approach: union-find with size weighting plus root-size counting.

class DSU:
    def __init__(self, n):
        self.p = list(range(n))
        self.sz = [1] * n
    def find(self, x):
        while self.p[x] != x:
            self.p[x] = self.p[self.p[x]]
            x = self.p[x]
        return x
    def union(self, a, b):
        ra, rb = self.find(a), self.find(b)
        if ra == rb:
            return
        if self.sz[ra] < self.sz[rb]:
            ra, rb = rb, ra
        self.p[rb] = ra
        self.sz[ra] += self.sz[rb]

def largest_group(n, edges):
    d = DSU(n)
    for a, b in edges:
        d.union(a, b)
    return max(d.sz[d.find(i)] for i in range(n))

Time complexity: near O(α(N) · M). Practice target: write path compression + union by size in 8 minutes.

Practice 4: DP - Maximize Surge Pricing

Given N timeslots with surge multipliers mul[i], pick K non-adjacent slots to maximize the sum of multipliers.

Approach: an extended House Robber, picking K elements that are not adjacent.

def max_surge_choices(mul, K):
    n = len(mul)
    NEG = float("-inf")
    dp = [[NEG]*(K+1) for _ in range(n+1)]
    for i in range(n+1):
        dp[i][0] = 0
    for i in range(1, n+1):
        for k in range(1, K+1):
            dp[i][k] = dp[i-1][k]
            if i >= 2:
                dp[i][k] = max(dp[i][k], dp[i-2][k-1] + mul[i-1])
            else:
                dp[i][k] = max(dp[i][k], mul[i-1])
    return dp[n][K]

Time complexity: O(N·K). Practice target: derive the recurrence and code it within 12 minutes.

Recommended 90-Minute Pacing

Time slot Task
0-5 min Skim all problems, score by "fastest I can clear"
5-30 min Tackle the highest-confidence problem first, aim for 100% AC
30-65 min Second problem - brute force past samples, then optimize
65-85 min Third problem if any - half AC is acceptable
85-90 min Final review and submission check before the browser closes

Beyond OA: What Comes Next

Stage Content Length
Recruiter Screen Behavioral plus project deep dive 30 min
Tech Phone Medium algorithm plus light system 45 min
Onsite 4-5 rounds: algorithm, system, behavioral, hiring manager 1 working day

FAQ

Q1: Approximate Uber OA pass rate? Not officially published; community estimates land at 30-40 percent. Near-full AC on both problems almost always advances to Tech Phone.

Q2: Best HackerRank IO pattern? Use sys.stdin.readline plus sys.stdout.write - 5-10x faster than input() / print(). Just remember to strip().

Q3: First problem stuck at 30 minutes without sample passing - what now? Switch to the next one immediately. Uber OA scores total accepted cases, so accumulating partials beats burning out on one.

Q4: Are DS / DE OAs as hard as SDE? DS / DE OAs add SQL and Pandas problems and shave 15 minutes off the clock. Algorithm count drops, but SQL often turns into a hard window function.

Q5: How long after OA does Tech Phone come? Usually 5-10 business days. HM hold can stretch this to three weeks.


Preparing for Uber OA?

If you just received the OA link and worry about 90-minute pacing, or you want a real person doing OA proxy / VO proxy live shadowing on interview day, we can talk through a full OA assist / VO assist plan.


Contact

Need real interview questions and a custom prep plan? Add WeChat Coding0201 now to get questions.

Email: [email protected] Telegram: @OAVOProxy