← 返回部落格列表 eBay 軟體工程實習 面試真題題庫:五大主題 × 高頻考點深度拆解
eBay

eBay 軟體工程實習 面試真題題庫:五大主題 × 高頻考點深度拆解

2026-06-02

eBay 的軟體工程實習 (SWE Intern) 是不少同學投遞的「中等難度但題型很集中」的目標。和 FAANG 頭部公司相比,eBay 的題面看上去沒那麼「花」,但題型分布非常穩定——抓住核心五個主題,再配套準備 Karat 風格的 follow-up,就能把面試轉化率拉滿。

這篇文章把站內多篇 eBay 面經實錄裡的真題,按 陣列前綴 / 字串狀態機 / 樹與圖 / 資料結構設計 / 系統設計入門 五個主題重新組織,每個主題給一道代表題 + Python 完整解法 + 時間分配建議。如果你正在準備 eBay 實習的 OA、Karat live coding 或 final loop,可以把這套題庫當作「考前必過一遍」的 checklist。

eBay SWE Intern 招聘流程一覽

階段 平台 時長 題型
Online Assessment HackerRank 60-75 分鐘 2 道編碼 + 部分批次 4-6 題 MCQ
Karat Live Coding Karat / Zoom 60 分鐘 1-2 道演算法 + follow-up 優化
Tech Phone Zoom + CoderPad 45 分鐘 1 道中等難度 + 簡單 OOD/系統對話
Virtual Onsite 4 輪 × 60 分鐘 1 個工作日 演算法 / 系統設計 / 程式碼審查 / 行為題

要點:HackerRank OA 一般在投遞後 7-10 天內發;Karat 與 Tech Phone 節奏緊湊,連續 2-3 週;Onsite 多為遠端,時差需提前協調。

主題一:陣列前綴和與視窗計數

真題:連續區間內不同 Promotion 數

給定一個長度 N 的陣列 promo[],每個元素是當天的促銷活動 id。給定 Q 個查詢 (l, r),回傳區間內不同活動 id 的數量。N, Q ≤ 1e5。

思路

  1. 離線 + Mo's Algorithm 是經典解,O((N+Q)·√N)
  2. eBay OA 通常給的資料規模 ≤ 1e5,可以用位置+前綴計數:把每個 id 出現的位置存進 list,對每個查詢二分
from collections import defaultdict
from bisect import bisect_left, bisect_right

def distinct_in_ranges(promo, queries):
    pos = defaultdict(list)
    for i, p in enumerate(promo):
        pos[p].append(i)
    res = []
    for l, r in queries:
        cnt = 0
        for p, idxs in pos.items():
            lo = bisect_left(idxs, l)
            hi = bisect_right(idxs, r)
            if hi > lo:
                cnt += 1
        res.append(cnt)
    return res

時間複雜度:O(Q · K · log N),K 是不同 id 數;當 K 較小時非常快。 空間複雜度:O(N)。

Follow-up:如果 N=1e6 且需要 online,必須用持久化線段樹(主席樹),可以口頭描述思路即可。

主題二:字串狀態機與解析

真題:Listing Title 校驗器

輸入一段商品標題字串,規則:

  • 不能以小寫字母開頭
  • 不能連續出現 3 個相同字母
  • 不能包含 < > script 等危險關鍵字
  • 長度 5-80

回傳是否合法 + 第一個違規原因(按順序優先級)。

思路:典型字串校驗,用一個 rule pipeline 寫最清晰:

def validate_title(title: str) -> tuple[bool, str]:
    if not (5 <= len(title) <= 80):
        return False, "length"
    if title[0].islower():
        return False, "leading_lower"
    for i in range(2, len(title)):
        if title[i] == title[i-1] == title[i-2]:
            return False, "triple_repeat"
    blacklist = ("<", ">", "script", "javascript")
    low = title.lower()
    for kw in blacklist:
        if kw in low:
            return False, f"blacklist:{kw}"
    return True, "ok"

時間複雜度:O(N),N 是標題長度。 面試加分:能用 enum + dataclass 把 rule 抽出來寫成可擴充的 validator 鏈。

主題三:樹與圖(站點拓撲)

真題:Categories 樹最大銷售路徑

商品類目是一棵樹,每個節點有一個 sales 值(可正可負)。從根到任意葉子路徑的總銷售額最大值是多少?

思路

  1. DFS 自頂向下累加 path sum,記錄最大值
  2. 注意銷售可能是負數,路徑不能「提前停下」——題目要求是到葉子,所以不能貪心剪枝
class Node:
    def __init__(self, sales: int):
        self.sales = sales
        self.children = []

def max_leaf_path(root: Node) -> int:
    best = float("-inf")
    def dfs(node, acc):
        nonlocal best
        acc += node.sales
        if not node.children:
            best = max(best, acc)
            return
        for c in node.children:
            dfs(c, acc)
    dfs(root, 0)
    return best

時間複雜度:O(N)。 Follow-up:如果題目改成「任意起點到任意終點」——退化成 LeetCode 124 的變體,要在每個節點合併左右最大單邊路徑。

主題四:資料結構設計

真題:商品搜尋 LRU + 熱度衰減

實作一個搜尋快取:

  • query(keyword, ts):回傳該關鍵字的命中結果,並更新最近存取時間
  • top_k(ts, k):回傳截至當前時間最熱門的 k 個關鍵字,熱度 = 存取次數 × 時間衰減因子 0.99^(ts - last_ts)

思路

class HotSearch:
    def __init__(self, decay=0.99):
        self.decay = decay
        self.data = {}

    def query(self, keyword, ts):
        if keyword not in self.data:
            self.data[keyword] = [0, ts]
        c, last = self.data[keyword]
        c = c * (self.decay ** (ts - last)) + 1
        self.data[keyword] = [c, ts]

    def top_k(self, ts, k):
        scored = [
            (kw, c * (self.decay ** (ts - last)))
            for kw, (c, last) in self.data.items()
        ]
        scored.sort(key=lambda x: -x[1])
        return [kw for kw, _ in scored[:k]]

時間複雜度:query O(1),top_k O(N log N)。 Follow-up:用 bucket + heap 優化 top_k 到 O(N);面試官常問。

主題五:系統設計入門

真題:設計 eBay 商品詳情頁 API

要求口頭設計 GET /listing/{id} 介面,覆蓋:

回答骨架P-A-S 模型:Path / API / Storage):

  1. Path:CDN → API Gateway → Listing Service → Cache (Redis) → MySQL
  2. API:回傳 {listing, seller, price_history, related_listings},每塊獨立 fetch 後聚合(fan-out)
  3. Storage:listing 主表 MySQL;圖片 S3 + CDN;推薦位走 ML 服務;價格歷史 ClickHouse 時序
  4. 一致性:寫更新時先寫 DB,再透過 CDC(Debezium)非同步刷 Redis,TTL 兜底
  5. 抗壓:熱門商品在 Redis 內做 local cache,避免 thundering herd

備考策略:四週節奏

週次 主任務
第 1 週 把 LeetCode "eBay" tag + Top 50 中等題做完
第 2 週 主題二、三的字串與樹/圖重點訓練
第 3 週 資料結構設計 + 系統設計 P-A-S 模板演練
第 4 週 Karat mock + 行為題 STAR 故事打磨

FAQ

Q1:eBay SWE Intern OA 難度和 LeetCode 比是什麼水平? 大致 LeetCode Medium 偏中等,少數批次會出 1 道偏難。關鍵在 60 分鐘內寫出 bug-free 解法,不要追求最優。

Q2:HackerRank 平台有哪些坑? 預設編輯器沒有 LSP;建議在本地寫好再貼上。注意輸入解析常用 input().split(),不要花太多時間在 IO 上。

Q3:Karat 面試和正式 onsite 一樣嚴格嗎? Karat 是外包面試官,給分相對客觀;通過率 ~50%。題目難度比 OA 略高,但允許更多溝通。

Q4:eBay 實習的實際工作內容是什麼? 分散在 Listings / Search / Trust&Safety / Payments 等團隊;前端 React,後端 Java + Scala,資料 Spark。

Q5:如何提升 eBay Final Loop 通過率?


正在準備 eBay 實習面試?

如果你已經收到 OA 連結但 60 分鐘 2 題仍然吃緊,或者 Karat 階段反覆卡 follow-up,可以聊聊看 OA代面 / VO輔助 / VO代面 的全套支援方案——從面試日真人陪跑、題型映射、到行為題 STAR 故事打磨,都能端到端提供。


聯絡方式

需要面試真題與客製備戰計畫?立刻聯絡微信 Coding0201獲取真題

Email: [email protected] Telegram: @OAVOProxy