字节跳动『数据科学岗』面试都考点啥?(含思路+备考建议)
本篇,就以字节面经作为切入点
本文结构速览:
一、SQL题
二、机器学习与概率论
三、AB实验
ps.文末有备考Tips~
一、SQL题
▌面试真题1
考查窗口函数中的序号函数
-
ROW_NUMBER()函数会依次进行排序且序号不相同
-
RANK()函数会依次排序如结果一样序号相同且会跳跃排名
-
DENSE_RANK()会依次排序如结果一样序号相同且不会跳跃排名
select course_name ,student_name ,score ,ROW_NUMBER()over(partition by course_name order by score desc) AS `row_number` ,RANK()over(partition by course_name order by score desc) AS `rank` ,DENSE_RANK()over(partition by course_name order by score desc) AS `dense_rank` from course_score ;
Tips:
为方便大家练习,提供表数据集
drop table course_score; CREATE TABLE course_score (course_name varchar(45) ,student_name varchar(45) , score INT ) ; INSERT INTO course_score (course_name, student_name, score) VALUES ('英语','张三',80) ,('英语','李四',70) ,('英语','赵五',90) ,('英语','高六',60) ,('数学','张三',70) ,('数学','李四',90) ,('数学','赵五',90) ,('数学','高六',40) ;
▌面试真题2
假设一个表有一列数字1,2,3,4,5,如何转成一行
SELECT max(case when number=1 then number end) AS is_number1 ,max(case when number=2 then number end) AS is_number2 ,max(case when number=3 then number end) AS is_number3 ,max(case when number=4 then number end) AS is_number4 ,max(case when number=5 then number end) AS is_number5 FROM table_number
Tips:
为方便大家练习,提供表数据集
CREATE TABLE table_number (number int); INSERT INTO table_number(number) VALUES (1),(2),(3),(4),(5);
二、机器学习与概率论
▌面试真题1
随机森林和XGBoost的区别是什么?-
随机森林和XGBoost在树生成的原理上存在差异
-
在避免过拟合问题上的处理也存在较大差异。
利用随机采样,对数据样本和特征分别进行抽样,训练出多个树分类器,每个树的生产相互独立。为了避免过拟合:
-
对训练样本数据进行有放回的抽样,生成K棵分类回归树
-
假设特征空间有n个特征,每棵树的节点处随机抽取m个特征(m < n)
-
每棵树最大限度生长,不做任何剪枝
-
通过多棵树组成森林,分类结果按树分类器投票多少决定
XGBoost原理可参考 -》『六哥主页简介内以前文章:XGBoost原理解析』
XGBoost本质可以理解为GBDT算法的改进,为了避免过拟合
-
借鉴了随机森林的做法,支持列抽样,不仅能降低过拟合,还能减少计算
-
在目标函数中加入了正则项,用于控制模型的复杂度
-
先从顶到底建立所有可以建立的子树,再从底到顶反向进行剪枝,这样不容易陷入局部最优解;
-
不仅使用到了一阶导数,还使用二阶导数,损失更精确,还可以自定义损失函数;
▌面试真题2
主成分分析的原理以及应用?
★参考答案
① 主成分分析的原理:『六哥主页简介内以前文章:【数据分析岗】机器学习(二)』
② 使用场景
-
维度灾难:也就是变量多,在训练集保持不变的情况下,使用的变量越多,待估参数就越多,学习量上升、学习效率下降。
-
变量之间的相关性高:变量之间的相关性高,说明数据是有冗余的,数据中的信息是有重叠的。
③ 业务场景举例:
-
人脸识别
-
人口统计学
-
数学建模
三、AB实验
▌面试真题1
现在抖音在推荐模块的底层推荐算法进行了优化,预计短视频的完播率会有明显的提升。针对这个问题,如何进行验证?
可以通过AB实验进行效果验证。
▌面试真题2
针对这个问题如何进行实验构造?介绍一下你检验的过程
针对打开抖音推荐模块的用户进行随机分组
然后通过假设检验进行验证。
① 实验设计:
-
对照组:老推荐算法模型。
-
实验组:新推荐算法模型
② 建立假设:
-
原假设H0:实验组和对照组的人均完播的视频数量无差异。
-
备择假设H1:实验组和对照组的人均完播的视频数量有差异。
③ 选择检验统计量
-
假设每个用户的短视频播放相互独立,根据中心极限定理可知,实验组及对照组的人均完播的视频数量均服从正态分布,根据正态分布的可加性,可得到检验统计量
④ 选择显著性水平
-
一般选择第一类错误5%是业界最常用的标准。接下来将两组样本的观看时长均值、方差、样本量计算出检验统计量z中,计算出z的取值结果。
-
当|z|≥1.96时,认为在第一类错误5%的情况下,新推荐算法对用户人均观看时长有差异。
-
当|z|<1.96时,认为在第一类错误5%的情况下,新推荐算法对用户人均观看时长无差异
▌面试真题3
视频的完播率,可以通过沿用前面的检验统计量的构造思路码?
不可以。实验组和对照组的完播率计算的样本不满足样本独立性,所以实验组和对照组的完播率不服从正态分布。
▌备考Tips
除常规对简历进行深挖以外
字节『数据科学岗』相比一般的数据分析岗
对机器学习模型、因果推断原理要求比较高
可以看看下面的校招数科岗JD要求:
每天线上会同时运行大量实验快速验证、迭代策略
所以日常工作中会接触到大多因果推断的工作内容
因此无论是在JD要求上,还是面试的时候
也会着重考核AB测试相关的知识
建议大家务必要对AB实验原理进行熟练掌握
学会举一反三,归纳、演绎变体考法
争取做一题,会一类,提高备战效率
以上AB实验面试真题还可衍生其他考点,例如:
- 该实验的指标如何选取?
- 实验周期如何确定?
- 如何确保实验和对照组用户在测试前无差异?
- ...等等