作者:CHEONG
研究方向:机器学习和知识图谱
公众号:AI机器学习与知识图谱
前言:若需获取本文全部的手书版原稿资料,扫码关注公众号,回复: 字节面经 即可获取。
原创不易,转载请告知并注明出处!扫码关注公众号【AI机器学习与知识图谱】,定期发布知识图谱,自然语言处理、机器学习等知识,添加微信号【17865190919】进讨论群,加好友时备注来自CSDN。
本文分享八位硕博大佬秋招字节之旅,除了面经之外,也给出了许多中肯的建议,文末有非面经之谈,小道消息谨慎食用。
一、博士大佬W
1、 自我介绍
主要包括:姓名年龄,本科,硕士,博士院校,保研考研,研究领域,paper和项目总体情况,预计毕业时间,是否达到毕业要求。
2、项目介绍
介绍2-3个你认为重要的; 主要要点: 出发点,问题难点,contribution, 输入输出,模型重点, 自己工作占比,最终的结果。
注意事项: 一定要提前算好内容,要有逻辑条理,分点介绍。因为紧张,说不出来,或者拼命说很多细节导致超时,都是不可取的。
3、算法基础
1)Word2vec Hierarchical Softmax原理
2)BERT模型架构,怎么预训练,怎么feature based/fine-tune
3)逻辑回归原理公式和损失函数,以及LR推导
4、代码面试
1)计算两个字符串编辑距离(最长公共子串+递归)
2)一个二叉树,转成单向链表,不能申请新变量
5、开放性问题:
1)你最近有没有读论文,挑一篇你最喜欢的聊一聊
2)针对你项目里面的“XXXX”方法,现在大家都有什么新的方法吗?(1,2问题,看你是否与时俱进,关注新成果)
3)你做研究,你的idea都怎么想到的(看你的工作习惯,有没有团队合作经验)
4)你觉得现在字节的头条,抖音,西瓜视频,哪里会用到搜索,还可以在哪里改进(看你有没有关注他们的产品)
6、提问环节
1)你还有没有什么想问我的?(只要不犯傻去问工资,都问题不大)
二、硕士大佬A
1、自我介绍
2、 项目介绍
1)介绍一个research项目,由于涉及到GNN,问了很多GNN的细节
² 手写GCN
² 手写GAT(实现一个GNN,需要哪些参数要学习?)
² 如果图是动态变化的,怎么用GNN?
² 在你的model中GNN的输出用来干嘛了?
2) 介绍其中一个工程类项目
² 任务是什么,整体的流程,特征的数量
² 用的什么损失函数?交叉熵
² 二分类可以用MSE损失吗?
² 为什么不可以?梯度消失
² 为什么会梯度消失?推导公式证明
² 你这个公式,什么情况下会梯度消失?
² 用的什么模型?XGB如何选择特征的?
² xgb是用的CART吗?
² 你做实验没有去看xgb的特征吗
² 返回特征的函数源码你没有看吗,你应该看下他怎么实现的
3、算法基础
1)RNN的缺点
2)RNN和LSTM这类模型是怎么做BP的,和普通的dnn的区别是什么,推导一下
3)偏差,方差和误差的区别和联系
4)boosting和bagging的区别
5)GBDT原理。追问:负梯度的概念是什么,为什么用负梯度
6)GBDT 叶节点权重怎么算
7)GBDT 单调性约束怎么实现的
4、代码考察
1) 找一个排序数组中某个数第一次出现和最后一次出现的下标
2) 去掉字符串中的多余空格
3) 查找二叉树中两个节点的最近公共祖先
4) 二叉树的中序遍历转为双向链表,空间复杂度要求O(1)
5、开放性问题
无
6、提问环节
1)有没有什么建议
2)你们组的技术栈
3)你们组的业务
三、硕士大佬B
1、自我介绍
2、项目介绍
1)介绍一个工程项目中用到的相关模型
² 解释Bert, Bert好在哪里
² 解释HAN模型,为什么在你这个项目上HAN模型好用
² ELMO模型和Bert模型的比较,position embedding,sentence embedding, mask embedding如何拼接的,position embedding细节
2)介绍另一个项目中用到的词向量预训练相关模型
² Fasttext模型为什么比word2vec快,隐层怎么处理的
² 介绍了词向量预训练模型 Word2vec\ Glove\ Fasttext\ Elmo\ Bert\ Flair,各自特点和区别
² 在预料中有些词比较稀疏又想学好的情况下,使用word2vec时如何选用cbow/skipgram,hs,ns
² Word2vec的负采样和分层softmax介绍,负采样的负样本是如何采样的,Hierarchical Softmax原理以及树的节点是什么
3、 算法基础
1)优化函数有哪些,比较他们的优缺点
2)Transformer中为什么要除以根号dk,为什么能加快收敛速度,为什么加了根号
3)BN和LN的区别,以及BN一般怎么用,LSTM中有没有用BN
4)CNN中给定输入数据维度[c,w,h],卷积核[k,k],则输出维度,如何padding=p,输出维度是什么
4、代码考察
1)给定一个矩阵里面只包含0和1两种数字,给出每个单元距离最近的0的距离,上下左右都算作相邻,相邻的距离为1
2)一个无序数组,数字代表挡板的高度,挡板没有厚度最多可以盛多少水,如[3, 1, 2] 输出:4
3)S1, S2两个整数数组 已经从大到小排序。输出最大的K个数, 时间复杂度: 通过k/2的思想, 直到把k为到1为止
4)S1, S2,…, Sx整数数组 已经从大到小排序。输出最大的K个数, 时间复杂度
5)给定一个可包含重复数字的序列,返回所有不重复的全排列
6)求二叉树的宽度
7)“abcccbda”->“ada” 去除字符串的重复字符
5、开放性问题
1)一个小木棒拆成三段,能组成三角形的概率
2)你对字节和快手这两家公司怎么看,谈谈你的想法
6、提问环节
1)对我这次面试有什么建议
四、硕士大佬C
1、自我介绍
2、项目介绍
1)介绍一个比赛类项目
² 模型怎么判断过拟合,过拟合了怎么办
² 为什么召回的数量级小,排序模型的效果好
² 在这个项目中遇到的最大的困难是什么,怎么解决的
3、算法基础
1)介绍lr
2)lr和svm的区别联系
3)计算cnn的参数
4)对BERT的理解
5)对Attention的理解
5)AUC,Recall等评价指标
4、代码考察
1)第k大的数
2)链表找环并证明
3)全排列 -> 子集全排列
4)用设计数据结构计算四则运算结果->二叉树
5)给定两个unordered数组,数组中每个元素都包含一个int和一个bool,bool表示这个int数值是否应该被delete,每个元素的值可能会出现多次,和不同的状态,将两个数组合并成一个,要求:合并后返回一个数组,每个元素只能出现一次;不能包含曾经被delete过的元素。
5、开放性问题
1)搜索框输入联想
2)如何评判内容审核方案的有效性
3)介绍一个自己觉得理解好的模型
6、提问环节
五、硕士大佬D
1、自我介绍
2、项目介绍
1)介绍一个工程项目中的模型
² 模型参数需要一个内存、反向传播需要一个内存,在使用adam优化器是,需要多大内存的空间
² 为什么GPT-3 下游任务可以不做finetune, 其他模型能不能实现这样的效果
² 分类模型,softmax输出的反向传播的公式
² 针对项目一些相关的细节讨论
3、算法基础
1)交叉熵、信息熵的公式
2)EM算法
3)解决过拟合的方法
4)Batch Normalization 计算哪个维度的均值、方差
5)FastText模型
6)word2vec如何做的负采样
7)决策树的信息增益公式
8)传统的词向量、动态词向量都有哪些
4、代码考察
1)有一串数字, 调整其中的两个数字,让结果尽可能大
2)给一个概率分布,需要生成k个数,希望这k个数的任意连续子集都尽量接近这个分布
3)二叉树两个节点间的距离(路径长度)
4)算法题 接雨水
5、开放性问题
6、提问环节
六、硕士大佬E
1、自我介绍
2、项目介绍
1)介绍一个工程项目中的模型
o BPE 分词怎么做的,对比 WordPiece 呢?
o 如何扩充样本?Sentence 如何变成向量;
o 预训练模型,新的模型例如 XLNet、RoBert 是否了解
3、算法基础
1)Lightgbm,GBDT,Xgboost原理,XGB残差怎么用一次和二次梯度求,分裂点怎么求,思想原理是什么。XGB实际使用中重要的超参数,你们比赛中用的目标函数是什么,为什么lightgbm速度更快,其并行计算如何实现
2)Bagging和Boosting的区别,谁是更关注方差 ,谁是更关注偏差
3)如何防止过拟合
4)1*1的卷积核 有什么用
5)Max pooling 梯度传导
6)如何防止梯度消失,为什么会有梯度消失
4、代码考察
1)最大连续子数组和
2)(0,0) 到 (m, n) 只能向上和向右,有多少种方案,带有障碍物呢?
5、开放性问题
无
6、提问环节
无
七、硕士大佬F
1、自我介绍
2、项目介绍
1)对一个实习项目介绍
o 对一些技术细节提出疑问
o 知识图谱相关的理论
o DeepWalk 模型原理
3、算法基础
1)RNN、Transformer、BERT 之间的改进;
2)DNN 解决过拟合的方法;
3)词向量技术进化路线;
4)Word2vec实现原理:两种方法,两种负采样;
5)决策树,熵的公式、如何分裂,如何剪枝,回归树、分类树的做法
4、代码考察
1)rand()产生 0~1 之间的数,如何从 m 种取 n 个数
2)一个数组,存在一个数只出现一次,其他数出现 k 次,找到只出现一次的数
3)二叉树的最大路径和
5、开放性问题
1)给出 6* n 的方块,用 1 * 2 或者 2 * 1 的方块覆盖它。不要求求出具体的个数,证明该方法是多项式级数还是指数级数
2)平时实习和mentor 怎么沟通的,频率多少
6、提问环节
1)贵公司的该岗位主要做什么业务
八、小道消息,尽情食用
-
关于面试结果: 字节会在每一轮面试对面试者打分,最后package会根据每一轮的打分来定。分值设定如下:
2分: 不通过
2.5分: 不通过,但有机会,看后面成绩,以及可以校招再试试
3分: 基本通过,HR再看看
3+分:通过,HR可以争取
3.5分:通过,优秀,HR极力争取
4分:行业内顶级,一定要招来
一般3+会拿到普通offer
-
关于面试流程:一般分为四面,一面二面主要问你的项目,和代码能力,三面是leader面你的综合能力,开放性问题,四面是HR面。如果会增加五面的话,是决定是不是sp或者ssp
面试主要比重: (博士)项目描述70%, 代码能力20%, 10%开放性问题回答
面试主要时间: 项目描述:20分钟(建议自己准备15分钟,因为面试官会打断,提问题)
代码: 25分钟一题(变态面试官会弄两题)
-
代码写不出来怎么办:
1)完全写出来,运行出来最好
2)两道题,时间不够,在保证会的那道题完整写完的基础上,另一题给出思路,给到啥程度看时间而定
3)如果写不出来,注意一下加分项:
1)你的思路是否对了(决定性的)
2)没写出来的部分给出伪代码或者思路
3)时间允许情况下,有注释
4)代码风格
5)是否有完整的输入输出, 完备的特殊情况考虑
6)实在写不出来,可以申请换题
4.准备工作:
1)与所投部门相关的前沿工作和实际应用工作
2)头条,抖音,习惯等字节产品,你所投部门在其中的应有,以及你的思考
3)算法code,常见的数据结构(业务部门喜欢考)