← 返回部落格列表 ZipRecruiter CodeSignal OA 2026 真題複盤|70 分鐘 4 題節奏 + 字串與圖論高頻解法
ZipRecruiter

ZipRecruiter CodeSignal OA 2026 真題複盤|70 分鐘 4 題節奏 + 字串與圖論高頻解法

2026-05-24

ZipRecruiter 2026 SDE Intern / NG OA 走 CodeSignal General Coding Assessment(GCA)的常見模板:70 分鐘 4 題,難度梯度從 L1 到 L4。題目本身不算難,但 ZipRecruiter 特別偏愛字串處理 + 招聘場景圖論,沒刷過他們風格的同學很容易在最後一題超時。本文按真題盤點 → 節奏 → 解法 → 踩雷的順序給出完整複盤。

OA 平台與節奏

維度 詳情
平台 CodeSignal GCA
題量 4 道 Coding
時長 70 分鐘
難度梯度 L1 簡單 → L4 困難
評分 0–600 分,按題目難度加權
通過線 通常 ≥ 480 分進下一輪
監考 CodeSignal 攝影機 + 螢幕監控

CodeSignal 的特點是前 3 題分值低(合計 ~ 360),第 4 題佔 ~ 240,所以前 3 題必須全過,第 4 題再盡力 partial。

2026 春招真題盤點(4 道)

Q1(L1):陣列遍歷計數 — 10 分鐘內必拿

給定字串陣列 words,回傳長度為 k 的字串數量。

def count_length_k(words, k):
    return sum(1 for w in words if len(w) == k)

時間複雜度:O(n)

Q2(L2):字串變形 — Job Title 標準化

輸入一個 job title 字串(含混合大小寫、連字符、多餘空格),輸出標準化版本:每個單詞首字母大寫,單詞間單一空格,去掉前後空格。

def normalize_title(s):
    return " ".join(part.capitalize() for part in s.split())

進階版本(如果有連字符需要保留):

def normalize_with_hyphen(s):
    def cap_token(tok):
        return "-".join(p.capitalize() for p in tok.split("-"))
    return " ".join(cap_token(t) for t in s.split())

時間複雜度:O(n)

Q3(L3):Job-Skill 匹配評分

給定 candidate 的 skill 列表和一組 job 的 required skills,輸出每個 job 與 candidate 的Jaccard 相似度降序排序後的前 k 個 job。

def top_k_jobs(candidate_skills, jobs, k):
    cs = set(candidate_skills)
    scored = []
    for job_id, required in jobs:
        rs = set(required)
        union = cs | rs
        inter = cs & rs
        score = len(inter) / len(union) if union else 0.0
        scored.append((score, job_id))
    scored.sort(key=lambda x: (-x[0], x[1]))
    return [job_id for _, job_id in scored[:k]]

時間複雜度:O(m · (s + r) + m log m),m 是 job 數

Q4(L4):Skill Graph 關鍵路徑

給定 skill graph(每個 skill 有先修依賴),求 candidate 從已掌握集合 S 出發,額外學習多少 skill 後能解鎖 target skill t。如果無法解鎖,回傳 -1。

要點:

from collections import defaultdict

def min_skills_to_unlock(graph, known, target):
    """
    graph: dict[skill] -> list[prereq skills]
    known: set of skills candidate already has
    target: target skill
    """
    if target in known:
        return 0
    
    visited = set()
    stack = [target]
    needed = 0
    
    while stack:
        cur = stack.pop()
        if cur in visited:
            continue
        visited.add(cur)
        if cur in known:
            continue
        needed += 1
        for prereq in graph.get(cur, []):
            if prereq not in visited:
                stack.append(prereq)
    return needed

時間複雜度:O(V + E)

注意:題目的真實變體可能要求返回最短的「學習順序」,那時需要拓撲排序 + BFS 層級。

70 分鐘節奏建議

0–10 分鐘    Q1 拿滿(含 sample case)
10–25 分鐘   Q2 拿滿 + 處理 edge case
25–45 分鐘   Q3 拿滿(注意 Jaccard 分母為 0 的情況)
45–68 分鐘   Q4 盡可能拿 partial,至少跑通 sample
68–70 分鐘   回看提交,確認沒有 syntax error

關鍵:CodeSignal 不允許查看歷史提交分數,所以每題寫完必須自己跑過 sample + 至少 2 個 edge case 再提交。

ZipRecruiter 風格的 4 個細節

  1. 字串題特別多:和招聘業務相關(job title、resume、skill)
  2. 資料量不大:n ≤ 10⁴,但題目會卡 O(n²) 通不過
  3. 樣例非常寬鬆:sample case 簡單,hidden case 才嚴
  4. Q4 經常超時:因為沒讀完題目就開始寫

常見踩雷

CodeSignal 的「程式碼品質」評分

CodeSignal GCA 除了 correctness,還會給code quality score(A–F):

維度 影響
變數命名 tmp/x/y 一律扣
函式拆分 80 行單函式會扣
註釋 完全沒註釋不扣,但註釋錯誤會扣
用 print debug 留在提交裡扣

程式碼品質從 A 降到 C,總分會折損 ~ 50

我們見過的高分模式

oavoservice 學員中 ZipRecruiter CodeSignal 拿到 600 滿分的,普遍特徵是:前 3 題各留 1–2 分鐘 sanity check + 第 4 題至少 partial。我們 OA輔助 流程會針對 CodeSignal 評分細則做程式碼風格審計

具體方案與報價,加微信 Coding0201 溝通。


FAQ

ZipRecruiter CodeSignal 難度怎麼樣?

L1–L3 偏簡單(LC easy/medium),L4 是 LC medium-hard。整體比 Meta CodeSignal 簡單一檔。

600 分能拿 onsite 嗎?

社群回饋 ≥ 480 分進 phone screen,≥ 540 通常有 onsite。600 是 differentiator。

CodeSignal 可以用 ChatGPT 嗎?

不可以。CodeSignal 攝影機 + 螢幕監控 + 切視窗偵測,違規會被 blacklist

Python 在 CodeSignal 會 TLE 嗎?

L1–L3 不會。L4 可能會,建議用 Python 3 + 簡潔實作,避免不必要的 deepcopy。


正在準備 ZipRecruiter / Indeed / Glassdoor / LinkedIn 等招聘平台 OA?

oavoservice 長期追蹤招聘平台與 CodeSignal GCA 的 OA 真題。mentor 來自一線 SWE,可提供字串題專項、Skill Graph 類題型、CodeSignal 程式碼品質審計等 OA輔助 服務。

👉 立即加微信:Coding0201取得 ZipRecruiter CodeSignal OA 完整備考方案


聯絡方式

Email: [email protected]
Telegram: @OAVOProxy