算法工程师一面、二面面经
完整信息
本篇目录
【他们怎么上岸的 · 第 7 期】
算法这个方向我拖了挺久,不是没人问,是争议太大。
来问的人第一句往往不是"我能投吗",而是:
"OD 的算法岗,是不是就是去打标的?去了两年人就废了吧。"
这句话我听过不下三十遍。今天这期这个同学,就是被这句话耽误了整整两年。
先说他的情况本科普通一本,硕士在一所双非院校读的,方向是 CV。毕业后没去大厂,进了一家做工业视觉的小公司,做缺陷检测,两年。
日常是什么样呢:跟着项目跑产线,甲方给一批不良品照片,他们标、训、调、部署到边缘盒子上,最后蹲在现场调光源和相机角度,因为模型在测试集上好看没用,产线上灯一换光,准确率直接掉十个点。
他自己的总结:"我这两年干的是'把模型塞进产线',论文一篇没发,比赛一次没打。"
他卡住的地方,是别人给的一句话
他研二就听说过 OD,一直没投。
原因是他师兄跟他说过一句话:"那边算法岗就是给人打标的,数据民工,去了你这个方向就废了。"
他信了。而且不是随便信——他觉得自己本来就是双非硕士、没顶会、没比赛,去大厂的算法岗本来就不够格,去 OD 又只能打标,那这个方向对他来说就等于没有路。
用他的原话:"我不是不敢投,我是觉得投了也没意义。"这个判断我今年才跟他掰开讲。我没跟他讲大道理,问了三个问题:
- "你们公司标注是谁定的规则?" —— 他说前期是他定的,因为标错了训出来就是垃圾,后来才交给外包团队照他的规则标
- "模型从训练到在盒子上跑起来,中间那一段谁做?" —— 他说他做,量化、转格式、算子对不上要改,跑不通还得回头改网络结构
- "上线之后准确率掉了,谁去现场?" —— 他说他去,"一般是光源或者来料批次变了,得重新采数据补训" 三个问题问完我跟他说:你这三件事,分别是数据、部署、落地,恰恰是这条链上最贵的三段。 打标在这个体系里是有的,但它是链条最前端、可替代性最高的那一环,不是你干的那一段。 他沉默了一会儿,说:"那我这两年是不是白焦虑了。" 关于门槛,我把口径一次说清楚 OD 是社招,硬门槛只有一条:已经毕业,有毕业证、学位证,学信网可查。
- 27 届和还在读的同学:投不了,机考都约不了,毕业拿到证再来找我
- 学历情况比较特殊的:别在评论区猜,也别听人瞎说,私信把情况发我,我帮你确认能不能走流程 机考(3 道算法题,满分 400、150 过线,他 212) 按理说这是算法岗的人最该轻松的一关,但他考完跟我说"丢人"。 因为他准备的时候走偏了:买了本难题合集,专攻 hard,刷了一个多月,结果考场上一道 hard 都没出。
- 第一题:模拟 + 哈希,思路清楚,拿了满
- 第二题:动态规划,他看出来了是 DP,状态转移写到一半发现自己推错了,返工了一轮,最后拿了大部分用例
- 第三题:图,BFS 加剪枝,他写了框架,时间不够,小样例过了,大样例超时 212 分,不高。他考完第一句话是"我一个搞算法的考成这样"。 我说:机考看总分,三道题都有分就够,它筛的是"你会不会在压力下写出来",不是"你算法水平多高"。 你后面还有技术面,那才是算法岗真正分胜负的地方。 技术一面(原理 + 场景 + 一道手写,一个多小时) 前半段问的全是他天天在碰的东西,问法是"为什么":
- 给输入尺寸、kernel、padding、stride,现场算卷积输出尺寸
- 感受野怎么算,两层 3×3 和一层 5×5 的感受野谁大、参数量差多少
- BN 在训练和推理时分别做什么 —— 他在这儿卡了
- dropout 训练时要除以 keep_prob,为什么;推理时为什么不除
- 过拟合怎么判断,除了加数据还能怎么处理
- 目标检测里 anchor-based 和 anchor-free 的区别,你实际用过哪个
- IoU 怎么算,NMS 的流程讲一下
- mAP 具体怎么算,AP 和 mAP 是什么关系 —— 他答得含糊
- 交叉熵和 Focal Loss 的区别,样本极度不均衡你怎么处理
- 为什么要做 INT8 量化,量化之后精度掉了你怎么救
- 模型从训练框架到边缘设备上跑起来,中间要过哪几步 手写题是 NMS:给一组框和置信度,写出完整流程。他写得挺快,因为部署的时候天天跟这个打交道。 第 3 题他卡住的地方,我觉得是全场最真实的几分钟。 面试官问"BN 在推理的时候是什么行为",他第一反应答的是"推理的时候不做 BN 了"。说完自己觉得不对,停了两秒,改口: "不对,推理时还是要做归一化,只是用的不是当前 batch 的统计量,是训练阶段存下来的那套均值和方差。这块我实际部署的时候是走工具导出的,统计量那部分我没自己写过,但我记得导出的时候那几个参数是跟着权重一起走的。" 面试官没为难他,点了句"知道用的是滑动平均那套就行",继续往下问了。 第 8 题 mAP 他也答得不利索,只说出"各类别 AP 取平均",AP 那条 PR 曲线下面积的部分他说"我平时是看工具输出的数,具体积分那步我没手算过"。 这两处他出来以后很懊恼,跟我复盘说"这俩是最基础的,我不该答成这样"。 我说:你答得不算好,但你没编。 "用的不是当前 batch 的统计量"这句话你说对了,后面那句"我没自己写过"也说对了——面试官要的就是这个边界,他最怕的是你顺着往下编。 技术二面 二十来分钟,就一个场景题: "模型在你这边测试集上 98%,上线到产线只有 80%,你怎么查?" 他没背答案,按自己干活的顺序讲:先确认线上线下预处理是不是一致(resize、归一化参数、通道顺序这三处最容易对不上),再看现场采的数据分布和训练集的差异(光源、来料批次、相机角度),再看漏检集中在哪一类——如果是某一类集中漏,大概率是这一类样本不够,回去补采补训;如果是全类都掉,多半是前面那两个环节的问题。 讲完他补了一句:"还有一种情况是模型根本没换上来,跑的还是旧版本,这种我第一时间会先确认。" 面试官说"你这个顺序是对的"。 主管面(不太聊技术) 为什么想换、能不能去长沙、有没有读博打算、期望薪资、家里什么意见。 "有没有读博打算"这题他答得直接:"没有,我想在工程上往深走,不想再回学校了。" 结果:定级 D3,base 长沙,计算(鲲鹏/昇腾)方向 硕士 + 两年对口经验,D3 是正常档位。他没往上冲,也没被压。 出结果那天他跟我说:"我最后悔的不是没早点投,是那两年我连查都没查过,就信了一句话。" 他自己总结的三句
- 别让别人一句话替你决定两年 —— 说那句话的人没去过,也没替你承担过后果
- 面试官不问你发了几篇论文,问的是模型跑起来之后发生了什么 —— 精度掉了你怎么查、数据从哪补,这些只有做过的人答得出来
- 基础的题别靠工具 —— mAP、BN 推理这些我天天看工具输出的数,真被问到就露怯了,这是我最亏的地方 最后照例把门槛说清楚,免得白激动:OD 是社招,必须已毕业、有毕业证学位证(学信网可查),27 届和还在读的同学暂时投不了,等拿到毕业证再来找我。
我是帮他看方向、陪他过流程的 HR,坐标科锐国际。方向是全覆盖的:云计算、终端、计算(鲲鹏/昇腾)、海思芯片、数据通信、无线、光产品、云核心网、GTS、数字能源、智能汽车、2012实验室、质量与流程IT;base 有西安、深圳、东莞、杭州、南京、北京、上海、成都、武汉、苏州、长沙、济南十二个城市。定级按 D1-D5 走、对标大厂 13-17 级,看机考和面试表现一起定,不是一刀切。 如果你也是做算法、做视觉、做模型落地的,别自己先给自己降一级。 评论区把你的情况发我:现在做什么 + 几年 + 是训练侧还是部署侧 + 意向城市 + 是否已毕业,我一条条回,告诉你这个方向有没有对应的岗。 不方便公开的私信我,报「姓名 + 方向 + 城市」,我帮你看匹配的方向和大概档位。 「算法方向一面高频题 + 模型部署落地问答清单」我整理了一份,评论区扣 1,私信发你。 这个系列还有 C++ / Java / Python / Go / 测试 / 嵌入式 / 前端 / 数据通信方向的上岸复盘,见我主页专栏《他们怎么上岸的》。
本篇目录
当前问题0114
- 01
给输入尺寸、kernel、padding、stride,现场算卷积输出尺寸
- 02
感受野怎么算,两层 3×3 和一层 5×5 的感受野谁大、参数量差多少
- 03
BN 在训练和推理时分别做什么 —— 他在这儿卡了
- 04
dropout 训练时要除以 keep_prob,为什么;推理时为什么不除
- 05
过拟合怎么判断,除了加数据还能怎么处理
- 06
目标检测里 anchor-based 和 anchor-free 的区别,你实际用过哪个
- 07
IoU 怎么算,NMS 的流程讲一下
- 08
mAP 具体怎么算,AP 和 mAP 是什么关系 —— 他答得含糊
- 09
交叉熵和 Focal Loss 的区别,样本极度不均衡你怎么处理
- 10
为什么要做 INT8 量化,量化之后精度掉了你怎么救
- 11
模型从训练框架到边缘设备上跑起来,中间要过哪几步
- 12
手写题是 NMS:给一组框和置信度,写出完整流程。
- 13
模型在你这边测试集上 98%,上线到产线只有 80%,你怎么查?
- 14
为什么想换、能不能去长沙、有没有读博打算、期望薪资、家里什么意见。