Bytedance OA 真題分享 | CodeSignal 70分鐘4道題思路+程式碼 | ProgramHelp

1,460Views

ByteDance OA 題庫有一定規模,但題型模式相對固定。只要你提前熟悉常見的套路,考試時完全可以前兩題十幾分鍾搞定,全程 40 分鐘內穩穩拿下 4 題。本文整理了我最近一場 ByteDance OA 的四道真實題目,附上詳細解題思路和程式碼示例,希望幫到正在準備位元組海外崗、TikTok、國內秋招或暑期實習的同學,提前熟悉節奏,少踩坑。

Bytedance OA 真題分享 | CodeSignal 70分鐘4道題思路+程式碼 | ProgramHelp

ByteDance OA 概覽

平臺:CodeSignal
時長:70 分鐘
題量:4 道
難度:中等偏下,熟悉套路後可以快速完成

T1:使用者評級與等級

題意簡述

給定一個初始評分 initial 和一個變化陣列 changes,依次累加後得到最終評分,判斷評分落在哪個等級區間。

思路

  • 直接對 initial 和 changes 求和
  • 用 if-else 判斷區間:
    • < 1000 → "beginner"
    • 1000–1499 → "intermediate"
    • 1500–1999 → "advanced"
    • ≥ 2000 → "pro"

示例

def solution(initial, changes):
    total = initial + sum(changes)
    if total < 1000:
        return "beginner"
    elif total < 1500:
        return "intermediate"
    elif total < 2000:
        return "advanced"
    else:
        return "pro"

T2:單詞變換

題意簡述

對每個單詞:

  • 如果首字母和尾字母都是母音(大小寫敏感,aeiouAEIOU),則保留首尾,反轉中間部分,並將中間部分的首字母大寫,其餘小寫。
  • 否則保持不變。

思路

  • 定义元音集合
  • 判斷 s[0] in vowels and s[-1] in vowels
  • 中間部分:s[1:-1] → 反轉 → 首字母大寫,其餘小寫 → 拼接

示例

def solution(text):
    vowels = set('aeiouAEIOU')
    res = []
    for s in text:
        if s[0] in vowels and s[-1] in vowels:
            mid = s[1:-1][::-1]
            if mid:
                mid = mid[0].upper() + mid[1:].lower()
            s = s[0] + mid + s[-1]
        res.append(s)
    return res

T3:手機電池使用

題意簡述

要用手机 t 分鐘,有 n 塊電池,每塊有:

  • capacity[i]:可用分鐘數
  • recharge[i]:耗盡後需要充電的分鐘數

規則:

  • 按順序迴圈使用電池
  • 當前電池用完 → 切換到下一塊
  • 如果下一塊還在充電,則繼續往後找
  • 如果所有電池都在充電 → 返回 -1
  • 统计完整用完的电池数量

思路

  • 模擬時間推進
  • 维护每块电池的可用时间点
  • 當需要換電池時,按順序找第一個已充滿的
  • 如果找不到 → -1

示例

def solution(t, capacity, recharge):
    n = len(capacity)
    ready_time = [0] * n   # 每塊電池何時可用
    used_count = 0
    time = 0
    idx = 0

    while time < t:
        # 找當前可用的電池
        found = -1
        for _ in range(n):
            if ready_time[idx] <= time:
                found = idx
                break
            idx = (idx + 1) % n
        if found == -1:
            return -1

        # 使用這塊電池
        cap = capacity[found]
        ready_time[found] = time + cap + recharge[found]
        time += cap
        used_count += 1
        idx = (found + 1) % n

    return used_count

T4:旅行路線重建

題意簡述

給出一系列照片,每張照片 [a, b] 表示 a 和 b 在旅行中是連續訪問的(順序未知)。
要求重建完整的访问顺序(所有地标出现一次,且相邻对都有照片)。

思路

  • 這是一個鏈結構(每個節點度 ≤ 2)
  • 建圖:鄰接表
  • 找到链的端点(度为 1 的节点)
  • 從任意端點開始遍歷,不斷走向未訪問的鄰居

示例

def solution(travelPhotos):
    from collections import defaultdict, deque
    
    graph = defaultdict(list)
    degree = defaultdict(int)
    
    for a, b in travelPhotos:
        graph[a].append(b)
        graph[b].append(a)
        degree[a] += 1
        degree[b] += 1
    
    # 找端點
    start = None
    for node in graph:
        if degree[node] == 1:
            start = node
            break
    
    # 遍歷
    order = []
    prev = None
    cur = start
    while cur is not None:
        order.append(cur)
        nxt = None
        for nei in graph[cur]:
            if nei != prev:
                nxt = nei
                break
        prev, cur = cur, nxt
    
    return order

需要 CodeSignal OA 幫助?

如果你正在準備位元組跳動或其他科技公司的CodeSignal線上筆試,你並不孤單。很多求職者都發現:70分鐘4道題的節奏很緊,尤其是遇到不熟悉的題型變種時,很容易卡住。

ProgramHelp 可以為你提供:

  • 真實OA題庫 – 涵盖ByteDance、TikTok、Amazon、Meta等公司的高频真题
  • 解題思路 + 程式碼模板 – 快速掌握每類題型的核心解法,不再死磕
  • 一對一輔導 – 針對你的薄弱環節專項提升
  • 緊急輔助 – OA助攻 · 無痕支援 ,CodeSignal | HackerRank | LeetCode,位元組 / TikTok / Amazon / Meta

用最少的時間,拿到最高的OA分數。

顺利进入下一轮面试,离Offer更近一步。

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END
 0