数据人的秋招面经小总结(碎碎念系列整合版)
不知不觉中,互联网秋招惨淡元年悄然拉开了序幕。在女友的提醒下,在开学前开始了秋招投递,刚开始简历投递之后的悄无声息。但寂静并没有太久,感谢信便如雪片般飞来。随着时间流逝,愈发感到今年招聘市场的寒气逼人。除了感谢信,只有进度中的“简历待查看”。时光如流矢般划过,纵使如此,时间流逝的速度也赶不上简历被挂的速度。
和舍友笑谈说,现在可能是铜九铁十了,秋招可能要从七月开始了(笑)。调侃归调侃,事实上回顾所投递的简历,80%以上都是在9月投递的,虽然当时没有引起任何波澜,但后来发生的几乎都是那时候埋下的伏笔。和其他事一样,简历也是投递赶早不赶晚。早准备总归是没错的,笨鸟先飞嘛
闲言少叙,书归正文。今天来聊一聊数据的面经。我投的岗位主要是以数据为核心的岗位,数据分析、数据开发,还有一些基于数据分析的游戏用户分析等岗位。除此之外还有些AI相关的岗位,但与我们今天的数据主题不太相符,故暂按下不表。在这里先分享一下我的面试思路,不一定对,只是个人观点。如有不妥之处,欢迎诸位看官在评论区批评指正,共同学习进步。
首先,我们明确一点,我们面的是数据相关岗位,在我们面试一开始做自我介绍的时候,就要围绕这方面的能力进行展示,当然也要结合岗位的具体要求。因为即使是同一岗位,不同公司因为技术栈不同、实际业务需求不同等原因,对其要求也大相径庭。基于此,我们在做项目介绍时也应当有所侧重,重点突出岗位需求中cue到的部分,这也很有可能是面试官较为感兴趣的部分。
接下来,当意识到这一点的时候,在这块我们可以有意识的“埋点”,在介绍项目时,特意在某个他可能感兴趣的地方戛然而止(引起他的好奇,他稍后大概率会追问这块的内容),在面试官提问的时候,将我们早已准备好的内容娓娓道来,这与你直接说出来的效果还是有很大不同的,这会是你面试过程中的闪光点。
很重要的一点是,对项目中的内容我们一定要熟练。建议做一个思维导图,每次面试之前串一下,理清项目的逻辑,同时对于细节也做一定的回忆。自己简历上写的东西,一定要经得起推敲、扛得住问。不建议在项目方面造假,自己没做过的项目两轮提问下来破绽百出,真的没必要。如果缺少项目经历,可以考虑打一打天池的比赛,认可度也挺高的,同时也能提高自己的数据实操能力,还蛮推荐的。具体讲项目的时候,可以找身边的一个小伙伴给他讲一讲,看看他会提什么问题,起到模拟面试的作用,帮助自己去查漏补缺,提高自己对项目的了解程度。
下面来分享一些具体的面试题目。为了方便看,我按照题目的类型整理了一下,主要可以分成四大类:
1.统计学相关(被问到统计相关内容还挺多的,不知道和我的统计背景有没有关系);2.SQL相关 ;3.Python相关;
4. ML&DL相关
1.统计学相关
在BYD和阿里88的面试中,统计学相关的问题被问到的是最多的,这两个面试也是时间比较长的,均超过1小时,阿里二面更是面了一个半小时,把我电脑活生生面到关机(吐槽一下阿里会议,这个App功耗好大啊,我之前腾讯会议面了一上午都还剩20%,这个一个半小时直接关机了,再回去时候面试官都退了)下面的主要是阿里问的,BYD问的基本可以包含在阿里的里面(没有专门标注的就是只有阿里问的)
(1)大数定律与中心极限定理(定义、二者的关系、应用)(阿里、BYD)
(2)贝叶斯(阿里,BYD)
(3)正态性假设及检验方法(作为一个统计人这个竟然答错了,实在惭愧)
(4)相关性检验
(5)bootstrap方法(定义、实现方法,使用前提,方法何时失效。这个可能不太具有普遍性,因为这个算是从我比赛中内容引申出来的)
2.SQL相关
SQL作为数据人的必备技能,在面试中被问到的概率是相当高的 询问时间最长的还属BYD和阿里88,毕竟这两个的面试时长都很久(BYD一个多小时,阿里更是超过一个半小时)相应的内容自然也会比较多。
(1)会SQL吗,掌握程度呢?
这个大家按照自己实际情况回答就好,我猜不同的回答可能对应后续不同的问题。我SQL水平本身一般般,本科时候学过,研究生期间用过一丢丢,也在牛客和力扣上刷了些题,问sql水平怎么样一般也就如实回答(怕牛皮吹出去自己圆不回来)
(2)简述SQL中的多表查询的连接方式以及他们之间的区别
多表连接一般常见的就是这几种:内连接、左连接、右连接以及交叉连接,这个具体想必大家都很清楚。需要注意的地方就是可以组织一下语言。表达的时候如果能更条理,显然会给面试官留下更好的印象。
(3)简述SQL中的语句书写顺序和执行顺序
书写顺序大家都很清楚,就是常规的 select-from-where-group by-having-order by 但执行顺序你是否留意过呢,我们一起来回顾一下吧 from(阐述对哪些表进行操作)-where(选出想要的记录)-group by(对选出的记录进行分组)-having(对分组后结果进行筛选)-select(选取需要的列)-order by(确定查询结果的排序规则) 这个确实需要经常回顾,我学的时候确实准备过这块,但因为好久没看,被考到的时候还是没答出来(遗憾脸.jpg)
(4)开放性,比如面试过程中,面试官描述一个数据场景,开个屏幕共享,现场手撕代码
在阿里的面试中最后环节就是场景描述+手撕代码。这种怎么说呢,也很难说提前去准备,因为这个用户场景的提出是与你所面试的公司或者部门的具体业务很可能是息息相关的,唯有提高硬实力,加深对SQL的理解和熟练程度,窗口函数一定要熟练(血泪教训)。
3.Python相关
其实在面试中我被问到Python的次数并不多,我寻思着,可能是这东西确实不太好问,我就把我被问过的可能对大家的参考意义也有限,这边大家就随便看看,复习一下,就当图一乐了
(1)两个集合,求这个集合的交、并集(好像是哪个银行?具体记不太清了,时间比较久了)
设两个集合为S1和S2,他们的交集可以用S1&S2得到,或者是S1.intersecrion(S2)也可以;并集可以用S1|S2得到,或者是S1.union(S2);在S1中而不在S2中的元素可以用S1-S2表示;在S1或S2中的元素用S1^S2表示 (我当时答的时候,只记得有个函数是做这个的,但具体是哪个函数来着真的想不起来了,一直在那说“那个函数”还挺尴尬的)
(2)简述列表[ ]、元组( )的异同(这个好像是移动/联通中被问到的,具体哪家也记不太清了,嗐我这记性没谁了)
说来尴尬,当时面试官问的是:list和tuple的区别,我听成了list和cube(我的塑料听力啊~绝了)转念意向,可能是问的元组.....我当时主要是从元组的不可修改性阐述的,列表操作更为灵活,我们把不希望被改动的用元组来存储,反之则用列表balabala,现在来看,还可以从对元素的操作,增删索引等角度阐述,在CSDN上有大佬已经总结的很棒了,这里贴一个传送门,有感兴趣的小伙伴可以移步去学习一下https://blog.csdn.net/weixin_43883873/article/details/104939241
(3)浅拷贝深拷贝
在Python中,赋值其实就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。 浅拷贝(copy):创建一个新的对象,但它包含的是对原始对象中包含项的引用(如果用引用的方式修改其中一个对象,另外一个也会修改改变。深拷贝(deepcopy):把对象本身复制给另一个对象,使用对副本进行更改时,原本的对象不会变化。
4.ML&DL篇
(1)请简述机器学习中的评价指标(龙盈智达)
我首先想到的就是:《机器学习》中说到的那一套东西,准确率、精确率、召回率、AUC、ROC、F1-Scores,以及混淆矩阵之类的。自以为说的还算全乎(事实上确实还差蛮多),但并没有说出面试官想要的答案(面试官期待听到聚类的评价指标,我猜是因为银行业务分析会有这方面的需求)。 面试官:你说的都是二分类的,那么聚类问题的呢? 我:懵...呆住...立正挨打(做的项目大多数以分类为主,聚类的确实忘了) 如果我再遇到类似的问题,我会这么说:首先,说明三大类问题,分类、回归、聚类,再按照每类问题进行详细描述
分类:参见上面我说的 回归:MAE(平均绝对误差),MSE(平均平方误差),RMSE(均方根误差)、R方(以及调整后R方) 聚类:兰德系数(以及调整后兰德系数)、聚类纯度、F
(2)过拟合处理方法,以决策树为例说明(龙盈智达)
我:限制决策树深度(层数)、预剪枝、对数据进行适当处理,如去噪等,扩大样本量。 面试官:只有这些吗 我:想不起来了(我在此时还没意识到没有说后剪枝,一分钟后才意识到)
这块的话建议大家把过拟合、欠拟合多去翻一翻,不仅面试中会用到,对处理实际学习工作中遇到的问题也大有裨益。
(3)结合具体项目,问机器学习、深度学习方法的具体实现(一半讲项目的面试中都有遇到这个问题)
对于这种问题,我们需要把项目的前因后果,要做什么事简要先说明一下,先让面试官了解整个项目大致在做什么,再对于项目的细节进行阐述。按照先总体后部分的逻辑去说,整个描述显得会更有条理,对方听起来也不会太费劲(个人见解,仅供参考) 同时,在介绍项目的时候,可以加一些自己的思考。比如这个项目中的内容和你面试的这个公司的的关联之处,还可以表达你对这个项目的一些进阶想法。核心是向对方展示出自己独立思考和主动解决问题的能力,而不是仅仅停留在做一个工具人。
尾声
行文至此,也暂告一段落了。我暂时想到的数据相关面试过程中遇到的问题就这么多,如果以后再遇到或者想起来,在之前篇章中没有被提及的比较经典的或者具有代表性面试问题,会根据具体情况酌情加更。 小可才疏学浅,技能粗鄙,承蒙错爱,幸得诸位能人志士愿意听我胡言乱语,先谢过各位看官了在这里祝各位早日拿到理想的offer,诸事顺遂!
#数据人的面试交流地#