字节是效率最高的公司,学长帮内推简历之后没多久就收到通知约一面的时间,一面面完没几分钟,hr 就发消息说一面通过了,约二面的时间。这个体验比别的公司好很多,别的公司暑期,投完简历等笔试等一周,笔试完约面试再等一周,面完好久也不给结果就拖着。。。
一面
2022.03.31 晚 19:00
一、自我介绍
二、项目
- 介绍实习做的工作
- 训练的数据是从什么时候开始的?训练方式是从头重训?
- 你这个相当于是对模型做了优化,带来了 AUC 的提升,然后去填补了之前打不平降的 AUC,而不是不做改动去打平基线?
- 所以说为什么打不平这个实际上不好解释是吧?
- 是的,不过通过特征选择的工作,尤其是交叉项的筛选,参数量下降了一半多,然后 AUC 还有提升,说明原来的基线模型 AUC 高可能是存在过拟合
- MTL 你做的改动保留了 share 部分,那这部分不是还会存在参数干扰吗?
- 私有部分提取特性,share 部分提取共性,做 MTL 肯定还是会利用模型之间的关联性
- Gradient Norm 了解吗?
- 不了解。。。。。。
- MTL 各个任务的性能差异实际可能是数据量导致的
- 反问了下是不是例如 CTR 辅助 CVR 训练,面试官让说一下具体怎么做,说了下 ESMM or DBMTL,看过论文但没实际用过,不太记得了
- 介绍比赛
- 数据增强怎么做的?
- 训练集数据量、测试集数据量?
- 用的什么模型?
- ResNet 34
- 为什么用伪标签机制?
- 知识蒸馏的作用多大?
- soft loss 的权重设的多大?T 设的多大?
- 用了几个模型的输出投票,哪几个?
- F1 score 的定义/公式?为什么公式是这个形式
- 调和平均,P、R 是矛盾的指标,F1 score 是综合的指标
- 精确率、召回率的定义
- F1 什么时候比较大?没理解,面试官说这个问题不好问,过了
- F1 是二分类的,你这个三分类的 F1 是怎么做的?
- 分别计算三个类别的 F1 score,优先看 beta 类的 F1,再看beta-x 类的 F1,再看 alpha 类的 F1
- label smoothing 标签平滑了解吗?
- 不记得了
- https://www.zhihu.com/question/65339831/answer/985237960,防止过拟合,提高泛化能力
- 原本的标签 0,0,1,标签平滑也会把一部分预测概率分配到别的类别上,那和带温度 T 的 softmax 的效果你觉得有什么区别呢?
- 反问了下 label smoothing 怎么将概率分配到其它类别上?面试官说平均分配,我回答平均分配无法学到类间的相似性,而带温度 T 的 softmax,各个类别的概率输出是不同的,就能学习到类间的相似性。比如实际是 A 类,但是和 B 类有一定相似性,那么 B 类的预测概率应该比除 A 类外其他类别的预测概率高
- 以手写数字为例,4 和 9 的手写数字可能比较像,那么预测为 4 的概率是最高的,但是预测为 9 的概率也应该比其它类别高,这就包含了类间的相似性
- 温度 T 的作
- 温度越大,分布约平滑,信息量越大。最极端的情况,T=1 就是普通的 softmax,正确的预测类别的预测概率为 0.99,剩余很小的概率分配到其他类别上,那么就很难学习到类间的相似性
- 使用知识蒸馏对 loss 梯度的影响?
- 使用知识蒸馏加了 soft loss,loss 本身变了,对 loss 梯度的影响不清楚
- 使用带温度 T 的 softmax,输出更平滑,那么把正确类别的预测值也变小了?
- 使用 soft loss / 带温度 T 的 softmax,这个任务变难了还是变简单了?
- 变难了,因为还要学习相似性。原来是用的标签 0 0 1,那么就只要学习将正确类别的预测概率提升,别的类别的输出不用管。而使用带温度 T 的 softmax,还要学习类间的相似性,比如 B 类预测概率大,这种也要学习到
- sigmoid 和 softmax 做二分类的区别?
- 做二分类两个的公式能化到一样的形式。如果在实际网络中,用 sigmoid 只会输出一个值,即正类的概率,1 - 这个概率就是负类的概率;而 softmax 输出是两个值,分别代表两个类别的概率
- ReLU 的优缺点,解决了什么问题
- 解决了梯度消失的问题;缺点:神经元死亡问题
- 怎么解决 ReLU 的神经元死亡问题?
- Leaky ReLU
三、算法题一道
- [中等] 3. 无重复字符的最长子串 ,先说思路、时间/空间复杂度,再写代码
- CodeTop 中显示这题是字节频率最高的题目。。。
- 滑动窗口 + 哈希表存字符下标
- 解释为什么判断是否在哈希表中时还加了
window[ch] < left这个判断语句?
四、反问环节:
- 你们那边主要做些什么工作?
- tiktok 电商,海外的电商,推荐算法
- 转正机制/要求/时间节点
- 一般实习 2~3 个月有转正机会,最好是 3 个月
- 面试官问了实习时间(六月初),能干多久(如果能转正可以一直)
二面
2022.04.02 下午 15:00,面了一个半小时,感觉面试官很凶,压力贼大,心累。不知道字节二面是不是压力面
一、自我介绍
二、实习经历(字节的经历面字节真的很虚,你做的啥玩意面试官一问一清二楚。而且很多对方都不 care,只问了十分钟左右,你准备的东西他都不 care 不问,问的好多都答不上来。。。)
- MTL 优化的工作,类似 PLE?
- 模型用到的特征?
- 都是类别型特征?
- 有没有统计类的特征?比如用户点击了多少次之类的特征?
- MTL 优化这个工作 AUC 涨的挺多呀?
- 有关注 UAUC 的指标吗?
- AUC 的具体值是多少呀?
- CTR 模型的 AUC 能达到那么高吗?
- AUC 怎么计算的?
- 概率上就是正序对占所有正负样本对的比例?
- AUC 几何定义?
- ROC 曲线下的面积
- ROC 曲线怎么画的?
- 介绍一下 CTR 重训打平的这个工作
- 为什么重训打不平?
- 首先原本就存在这个问题并且没有解释,从我后来做的参数缩减工作来看,缩减参数后 AUC 反而提升了,所以原来可能存在过拟合
- 流式更新还是天级更新?
- 那流式更新的 AUC 和正常的 AUC 的计算有什么区别?
- 不清楚
- 公司 deepinsight 是怎么算 AUC 的?
- 不清楚
- sort 服务用的是公司里哪一套?
- 不清楚三连
三、比赛经历
- 介绍一些这个比赛,以及你是怎么做的?
- 知识蒸馏为什么会有用呢?
- 教师模型 soft label,能学习到类间的相似性
- 打断质疑,教师模型也用的同样的数据集,那没有额外的信息啊?
- 相较于原本 0 0 1 的 label,能学习到类间的相似性(没说完又被打断质疑了,心累)
- 数据量少小模型参数量就够了,大模型可能过拟合
- 有没有试过排除xxx的影响?不记得具体问题了
- 你做的这些哪些的效果比较好?
- F1 score 每一步都能提升一个点左右
四、其它知识点/八股(字节还保留着以前的面评,难顶)
- CTR 的损失函数的数学公式
- 二分类的交叉熵
- 最大似然怎么推交叉熵?
- 线性回归在拟合一个什么东西?
- 没懂
- 广义线性模型了解吗?
- 不了解
- 就是逻辑回归 sigmoid 之前的线性回归 z=wx+b,拟合的是什么?数学形式?
,因此
- 一开始没写成分式的形式,面试官又没给代码框,就让口述,我说
,面试官反复问了好几遍,说不对,我就怀疑自己算错了,又推了一遍写成上面的形式,说了,面试官又质问你为什么写成 -log 的形式???我推出来就这样啊,自己现场在纸上推,再口述结果给你,我咋知道你要啥最终形式???本来 sigmoid 就有个 -z 啊
- 你了解 GBDT/XGBoost 是吧?你了解 Transformer 是吧?
- 不了解 + 不了解。。。都是以前的面评的锅,之前日常实习面试简历写的了解这些,好长时间没看过了,都不记得了。。。
- 序列特征的处理知道吗?
- 不会三连 + 1,基线模型里有用到 DIN,但没有改动这部分,不太记得 DIN 的具体形式了(sum pooling -> 加权和)
- 在学校里,自己对推荐这块感兴趣吗?以后想继续从事相关的工作吗,还是无所谓呢?
五、算法题:前两道题让讲思路,最后一道写代码
- 说调用两次
rand7() - 1,分别代表行号row和列号col,对应一个 77= 49 格的二维矩阵,每一格代表数字 `num = row 7 + col,如果这个数值小于 40,那么直接除 10 取余 + 1,就得到 [0, 9],如果大于 40,则重复上述过程,再调用两次rand7()`。。。。。。 - 面试官问:为什么大于 40 又要重新调用
rand7()呢? - 面试官问:加入调用
rand7()要钱呢,怎么减少调用rand7()的次数? - 回答:第一轮如果 >= 40,则这 9 个数代表行号,再调用一次
rand7()代表列号,得到 63 个数,如果小于 60 则模 10 取余;否则再将剩余的 3 个数当作行号,再调用一次rand7()代表列号,得到 21 个数,如果小于 20 则模 10 取余,否则。。。。。。 - 面试官问:为什么能得到 63 个数
- 面试官问:一共用了几次
rand7()呢? - 回答:
- 用哈希表存储遍历过的整数的值和下标。遍历的时候查找 target - 当前数值,如果哈希表中存在则直接返回
- 面试官多次问:哈希表存的是?
- 答:key 是整数值,value 是下标
- [困难] 772. 基本计算器 III(leetcode hard 题,还是会员题,唉。。。)
- 面试官给的题目是实现包含 +, - , *, /, (, ) ,空格,数字的计算器
- 给了题目之后面试官就黑屏闭麦了,留我在这写。。。
- 写出来了,自己跑了个样例没问题,喊了下面试官回来看
- 面试官给的题目没写是整数除法,我就用了
double(leetcode 原题是说了整数除法的),埋坑了 - 面试官给了个样例
(3*4+87*7)*((33+44*55)),没给结果,我跑出来是 1.52331e+06,面试官说你这个答案差不多,但是精度不对,答案是 1523313,精度不对那答案就是错的,你再想想怎么改 - 回去看代码想了好一会没想出来
double精度有问题怎么改,跟面试官说我大概改不出来了,面试官就质问:那你是打算放弃了吗?。。。。。。 - 沉默了一会,面试官说那简化成
int吧,整数除法,不考虑小数,我就把代码中的double都改成了int,这个样例过了(面试官说简化成int,我就天真的真的改成int,没改成long long,又埋坑了) - 然后,面试官又给了个样例,
(3*4+87*7)*(33+44*55)*(99-43-222-212*33),也没给结果。运行了下,面试官说结果不对,就反问面试官正确答案是多少,结果面试官不说,就让我再改改代码。。。 - 于是把
int改成long long,运行之后,卑微地问面试官正确答案是多少,终于对了。。。
六、反问环节
- 面试官问有什么想问的吗,我感觉我早已心如死灰,说没啥想问的了,表现也不好。面试官说真没啥想问的吗,就勉强问了个你们都做些啥工作。。。
三面
2022.04.11 下午 14:00。当时二面完想着肯定挂了,没想到过了。三面问的压力就没那么大了,面试体验好很多
一、自我介绍
二、项目/实习经历
- 挑一段自己觉得有挑战的实习或比赛经历介绍一下
- 讲了实习做的第一个工作,重训打平
- 为什么重训打不平呢?
- 入职前就存在这个问题,且没有很好的解释
- 我做了这个工作后,缩减参数量,AUC 提升,A/B 打平,说明原来的基线可能存在过拟合
- 训练的时候看的是什么的 AUC?离线和线上的 AUC 可能存在 GAP,离线训练的 AUC 可能高估,线上 AUC 可能会降低?线上和离线的 AUC 差别大吗?
- 当时 AB 时主要关注 AB 指标了,没重点关注 AUC,面试官说需要关注这个
- 缩减了哪些部分的参数?
- 你们当时这个精排模型有多少人在做?
- 这个 CTR 模型就是我在做
- 模型结构是怎样的?
- 介绍一下你这里用的 NAS 的原理
- 怎么评估哪个结构效果更好?
- 就是每个子结构乘上一个概率,概率的大小就代表重要性
- Attention FM 介绍一下
- 写一下 FM 的 loss function,有 n 条样本 {
}
- 就是二分类的交叉熵损失
- 为什么交叉熵损失函数的形式是这样的呢?
- 逻辑回归,最大似然推导
- 上面的损失函数里
等于什么?也就是原始 FM 的公式?
- 你上面写的是一个线性模型,那值域?
- 应该加一个 sigmoid,
- 简化一下,逻辑回归
,怎么计算参数 w 和 b?
- 交叉熵损失
- 梯度下降法更新参数
- 求梯度
,即求
- 偏置 b 的更新同理,就是最后
- 交叉熵损失
- 你如果继续做之前的实习工作,还能做什么优化呢?
- 你的工作推荐的物料是什么?
- 关于装修攻略之类的图文、视频
- 商家和个人的文章都有吗?那会不会存在很多商家的文章,让用户觉得是广告呢?
- 当时确实存在这个问题
- 场景题:抖音的用户,但对于电商是新用户,应该怎么给他推荐带货的短视频 or 带货直播 or 带货商品?
- 新用户冷启动问题
- 本来就是抖音用户,应该有很多特征,可以用相似性做推荐?
- 面试官反问:但是加入我和你刷抖音的喜好类似,但是我最近买了一把椅子,我把这个推荐给你你会感兴趣吗?
- 可以先给用户推荐一些比较热门的,来探索用户兴趣
- 面试官反问:但是热门的可能是一些母婴类相关的,因为可能家庭主妇刷抖音刷的比较多,那么把这类视频推荐给你你会感兴趣吗?
- 也可以根据性别、年龄之类的特征,不同用户群体的喜好可能有差别,在抖音上关注的、喜欢的视频都不太一样,比如前面说的家庭主妇他们刷抖音可能也更喜欢刷母婴相关的,可以推荐同一类群体的热门商品给新用户
- 可以利用商品和用户感兴趣的抖音视频,做一个相似度计算之类的,类似 DIN 这种。或者可以根据和这个用户喜好相似的其他用户的历史购买记录,来和这个商品计算相似度
- 首先(初期)可以推荐多样性的商品(比如各个类别的热门商品)给用户,来探索用户的喜好,以便后续可以进行更好的推荐
- 面试官反问:那这个排序模型可以怎么优化呢,相较于通用的排序模型?
- 新用户冷启动这一块我不是很了解
三、算法题
四、反问环节
- 再介绍一下你们具体做的工作?
- tiktok 带货短视频的推荐、带货直播的推荐、以及类似淘宝首页的这种聚合的双栏的推荐(包含商品、短视频、直播)
- 转正的要求以及转正率?
HR 面
2022.04.12 14:30
- 自我介绍
- 实习什么时间可以到岗?
- 可以实习多久呢?
- base 地点选择在哪里?你倾向于去哪里?
- 介绍一下你印象比较深刻的一个实习 or 比赛经历
- 你实习时或者做项目时,当你遇到困难的时候,你的第一想法是自己解决还是找队员一起商量?
- 团队合作时,你更倾向于去做领导的角色吗?
- 更倾向于平等的相互沟通交流
- 如果你在团队工作中发现有的队员在划水,你会怎么解决?
- 你之前实习或者团队项目,在团队的融入上有没有遇到一些困难,比如意见上的分歧之类的?
- 如果来这边实习的话,你会有什么预期呢?比如说你想收获到什么,学习到什么?
- 你未来对自己的职业规划?(地点、岗位等都可以谈一谈)
- 你刚才提到之前在字节的实习体验很好,可以展开来谈一下具体哪些方面觉得体验比较好呢?
- 相处融洽,不强调上下级关系,面试流程推荐高效
- 你手上其它公司的 offer 或者面试进展?
- 你自己有更倾向于哪家公司吗?原因呢?
- 你其它公司面的也是推荐方向吗?
- 反问环节
- base:北京、上海、杭州都可以,暑期选择北京是 ok 的,后续实习转正也可以转到上海、杭州。北京的办公地点在海淀中关村
- 面试结果多久有通知呢?hr 面面完会有 offer 审批等流程,顺利的话 3 天左右会有反馈
End
2022.04.13 收到 offer 了~
字节效率真的高,是我投的最晚的大厂,但最早结束流程的,流程推进很快,如果不是隔了一个清明假期以及三面改约,应该还能更快。
