我的第一次面试 —— 腾讯 AI安全 一面总结
前言
在校两年半,没经历过面试的毒打,第一次面试给了腾讯,周二晚上学长帮推的简历周三下午就打电话来问周四晚上有没有空面试。那天下午还在赶着数据库的实验报告,脑子有点转不过来就说了有空,然后仔细一看好像前两天刚抢了节课,正好是周四晚上 orz,算了算了,翘了,周五再去蹭两节,面试重要。
emmmm。。。从来没面过试,咋准备呢?仔细想了想,面试官肯定会问简历上的那个项目,毕竟还是有些对口的,时间有点久远,就叫了罗大佬来帮忙复盘一下。复盘项目的时候,又仔细想了想大概面试的时候会问些啥,罗大佬叫我去看看别人的面经。好的,谷歌“算法工程师 AI 安全”,打开几个页面,emmmmmmmm。。。。第一个问题,不会。。第二个,不会。。第三个,还是不会。。。。罗大佬顺便给我来了个模拟面试。。凉了啊,怎么感觉自己好像啥都没学过一样的。。。然后周三晚上,就先把自己之前写的相关的博客全过了一遍,再把这学期上机器学习课写的所有算法再过一遍,然后就是不断的刷网上的面经,我也不知道周三晚上几点睡的,周四早上8点半起来接着补。。除了吃饭和中间两节课,基本都在补之前学过但没注意到的或是忘了的知识点了。
然后就是周四晚上的面试。。。开始复盘
复盘
- 自我介绍(对,从周三晚上开始还一个很重要的事就是准备自我介绍。。好难啊,面试官还顺便问了问我学这方面多久了,差不多1年了)
- 介绍一下简历上的那个项目(我那个项目名称是“基于流量特征聚类的C&C域名检测方法研究”,便介绍面试官边打断问些细节什么的,其中问了下为什么用层次聚类,其它聚类方式用了没,我回答说试过 k-means ,但 k 值的选取比较麻烦,然后面试官告诉我 k-means 的 k 可以大致估算出来的。。orz。。项目里面有块涉及深度学习,面试官好像比较感兴趣,然而那块不是我做的,我对深度学习不是很熟,然后后面几次面试官想问深度学习方面的问题也都没能问,还是自己太菜了,哭了,考完试就开始恶补深度学习 orz)
- SVM的目标函数(愣了一下,就说原始目标为 \(min \frac{1}{2} \frac{1}{||w||^2}\) )那这里为什么是二分之一知道吗(之前推公式的时候纠结过,当时得出的结论是方便求导,推公式的时候多思考思考还是有点用的)
- 介绍下决策树(想了一会儿怎么说,组织语言有点难),熵的公式
- 集成模型中GBDT的原理(我当时说是拟合残差(因为看好多人都这么说),但面试官说不太对,叫我回去好好再看看,我又补了句或者说是负梯度,就有点懵),还知道其它什么集成模型吗(RF,随机森林,又稍微介绍了下随机森林)
- 如果出现过拟合了,该怎么办(第一反应就是加正则化,L1正则、L2正则,好了场面开始尴尬)那L1、L2正则都起了什么作用能说下吗?(emmmm。。。。。起了什么作用。。什么作用。。gg。。。。emmmm,这个具体细节有些忘了。。)那行,接着说其它办法吧(然后说了K-Fold 和 加数据)
- (可能是因为说到了K-Fold吧)那说下你知道的模型集成 emsemble 的方法(说实话我一开始没听清问题,但听到了集成,稍微了愣了下,在想刚刚不是问过了吗,但又听到了emsemble 就知道是问融合,然后就打了下知道的方法)
- 看你简历上写了那么多比赛的获奖,那挑个你熟悉的比赛讲讲吧(我想了想,就挑了 kaggle 上 IEEE 的那个比赛介绍了下,不过好像主要还是特征工程,就没有面试官比较想关注的点,于是后面作死说了对 V 那组特征的处理方法,先通过相关性筛选掉一部分,然后再用PCA)怎么通过相关性筛的,采用的是什么相关性(gg。。。我当时用的是 pandas 里面的 corr 函数,没了解里面是啥相关性,感觉是线性相关性,但到底是啥。。说了句可能是协方差,感觉好像不太对。。。)稍微尬了会儿,那说说 PCA 吧(龟龟。。。上周上课老师才讲过 PCA, 回来还没怎么看。。有点忘了,也不知道咋组织语言。。。又 gg )
- (这里开始经受暴击)那看你简历上写着熟悉 TensorFlow,那问问你计算图的概念吧(我死了。。。想说自己熟悉的是TensorFlow 2.0,1.x 版本一直没学,只是能大致看懂,真正开始自己用 TensorFlow 开始写代码还是前段时间答辩回来装了 2.0 GPU版本之后开始的。。。考完试补起来)
- (暴击x2)你这还写了个熟悉shell,那我问你个简单的吧,字符串分割要怎么做(我回去一定马上改简历,以为自己用 shell 写了个文件转移的代码就算熟悉了,真是没经过毒打。。然后场面又尴尬了)
11.那再问问你 python 里的 yield 这个关键词吧(开始以为又要死了,突然想起来好像之前看哪个论文的代码的时候看到过它,幸好当时查了下,算是勉勉强强答上来了)
12.(暴击x3)看你刚刚提到之前有做过 ACM, 那问你一道算法题吧(当时想的是完了,成功给自己挖了个大坑,自从不打 ACM 以来,一年半没怎么刷过题了,前不久的谷歌机器学习冬令营还因为笔试题做的不太好给刷掉了 orz)两个有序数组,合并,要求时间复杂度、空间复杂度尽可能地小(emmmm。。好像还好?跟一开始想象的不太一样,这不就是归并排序的最后一步嘛?不对不对,空间复杂度尽可能地小。。。。再建立一个数组时间复杂度已经是很小了,但空间复杂度肯定还不满足要求,咋做。。。咋做。。。orz。。算了,先回答个最简单的吧,回答完之后确实是跟自己想的一样,空间复杂度还不满足,又想了几分钟,问了句,这个数组是不是变长的。。面试官说是的,想到变长也就差不多了)
13.再问问你以后的考虑是怎么样的,如果选择的话机器学习和数据挖掘会选哪块(我当时回答的是如果按目前兴趣来看的话会选数据挖掘)但是我们这个岗位可能更偏研究一些(我当时又补了补,就是更偏向于落地,要让做出来的研究能够落地,做那种能有实际价值的,balabala 地又讲了一些)那你后面要不要读研(可能因为刚刚讲的时候说到了有跟导师。。然而。。能保研肯定想读地呀。。。然而没法成绩保研 我太菜了.jpg)你不是图灵班的嘛,保研还有问题吗?(暴击x4,学校成绩上只保 15 个人左右,然后图灵班总共有31人。。。。)
14.那我的问题完了,你有什么想问我的吗
我就先问了问面试官对我这次面试的评价,毕竟是第一次面试,还是想知道自己有哪些不足,然后后面回去补。主要就是深度学习掌握的程度不够,考完试马上就去补 orz。。。然后又问了问他们具体的研究方向,听了之后感觉还是有点意思的,但是好像目前水平还不够哇。。
小节
面完试之后看了看时间,接近一个小时,周三晚上罗大佬跟我说面试时间一般45分钟到一个小时,我当时人都傻了,想了想自己的知识储备,似乎二三十分钟就可以结束了呀,那场面岂不是一度尴尬???面完试自己感觉还好,起码比自己预想的要好很多了,不知道面试官具体是啥感想。感觉面试官人很好,尽量避免了问会让我自闭的问题, 说是一周之内出通知,感觉自己能过得几率不大。。后面继续努力了,考完试(年后,最后一门机器学习 31 号,考完跨年,23333)后开始高频率更新博客,顺便改简历。。。。