← 返回博客列表
eBay

eBay OA CodeSignal 真題解析|流程復盤 + 高頻題型

2025-08-19

最近我們這邊有幾位同學陸續完成了 eBay Software Engineer / Data 相關職位的 OA。作為長期陪跑 eBay OA 的輔導團隊,我們第一時間幫學員做了完整復盤,把 流程、題型分佈、易踩坑點 系統性整理出來,供正在準備 eBay 或同類大廠 OA 的同學參考。

整體來說,eBay 的 OA 風格非常典型:


eBay OA 整體流程概覽

從學員的反饋來看,大多數 eBay 技術職位 OA 具有以下特徵:

維度 說明
平台 HackerRank / CodeSignal(不同職位略有差異)
題量 常見 2 道編程題;個別職位會疊加 SQL / Data 處理題
時長 60 – 90 分鐘
語言 Python / Java / C++ / JavaScript 可選
複雜度要求 看重,但更看重「合理且穩定」

總結一句話:eBay OA 的核心不是「你會不會最佳解」,而是「你像不像一個能進組寫生產程式碼的人」。


eBay OA 真題範例(真實考察方向)

下面分享的是我們在輔導過程中整理出的 eBay OA 中出現過的真實題型範例。題目本身並不追求極端演算法難度,但非常強調對 規則理解、程式碼穩定性以及細節處理能力

真題一:陣列分段減法模擬(Simulation + Greedy)

題目核心描述

You are given numbers, an array of non-negative integers. Repeatedly find the leftmost non-zero element x, subtract x from consecutive elements to the right until subtraction is no longer possible, and add x to the final result. Return the total accumulated sum.

考察重點

Python 參考思路

def solve(numbers: list[int]) -> int:
    result = 0
    while True:
        # 找 leftmost non-zero
        start = -1
        for i, v in enumerate(numbers):
            if v > 0:
                start = i
                break
        if start == -1:
            break

        x = numbers[start]
        result += x

        # 從 start 開始,連續減 x
        for j in range(start, len(numbers)):
            if numbers[j] >= x:
                numbers[j] -= x
            else:
                break

    return result

真題二:大小寫字母統計(String Traversal)

題目核心描述

Given a string consisting of uppercase and lowercase English letters, return the difference between the number of uppercase and lowercase letters.

考察重點

Python 參考實作

def case_diff(s: str) -> int:
    upper = sum(1 for c in s if c.isupper())
    lower = sum(1 for c in s if c.islower())
    return upper - lower

真題三:二進位狀態 + 操作序列模擬(State Machine)

題目核心描述

You are given a binary array state and a list of operations:

  • "L": set the smallest index with value 0 to 1
  • "C(index)": set state[index] = 0

Return the final state as a binary string.

考察重點

Python 參考實作

import re

def process_ops(state: list[int], operations: list[str]) -> str:
    for op in operations:
        if op == "L":
            for i in range(len(state)):
                if state[i] == 0:
                    state[i] = 1
                    break
        elif op.startswith("C("):
            match = re.match(r"C\((\d+)\)", op)
            if match:
                idx = int(match.group(1))
                if 0 <= idx < len(state):
                    state[idx] = 0
    return ''.join(map(str, state))

eBay OA 常見問題 FAQ(導師答疑版)

Q1:eBay OA 算難嗎?需要刷到什麼程度?

:不算難,但非常「卡細節」。重點在於題意理解是否完整,狀態變化是否嚴謹。

Q2:需要最佳解(O(n) / O(log n))嗎?

:不強制,但你得「解釋得通」。通常 O(n)O(n log n) 就足夠。

Q3:OA 會不會因為一次小 bug 直接掛?

:取決於 bug 的性質。致命邏輯錯誤風險很高,小邊界錯誤仍有機會。


關於 eBay OA 輔助服務說明

我們的 OA 支持重點在於:

eBay 真正拉開差距的是後面的技術面和系統討論,而不是 OA 本身。


需要面試真題? 立刻聯繫微信 Coding0201獲得真題