← Back to blog TikTok OA Solved — Real Questions, Score Thresholds, and VO Interview Assist Boundaries
TikTok

TikTok OA Solved — Real Questions, Score Thresholds, and VO Interview Assist Boundaries

2026-05-26

A "how to think" guide rather than a question dump. We don't list problem IDs — we walk through what to do the moment a fresh problem appears on screen. Every recall here comes from de-identified oavoservice student debriefs. Compliance notes on VO interview assist are at the end.


1. Platform and pacing

TikTok North America OA runs on CodeSignal Industry Coding: 4 questions, 70-minute hard cap, no per-question budget. The realistic time-allocation curve is:

[Q1]  signature  10–15 min
[Q2]  implementation  15–20 min
[Q3]  medium  20–25 min
[Q4]  harder  remaining time

The pass mark sits around 600 / 800. Empirically: full Q1 + Q2 ≈ 350–400 points; partial Q3 ≈ 100–150; any Q4 hidden case is bonus. Don't grind Q4 — finish Q1–Q3 cleanly first.


2. Q1/Q2 themes: signatures and implementations

Theme Frequency Approach
String frequency stats very high Counter + sort
Array prefix diff high prefix_sum
Simple simulation (vote / lottery) mid small state machine
Matrix rotation / mirror mid index mapping

Recall: vote validity

Given vote events votes[i] = (voter, candidate, t), only the last valid vote per voter counts (largest t). Return the candidate with the most votes; ties broken by lexicographic order.

def winner(votes):
    last = {}
    for voter, cand, t in votes:
        if voter not in last or last[voter][1] < t:
            last[voter] = (cand, t)
    cnt = {}
    for cand, _ in last.values():
        cnt[cand] = cnt.get(cand, 0) + 1
    return min(sorted(cnt.items(), key=lambda x: (-x[1], x[0])))[0]

Complexity: O(n log n). Trap: don't forget the lexicographic tiebreaker — it's the most common silent failure.


3. Q3 themes: prefix sum + binary search / two pointers

Recall: longest subarray with sum ≤ K (with negatives)

Given an integer array containing negatives and threshold K, find the longest contiguous subarray whose sum ≤ K.

import bisect

def longest_subarray_sum_le_k(nums, K):
    n = len(nums)
    prefix = [0] * (n + 1)
    for i in range(n):
        prefix[i + 1] = prefix[i] + nums[i]
    sorted_prefix = []
    best = 0
    for j in range(n + 1):
        target = prefix[j] - K
        idx = bisect.bisect_left([p for p, _ in sorted_prefix], target)
        if idx < len(sorted_prefix):
            i = sorted_prefix[idx][1]
            best = max(best, j - i)
        while sorted_prefix and sorted_prefix[-1][0] >= prefix[j]:
            sorted_prefix.pop()
        sorted_prefix.append((prefix[j], j))
    return best

Complexity: naive O(n²) times out; you must combine monotonic structure + binary search for full hidden-case AC.


4. Q4 themes: graph / DP

Recall: shortest path with color constraint

On an n×m grid, walk from (0,0) to (n-1, m-1). Each cell has a color c[i][j] ∈ 1..k. Adjacent cells on the path must have different colors. Return the shortest path length, or -1 if impossible.

from collections import deque

def shortest_color_path(grid):
    n, m = len(grid), len(grid[0])
    dist = [[-1] * m for _ in range(n)]
    dist[0][0] = 0
    q = deque([(0, 0)])
    while q:
        x, y = q.popleft()
        for dx, dy in [(-1, 0), (1, 0), (0, -1), (0, 1)]:
            nx, ny = x + dx, y + dy
            if 0 <= nx < n and 0 <= ny < m and dist[nx][ny] == -1 and grid[nx][ny] != grid[x][y]:
                dist[nx][ny] = dist[x][y] + 1
                q.append((nx, ny))
    return dist[n - 1][m - 1]

Complexity: O(n × m). Trap: identical start/end colors are still legal — only adjacent cells along the path must differ.


5. Score distribution and pass mark

22-sample OA distribution:

[700-800] █          5%
[600-699] █████     27%
[500-599] ████████  41%
[400-499] █████     22%
[<400]    █          5%

Median pass score is 600. Locking down Q1 + Q2 + main body of Q3 gets most candidates there. Q4 is the watershed: solving 1–2 hidden cases pushes you from 600 to 700+, which materially lifts callback probability.


6. Anti-cheat mechanics

Mechanism Trigger How we handle it
Mandatory webcam Switching cameras / leaving seat flags you Device + room walkthrough
Screen share 3 tab-switches → warning Single-screen workflow + pre-staged material
Clipboard block External paste blocked Templates pre-staged inside the editor
In-editor copy Allowed Snippet shortcuts pre-rehearsed
Pacing analysis Outlier submission cadence flagged Cadence drilling in mock

oavoservice offers a one-stop OA package — pattern prediction, timed mock, score diagnostics, and end-to-end VO interview assist — with mentor coverage from the moment the OA link arrives to submission.


7. 3-week prep schedule

Week Focus
W1 CodeSignal timed mocks × 5 + zero-loss Q1/Q2
W2 Q3 theme drills: prefix sum, sliding window, graphs
W3 Q4 high-frequency DP / graphs + full simulation

FAQ

Is the OA always required?

For experienced, NG, and intern roles, almost always. Referral-only VO bypass exists but is rare.

Can I retake?

There is no built-in retake link. The cooldown is roughly 6 months; switching role family or BU can reset the pool sooner.

Can I use ChatGPT during the OA?

CodeSignal blocks external paste, requires camera + screen share, and flags pacing outliers. Browser-side GPT alone is high-risk. oavoservice offers a steadier path: live mentor assist + pattern prediction + cadence control.

How long until the next round?

Typically 1–2 weeks. Beyond 2 weeks, ping the recruiter politely.

How does VO interview assist plug into OA + VO?

oavoservice covers OA with pattern prediction, timed mocks, and live assist; VO with live thinking support, whiteboard review, and HM mocks. One package end to end.


Preparing for TikTok OA?

oavoservice has tracked TikTok OA themes for over two years. Services include pattern prediction, timed mocks, score diagnostics, and VO interview assist — end to end.

👉 Add WeChat: Coding0201, get the latest TikTok OA pack and VO assist plan.


Contact

Email: [email protected]
Telegram: @OAVOProxy