← 返回部落格列表 ZipRecruiter OA 經驗複盤|匹配評分 + 字串相似度 + 系統設計 OA輔助 全攻略
ZipRecruiter

ZipRecruiter OA 經驗複盤|匹配評分 + 字串相似度 + 系統設計 OA輔助 全攻略

2026-05-23

ZipRecruiter(NYSE: ZIP)作為美國最大求職平台之一,OA 題面非常聚焦自家業務:Job Matching 評分、字串相似度匹配、Skill Graph。本篇整理近一年 OA 經驗複盤,覆蓋 SDE / Data Scientist 兩條 track,給出完整解法和 OA輔助 接入方式。

ZipRecruiter OA 概覽

維度 詳情
投放渠道 HackerRank
時長 75 分鐘
題量 2–3 題(含 1 道 SQL 或機率)
主考方向 字串、匹配評分、圖、SQL
評分 全自動判題 + 部分程式碼風格扣分
通過率 社區反饋約 45%

主線一:Job Matching 評分

題面特徵

給定一個 Job(id, title, skills, salary) 和一組 Candidate(id, skills, expected_salary),要求實作 match_score(job, candidate),回傳 0–100 的匹配分。

評分規則(題面給定)

Python 解法

def match_score(job, candidate):
    score = 0
    js = set(job['skills'])
    cs = set(candidate['skills'])
    score += 10 * len(js & cs)

    if candidate['expected_salary'] <= job['salary']:
        score += 20
    else:
        diff = candidate['expected_salary'] - job['salary']
        score += max(0, 20 - diff // 1000)

    title_lower = job['title'].lower()
    for s in candidate.get('top_skills', []):
        if s.lower() in title_lower:
            score += 10
            break
    return min(100, score)

易錯點:題面裡規則的優先級(salary 差距按 1000 / 5000 / 整數)是字面定義,不能自己發揮。社區反饋最常見錯誤是 (diff // 1000) 寫成 diff / 1000 導致浮點四捨五入。

主線二:字串相似度匹配

題面特徵

給定兩個字串 querytitle,計算:

社區反饋最多的是 edit distance + 1 道延伸題:「求 query 與一組 titles[] 中 edit distance ≤ k 的所有 title」。

Python 解法(標準 edit distance + 過濾)

def edit_distance(a, b):
    m, n = len(a), len(b)
    dp = [[0] * (n + 1) for _ in range(m + 1)]
    for i in range(m + 1):
        dp[i][0] = i
    for j in range(n + 1):
        dp[0][j] = j
    for i in range(1, m + 1):
        for j in range(1, n + 1):
            if a[i - 1] == b[j - 1]:
                dp[i][j] = dp[i - 1][j - 1]
            else:
                dp[i][j] = 1 + min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1])
    return dp[m][n]

def filter_titles(query, titles, k):
    return [t for t in titles if edit_distance(query, t) <= k]

優化建議:當 titles 數量很大時(社區反饋隱藏 case 有 10^5 數量級),需要先用 長度差過濾abs(len(q)-len(t)) > k 時直接跳過)。

主線三:Skill Graph(圖連通)

題面特徵

給定 skill 之間的 (parent, child) 關係(如 Java → SpringSpring → SpringBoot),實作:

Python 解法

from collections import defaultdict, deque

class SkillGraph:
    def __init__(self, edges):
        self.children = defaultdict(set)
        self.parents = defaultdict(set)
        for p, c in edges:
            self.children[p].add(c)
            self.parents[c].add(p)

    def descendants(self, skill):
        result = set()
        q = deque([skill])
        while q:
            cur = q.popleft()
            for c in self.children[cur]:
                if c not in result:
                    result.add(c)
                    q.append(c)
        return result

    def is_related(self, a, b):
        return b in self.descendants(a)

易錯點:圖可能成環(社區反饋隱藏 case 有 A→B, B→A 的 self-cycle),用 visited 集合避免無限循環。

ZipRecruiter OA 高頻題分布

題型 頻率 關鍵考點 易錯點
Job Matching 評分 ★★★★★ 字典 + 規則字面化 浮點四捨五入
字串相似度 ★★★★ edit distance + 長度過濾 大資料集 TLE
Skill Graph ★★★★ BFS + 環檢測 自環
SQL Top-K 推薦 ★★★ 視窗 + JOIN partition 邊界
履歷關鍵字提取 ★★ 正則 + 詞典 大小寫敏感

OA輔助 實戰路徑

oavoservice 的 OA輔助 服務

一份「規則字面化」清單

ZipRecruiter 題面特別喜歡給一堆字面規則:「salary 差距按 1000 取整,最多扣 20 分」「skill overlap 命中一個加 10 分」。我們維護了一份 規則字面化清單,列出所有「不能自己優化、必須嚴格按題面」的判分點。OA輔助 學員可以直接拿到這份清單。

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


FAQ

ZipRecruiter OA 用什麼語言?

HackerRank 全語言支援;社區反饋 Python / Java 各占 ~40%。

OA 通過後多久面試?

社區反饋通常 5–7 天發 phone screen,整體節奏比 FAANG 快。

ZipRecruiter 和 Indeed / LinkedIn 題庫重疊嗎?

字串 + Graph 部分重疊 ~60%,Job Matching 題型 ZipRecruiter 獨家。

OA 沒過冷卻期多久?

通常 6 個月。換崗位(如 SDE → DS)一般另算池子。


正在準備 ZipRecruiter / Indeed / LinkedIn / Glassdoor 面試?

oavoservice 長期追蹤招聘平台公司(ZipRecruiter / Indeed / LinkedIn / Glassdoor / Handshake)的 OA + VO 真題。mentor 來自一線 matching / search / recommendation 團隊,可以提供 題型分桶、規則字面化訓練、大資料集優化、HackerRank 平台模擬 等 OA輔助 / VO輔助 服務。

👉 立即添加微信:Coding0201獲取 ZipRecruiter 高頻題與 OA輔助 方案


聯絡方式

Email: [email protected]
Telegram: @OAVOProxy