ZipRecruiter 是美国领先的在线招聘平台,连接数百万求职者与雇主。其 SWE OA 考察标准算法能力,侧重字符串处理、匹配算法和数据结构设计——这些正是构建求职推荐平台的核心挑战。
OA 概览
| 维度 | 详情 |
|---|---|
| 平台 | HackerRank |
| 时长 | 90 分钟 |
| 题量 | 3 道编程题 |
| 难度 | Easy-Medium |
| 考察重点 | 字符串、数组、图、匹配算法 |
题型一:字符串匹配与处理
简历关键词匹配
给定职位描述中的关键词列表和一组简历,按关键词匹配分数对简历排名。
def rank_resumes(job_keywords, resumes):
results = []
keywords_lower = set(k.lower() for k in job_keywords)
for resume_id, text in resumes:
words = set(text.lower().split())
score = len(keywords_lower & words)
results.append((resume_id, score))
results.sort(key=lambda x: (-x[1], x[0]))
return results
职位名称标准化
def normalize_titles(titles):
abbreviations = {
'sr': 'senior', 'jr': 'junior', 'mgr': 'manager',
'eng': 'engineer', 'dev': 'developer', 'swe': 'software engineer'
}
suffixes_to_remove = ['i', 'ii', 'iii', 'iv', 'v']
normalized = []
for title in titles:
words = title.lower().strip().split()
while words and words[-1] in suffixes_to_remove:
words.pop()
words = [abbreviations.get(w, w) for w in words]
normalized.append(' '.join(words))
return normalized
题型二:基于图的推荐
技能图求职推荐
def recommend_jobs(user_skills, jobs, threshold=0.7):
recommendations = []
for job_id, required_skills in jobs:
if not required_skills:
continue
match_count = len(user_skills & required_skills)
match_ratio = match_count / len(required_skills)
if match_ratio >= threshold:
recommendations.append({
'job_id': job_id,
'match_ratio': match_ratio,
'missing_skills': required_skills - user_skills
})
recommendations.sort(key=lambda x: -x['match_ratio'])
return recommendations
公司关系图最短路径
from collections import deque, defaultdict
def shortest_company_path(employees, company_a, company_b):
graph = defaultdict(set)
for emp_id, companies in employees:
for i in range(len(companies)):
for j in range(i + 1, len(companies)):
graph[companies[i]].add(companies[j])
graph[companies[j]].add(companies[i])
queue = deque([(company_a, [company_a])])
visited = {company_a}
while queue:
current, path = queue.popleft()
if current == company_b:
return path
for neighbor in graph[current]:
if neighbor not in visited:
visited.add(neighbor)
queue.append((neighbor, path + [neighbor]))
return []
题型三:数据结构设计
求职申请追踪系统
from collections import defaultdict
class ApplicationTracker:
def __init__(self):
self.applications = {}
self.user_apps = defaultdict(list)
self.company_apps = defaultdict(list)
self.app_id = 0
def apply(self, user_id, company_id, job_id, timestamp):
self.app_id += 1
self.applications[self.app_id] = {
'user_id': user_id, 'company_id': company_id,
'job_id': job_id, 'status': 'APPLIED',
'applied_at': timestamp
}
self.user_apps[user_id].append(self.app_id)
self.company_apps[company_id].append(self.app_id)
return self.app_id
def update_status(self, app_id, new_status, timestamp):
if app_id not in self.applications:
return False
self.applications[app_id]['status'] = new_status
return True
def get_response_rate(self, company_id):
apps = [self.applications[aid] for aid in self.company_apps[company_id]]
if not apps:
return 0.0
responded = sum(1 for a in apps if a['status'] != 'APPLIED')
return responded / len(apps)
FAQ
ZipRecruiter OA 难度如何?
ZipRecruiter OA 整体偏简单,大约在 LeetCode Easy 到 Medium 之间。重点是写出干净正确的代码,而非复杂算法。适合偏好实际问题的候选人。
ZipRecruiter 完整面试流程是什么?
典型流程:OA → 技术电话面(1 轮)→ Onsite(3-4 轮,含编码、系统设计和行为面试)。整个流程通常 3-4 周。
ZipRecruiter 用什么技术栈?
主要使用 Python、Ruby on Rails 和 React。后端采用微服务架构,ML/推荐系统是平台核心。
ZipRecruiter New Grad 薪资水平如何?
New Grad SWE 总包通常在 $130K-$170K(基础薪资 + 奖金 + 股权),具体取决于地点和经验。
正在准备 ZipRecruiter OA?
oavoservice 提供专业的 OA/VO 辅助服务。
👉 立即添加微信:Coding0201,获取辅助方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy