
想进做招聘平台的算法团队?别小看 ZipRecruiter。作为典型的数据驱动型公司,ZipRecruiter 在数据科学(DS)和机器学习(ML)岗位的选拔流程上非常“工程化”:不仅刷题考得精,还要动手写代码调试脚本、设计系统、甚至查 debug 错误。Programhelp 最近辅导了几位同学成功拿下 ZipRecruiter offer,下面这篇就来帮你还原一次完整的 DS/ML 面试全流程,供你参考准备!
一、面试流程总览(DS/ML 岗)
面试阶段 | 说明 |
---|---|
电面(电话 or Zoom) | 自我介绍 + 项目深挖 + 即兴小题 / 后续发 OA |
OA 在线笔试 | CodeSignal 平台,4 道编程题,时间紧,题型包含算法、信息流模拟、矩阵处理等 |
Onsite 第 1 轮 | 算法题(如 Min Stack)现场手写 + 跑通测试,重视写代码的完整度和沟通方式 |
Onsite 第 2 轮 | Web 应用 Debug,涉及 Perl 脚本和 HTML,考系统排查思路和代码读懂能力 |
Onsite 第 3 轮 | Database Schema Design:设计 TinyURL 系统 + 用户投票功能扩展 |
Onsite 第 4 轮 | 手写实现 Merge Sort 等排序算法,重点在于代码逻辑完整、能跑出结果 |
整体上,这是一套“全维度选拔方案”:不仅考你刷题能力,更看你是否能写、查、改、搭建系统,适合那些有实战背景或项目经验的候选人。
二、编程题真题拆解(OA+Onsite 综合)
第一轮
题目 1:给一组正整数,第一个数为加,然后轮换加减数组里的数,返回总和。比如[1,2,3,4,5]
,ans = 1 - 2 + 3 - 4 + 5
。
题目 2:给一组长度为n
的整数[number[0], ..., number[n - 1]]
,返回number of shifts
,使得数组变成[n, n - 1, n - 2, ..., 1]
。t-shift
的意思是把数组变成[number[n - t], number[n - t + 1], ..., number[n - 1], number[0], ..., number[n - t - 1]]
。
题目 3:给一个矩阵,矩阵的element
是整数或者"+","-"
的string
,返回valid expression
的最大和,只能是一行的和或者一列的和。像"9"+"+""0"
这种属于invalid
。
题目 4:给一组正整数,比较数组里的数,返回只有一个digit
不同的pair count
。
第二轮(Codesignal 平台)
题目 1:给一个string: c1c2c3c4...
,要求前后两个char
互换变成c2c1c4c3...
。
题目 2:判断能否通过cyclic shift
(循环移位)后变成一个sorted
(有序)的序列。
题目 3:给一个正方形矩阵与一个数组,数组包含 0、1、2 三个数字:0 代表对矩阵进行顺时针rotate
(旋转);1 代表对矩阵沿主对角线reflex
(翻转);2 代表对矩阵沿副对角线reflex
(翻转) 。可参考类似力扣题目思路,rotate
可分解为transpose
(转置)加flip
(翻转)操作 。
题目 4:处理一系列矩阵操作,格式如[0, x0, y0], [0, x1, y1], [1, x2, y2]
:数组第一个元素为 0 时,新添加一个矩形;数组第一个元素为 1 时,判断x
和y
(可旋转矩形)能否适配到已添加的所有矩形中(比较长宽比等 )。
示例:[0, x0, y0], [0, x1, y1], [1, x2, y2]
中,前两个是添加矩形,第三个是判断适配性 。
第三轮(ZipRecruiter DS/MLE 岗位 OA)
题目 1:给两个字符串s、t
,检查t
中每个字符是否是s
对应位置字符的 “下一个”(s
中字符为'z'
时,t
对应为'a'
)。若全对应返回True
,否则False
。实现时用chr(ord(i)+1)
需注意'z'
转'{'
问题,要提前处理 。
题目 2:操作矩阵,根据参数i
执行不同变换:i == 0
:将矩阵顺时针旋转 90 度;i == 1
:沿主对角线翻转矩阵;i == 2
:沿副对角线翻转矩阵 。
题目 3:找当前时间后最早一班公交车的到达时间,并计算时间差。输入为时间列表schedule
和当前时间time
,输出为时间差字符串。例如:schedule = ["10:00","11:30","13:00","15:30"], time = "13:25"
,结果"02:05"
;schedule = ["10:00","11:30","13:00","15:30"], time = "13:00"
,结果"00:00"
。
难点在于时间差的计算和字符串格式处理 。
题目 4:涉及xy
轴碰撞相关逻辑
系统设计 & Debug 环节(hard)
Web Debug
问题:调试一个包含 HTML 页面和 Perl 脚本的小系统,输出页面数据不显示。
面试重点:
看你是否能读懂别人写的代码(Perl + JS)
理解 GET / POST 参数传递机制
不要求精通 Perl,但要清楚调试流程
Database Schema Design
设计 TinyURL 服务:
输入长 URL,返回唯一短链接
后续支持用户注册/登录、用户历史记录
设计扩展功能:Upvote / Downvote 投票系统
面试官会追问:
URL 如何去重?
是否有并发写入冲突?如何避免?
用户表和链接表的结构关系?
Programhelp 助你冲刺 DS / ML Offer|高效备考组合
Programhelp 是专注技术面试辅助的专业团队,已成功助攻学员斩获 ZipRecruiter、Meta、Amazon、Databricks、Stripe 等大厂 Offer,针对 DS / ML 岗位我们提供:
高频 OA 题库训练 + 解法精讲
模拟系统设计题 + 口头表达训练
项目故事梳理 + STAR 框架答题
Debug 实操训练 + Perl/HTML 环境模拟
OA 在线实时助攻服务
VO辅助,代面试、面试代面、SDE代面
如果你也在准备 DS / ML 岗位 OA / 技术面试,欢迎私信我们,领取专属题库样本 + 1v1 辅导计划!