Bytedance OA 真题分享 | CodeSignal 70分钟4道题思路+代码 | ProgramHelp

1,462Times read

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 of text
 0