- gbtd和xgboost区别和优缺点?
https://www.jianshu.com/p/7c621813728c
https://www.jianshu.com/p/66ad2ee1558b
L1和L2正则化区别,为什么防止过拟合?
类别不平衡怎么解决?
Bagging和boosting?随机森林?
判别学习和生成学习分别右那些?
优化方法?Adam和sgd
遇到过拟合怎么办?
怎么调参?
- 自我介绍
- 项目和深度学习基础
- 我的网络一些细节,不展开
- 那你的网络跟xxx网络很像啊,你能详细说说xxx网络吗?(表示我根本没听过他说的这个网络,我还反问面试官那是个啥样的网络2333,因为我这个网络还没有发论文,我还挺担心撞idea的)
- 你网络里用了残差,说说残差;
- 说说你知道的对于网络结构的改进,比如卷积上的一些改进,或者训练方式上的trick,或者loss,什么都可以(我一开始说了两个结构上的,他就不断的问我还有吗,然后我每说一个他都要叫我介绍一下,说一下优缺点之类的,直到我真的啥也说不出来了)
- 看你用了BN,说一下BN
- 说一下vgg的不同版本?(这个问题其实我没听清,我感觉是问vgg,这种问题我一听就不会,所以也没追问;我表示我看过他的论文,但是因为跟我的方向不太贴合(vgg主要还是用来分类?),所以没有深入去看,面试官表示好的他知道了)
- 如果你的网络不好训练咋办?
- 问我平时用啥语言,我说c++和python,做了两道题,写完追问时间复杂度
- 啥时候能来实习,今年情况特殊确定能来吗
- 反问环节,我问我有啥欠缺的,面试官表示可能对于不是我方向的一些问题我了解的太少了,深度学习是相通的我不应该不是自己方向就不看;但他表示感觉我代码能力还挺不错的(开心)
然后面试官表示他去叫二面面试官,然后大概十分钟之内吧又来了一个面试官二面
- 自我介绍
- 项目
- 你网络里上采样是怎么做的(我表示调包,具体方法应该是双线性插值)
- 那你知道双线性插值的细节吗(我表示我知道他是怎么算的,但是特别细节的话可能讲不清楚,面试官表示没关系那你可以写代码来说明.....于是我立刻给他讲清楚了.....)
- 平时用啥语言,做个简单题吧(dp基础题,机器人走方格那种)
- 反问
深度学习一些基础的问题
过拟合
正则化
BN什么的
第一题是双哈希表完成O(K)复杂度在一个list里找到滑动窗口的众数
比如神经网络里的BP算法用Numpy写出来
三面:
项目中的一些问题,主要是会问你项目中的方法和其他论文究竟有哪些不同,这就要求你不但要对自己的项目熟悉,还得对一些其他类似的论文熟悉才行,我估计是想看你有没有看过源码结构什么的,怕你是“调参侠”。不要慌,能记起来的尽量回答。
算法题,买卖股票DP问题,秒答暴力法,然后面试官说有没有更好的方法,我说DP法,然后写了个DP,leetcode简单题。
问项目,问测试矿泉水流程。问计算机网络,TCPIP什么的
算法题,输入一个list然后输出这个list的全排列,leetcode简单题。
问了项目,测试抖音青少年模式怎么搞,Python的一些基础问答。
算法题,给定一个list然后求出和为K的两个数,也是leetcode简单题,双指针秒答。
接着问项目,测试微信的发消息功能等等,依旧是Python的一些基础问答。
关键是知道自己的优势和劣势在哪里,不用特地的避讳;
1.机器人面:
正则化解释一下
度量两个分布的距离的方法
LSTM比普通RNN优势在哪
数据降维的办法
过拟合是什么,如何处理
2.一面技术面
自我介绍,讲项目
有一道场景题,有点忘记了
3.二面技术面
平时怎么读论文
Unet讲一下
给你几片论文,你要如何对其中的算法做一个总结
4.三面hr面
优点缺点
有没有对象
期望薪资
1、最长公共子序列
2、括号合法匹配问题
一面:
1 - 算法题:树的层序遍历的递归和非递归做法
2 - 算法题:给定一个字符串,一个子串集合,要求不断删除字符串中的子串,直到没有可以删的为止
3 - 自我介绍
4 - 介绍项目
5 - 冷启动问题,这里其实不是严格的冷启动问题,而是面试官问我新节点来了怎么办,孤立的点,完全没有边关系(其实他说的这种情况在我定义的模型中是不存在的,,,,,或者严格一点,存在的概率很小。)
6 - 上一个问题,引申到下一个问题,deepwalk这类图结构的embedding和普通embedding相比,哪一个解决新节点问题更好。(问到这里的时候懵了,因为在我的印象里,无论冷启动还是新节点问题,解决方法都是自己定义的,这些embedding的方法只是说,生成的embedding的质量不一样。我不知道是不是我理解错了意思)
百度一面说我没有实习经历,都是比赛,对工业界了解的少。(内心:所以我才要去找实习啊)
二面:
1 - 自我介绍
2 - 主要用的是pytorch还是tf,介绍一下torch构建一个简单的dnn的流程
3 - 常见的激活函数有什么
4 - relu函数是做什么的,作用和是什么:我说是非线性激活函数,把线性的映射到非线性空间中,如果不加relu,那不是和lr有点像了,直接是线性回归了。
4 - 面试官又问,那dnn和lr什么区别,我说lr是线性的,dnn加了激活函数是非线性的。她说dnn不加激活函数也是非线性的,问我为啥。我说是因为它对高阶交叉特征提取,所以增加了非线性的因素吗(高阶交叉特征应该是非线性的因素吧?),她说不是。然后我问那是为啥,面试官说,它就算是不加激活函数,也可以对一些非线性的函数进行拟合
5 - 常见的embedding有那些。(我比较熟悉的就是graph embedding,她说就是常见的)然后embedding的作用是什么
6 - 梯度爆炸怎么解决
7 - 怎么做特征
8 - 如果一个特征是是负向的怎么办
9 - 分布不一样的特征是真实存在的,一般不会直接不用了,那要怎么办,我说可以做一些调整
10 - 可以有哪些调整方法
11 - 为什么对推荐感兴趣(其实我感觉后面她已经不想面我了,我感觉是强行被我拉着扯了一点人生。。。然后她最后说整体挺好的,但也没问算法题,感觉要gg了。她还给我推荐了一个知乎中搞推荐的人。我觉得大概觉得我虽然菜,但是还挺好学的。)
我看之前有人的面经,问的都是gbdt,xgb,lgb,到我这里就一顿nn的问,我跟面试官说我nn用的不是很熟,我了解gnn比较多。
常见算法排序,kmp,简单dp代码
聊简历。讲故事一定要有逻辑性,即便你做的是一个很小的项目,亦或是很low的idea。(1)背景(场景是什么,说白了就是问题的各种约束条件);(2)要解决什么问题(motivation,相当重要,用简单的几句话讲明白你要解决的问题);(3)方法,这部分都会被提问,你说的每个技术细节都会被问;(4)结论是什么,效率提升了?模型更小,效果相当?等等
与其说是引导,还不如说对自己简历上的各种东西都熟稔于心,问多深都能回答。
要提前准备面试官可能会问的问题,假如自己是面试官,你会问什么,如果自己回答不上来,赶紧学习。
1.为什么使用中位数对缺失值进行填充,这样做的好处是什么?
2.随机森林的基本原理?
3.讲一下信息增益,信息增益比,Gini系数的关系?
4.讲一下GBDT和Xgboost,说下他们的原理,以及不同点?
5.one-hot编码的原理及意义?
6.特征维度很高时你是怎样做的操作?
7.说下你的缺点和优点?
8.最后让我反问了几个问题
一面
聊项目,问了类别不均衡问题,也问了模型可解释问题,好像蘑菇街喜欢可解释强的模型?然后当时引申的一个问题是,如果nn可以解决高维度离散问题,为啥还需要gcn来解决关联性的问题。其它不记得了。
问的算法题很简单,就是两个排序数组合并成一个数组。
二面
自我介绍以后,面试官就问了我两个大数相加的问题,写代码ing
然后就聊了聊项目。
三面
1 - 简单介绍一个项目,这样做的原因
2 - 你的gcn模型可解释怎么办
3 - 你说lr模型可解释性高,它的可解释性体现在哪里?是权重越大,可解释性就越强吗?
4 - F(N) = F(N-1) + F(N-2)的时间复杂度和空间复杂度问题
5 - 一个商家。第一天看A商品和B商品的点击率。点击率公式是点击/曝光。然后,平均的是a的点击加b的点击/a的曝光加b的曝光。问,第二天发现,a的点击率和b的点击率上升了,但是平均的下降了。是什么原因,从哪些方面入手去解决这个问题
这问题,我用公式角度回答的,然后面试官问我还要其它解释吗。。我不知道。。
三面的这几个问题都回答的不好,感觉凉了。。。我已经被leader挂出了心理阴影了。。
直接简历上的东西 稍微推了一下LDA主题模型
问了一些 LDA相关的20min LDA和LSA的关系问我的时候我没答上来..
但是 我说了我直接LDA做的 不了解LSA什么的
链表的冒泡排序 面试官说没问题
之后写了一个LR 没问题
问了一些LR的问题
再之后说了一下分类 然后bagging boosting 以及场景
然后写了一个二叉树的所有右叶子结点之和
1.介绍项目。
2.minibach SGD的minibatch怎么选择,如果给1000万的数据,mimibach应该选多少。
3.Adadeta比Adagrad好在哪。
4.有没有打开tensorflow框架看源码。
5.给一个均匀生成1-7随机数的生成器,怎样均匀生成一个1-10随机数的生成器。
6.用C写个单类进程。
7.用C写给一个数组和一个数s,返回两个和为s的元素索引。
一面:1h
两道代码题,第一题最长自序和,秒;
第二题数组中最长字符串组合,这个没有写,说出了改写Arrays comparator接口排序和hashMap查找
一、项目
机器学习中熟悉哪些算法
gbdt,xgb原理,区别,xgb做了哪些优化(面试官很nice,还举了应用场景帮助我理解)
二、算法相关
RNN lstm原理
CNN原理
三、基础
Java collection基类有哪些接口及其实现类
Java线程六中状态中的几个转换函数
TCP三次握手
四、聊天
喜欢看书吗?回答喜欢。问看了哪些书?
说了数学之美,面试官问感想之类的
总体感觉:体验很棒、面试官人很nice,是比较有涵养的那种感觉受过良好教育像领导,30岁左右。
二面:30min
一、项目,抓住一两个点问的比较深
二、聊天:(我面试的时候也很蒙)
研究生规划、放不放实习、老师不同意怎么办、愿不愿意做Java开发(我感觉我要调剂去开发了....),实习时间等等
面试官也很nice,感觉很年轻很有活力那种
10个小球,随机分到12个盒子里,求恰好10个盒子都为空的概率。要求用Python程序模拟十万次,暴力求出该概率。
看到这题我懵了,让我蒙特卡洛模拟?伪随机数也不好近似出概率啊,误差大的一批。头一次见不要手推数学公式,特意要求你暴力的数学题。话不多说,动手开始写,balabala,模拟完了,在牛客网一运行,我懵了,输出在十万分之一到十万分之3之间波动(十万次只有两三次恰好10个盒子为空),题目要求一共只能模拟十万次,我开始怀疑人生,检查代码,并且重新设置了随机种子,结果还是很小的概率。一下急了,情急之下打印出来前几次模拟的结果,确实很难出现恰好10个盒子同时为空。然后就跟面试官说,这个概率太低了,同时模拟十万次又太少,所以模拟出来的结果很小。然后面试官没说啥了,直接下一题。好像他也是随便选的题目,自己没做过,只是看到这个题目在题库里分类是数学,就选了这个。我也不知道这个题目的用意是啥,也不知道自己是不是想错了。(PS: 面试之后我直接算概率,C(12,2)*210/(1210)=1.091e-06,如果我算错了,欢迎各位指出。)
(写这一题的时候我用的random包(牛客网系统不让导numpy),random.randint(0,12),发现数组越界,事后发现原来API果然不一样,random.randint(0,12)包括了右端点12,而numpy.random.randint(0,12)是不包括右端点12的,巨坑,平时使用numpy.random比较多,难怪面试的时候数组越界)
题目2:
二分查找元素在有序数组中的位置,如果不存在,输出-1,如果存在,输出下标(存在多个,输出下标最小的)。
水的不能再水的题,但是一开始没处理好有重复数字的情况,只过了30%用例(面试过程你可以自己提交代码,并且可以看到一个错误用例,跟牛客网练习模式一样),比如4,4,5,6,7里面找4,我的代码返回了1,本该返回0。后面处理了一下,AC了,二分都不能一次通过,差点急出一把汗。
题目3:
给定一个数组,找出数组的最长连续子序列。例:3,3,4,7,5,6,8,最长的连续子序列(这里的连续是说连续整数,整个子序列是连续整数,我一开始题都没看明白)应该是(3,4,5,6),需要返回它们的下标(1,2,4,5)。如果存在多种答案,只需给出任意一组下标。
题目一出来,我就懵了,dp我真的不擅长。直接就联想到最长上升子序列了,但是这个要求整数连续,区别应该也不大,但是我不会写啊,凉定了。
LIS:(我不记得LIS的代码)
if nums[i]<nums[j]:
dp[i] = max(dp[i], dp[j] + 1)
盲猜只要改成如下:
if nums[i]==nums[j]+1:
dp[i] = max(dp[i], dp[j] + 1)
面试官看我不会,让我先写一个暴力的方法,我还是不会啊,然后一个小时过完了,凉凉。
1.快速傅里叶变换和离散傅里叶变换的主要区别是什么?
2.静态方法和非静态方法区别?
3.单例对象?
问了项目内容,问了场景题和开放题,甚至还问了我职业规划
一开始就自我介绍,然后问了数据预处理怎么做,怎么数据清洗,类别不均衡怎么处理的。
问了第一个项目的模型怎么构建的,问了图神经网络的发展,我的模型出于什么阶段。
你觉得你的论文还有什么可以提升的点
之后就问了比赛,比赛中比较重要的是什么,是怎么分工的。
问了之后想要做的是研究还是应用一点,这些模型是自己动手优化实现的,还是调包。
场景题是,对于团伙作案,从哪些维度考虑聚集性;对于无标签的数据,怎么考虑建模
开放题:
有一个人你知道他银行卡金额上限和下限,猜银行卡金额,猜对了就把金额给你,想要概率最大(猜的次数最少),金额最大,可以猜无数次,怎么优化,怎么建模,可以先做一些实验辅助。
面试官很会问问题,后面的开放题,她也一直在引导我,奈何我菜,没有找到正轨,答得不好。
总的来说,问的问题比较广泛,但都没有特别深入的问下去,可能一面还是看知识广度吧。
一二面:
1. 算法题:无序数组找前k大的数,描述思路+复杂度分析
2. Python:callable,垃圾回收
3. 机器学习分类指标有哪些?AUC如何计算?
4. SVM和GBDT的比较?
5. attention说一下?
6. xgboost?lightGBM说一下改进点?
7. 随机森林描述一下?
8. 深度学习模型压缩有哪些方法介绍一下?
9. 关于项目的讨论:关键工作?负责角色?难点及解决方案?是否有落地应用?
10. 连续值数据特征离散化的好处?原因?
11. 正则化的方法?作用?原理?
12. 常见Loss?物理意义?
13. 工程相关:项目中学到的东西举例?如何解决bug?代码优化?量化代码效率?缓存机制?
14. 操作系统是如何执行C++代码的?C++智能指针介绍一下?
15. 统计学习算法举几个例子来?能够如何分类?分类的标准如何定义?
项目介绍完之后细扣项目,数据清洗,LSTM结构,如何评估,怎么调参的等等吧
前面聊的还行,后面写题心态蹦了
SQL简单题,奈何早忘的一干二净了,难受
算法题,从n个数据中抽取m个数据,保证每个数据被抽到的概率为m/n。没见过这种题型,崩,最后说了思路。
这里建议非科班面大公司搞搞sql,AB测试,大佬随意面。准备的模型推导一个没问,裂开。
主要问了人工特征工程和lighgbm模型特征处理,有啥不一样的,你为啥要构造这特征。
然后就是一些样本不平衡处理(重点聊了小样本只有一个的时候),
神经网络利用dropout和多项式回归利用正则项减轻过拟合的本质是什么(为什么就能减轻过拟合了),
我项目有用到lightgbm和xgboost模型融合,就问了为啥要这两个模型融合,lightgbm是xgboost的改进,那你为什么还要融合呢,懵了...
项目的主要问题还是特征构建,会问你为什么要这样构造特征。
书本上基本知识得熟悉!会用!知道为啥用!
2、细扣实习项目(问的比较深)
3、数据清洗、数据平滑主要操作
4、有关一个时序列问题(具体还没想起来)
好了梯度下降要来了
5、详细说一下随机梯度下降和批量梯度下降
6、线性回归多变量求解的过程,为什么这样求解?这样求解为什么是最优解?(我回答的是求导,也就是梯度下降)
7、怎么优化梯度下降过程,主要是速度优化?
8、自适应梯度优化是什么样子?
9、拟牛顿法能说说吗?
10、学习率过大会出现什么问题,怎么解决
11、最大似然估计和贝叶斯估计的联系和区别
12、如果我想预测的结果是一个置信区间你打算怎么建模型(这个是在最前面的问题)
13、一阶导和二阶导分别表示什么,能说一下意义吗?
接下来就是聊人生了。
首先我介绍我的数据预处理,我说到类别不均衡问题,然后面试官打断我,问我说的类别不均衡是什么意思
然后我解释了,又问我为啥要用采样解决,为什么不用修改目标函数。
围绕这个问题,说了二十分钟吧。
这不是我的重点,我想要一份均衡的数据集,避免它对我模型的影响,但同时我想对比各个模型的效果,所以修改了目标函数的话,其它对比模型面临的还是类别不均衡的数据。
之后我说了我的模型,没有问模型的问题,特征工程也只是问了问可用那些特征。
对于某些数据集类不平衡问题真的很重要,比如1%的癌症和99%的癌症,有些模型就会把所有样本认为是健康的,就会有99%的准确度,但明显是没有意义的
单纯上采样有过拟合风险,单纯下采样肯定数据不全,而且采样可能会对特征提取有影响,因为一些id稀疏,所以模型学不到什么东西。修改目标函数的话比较简单,而且我感觉是从本质上解决这个问题,就是减少了正样本过少导致它的loss变化小。
面试官可能觉得通过采样解决类别不平衡问题的话(相当于修改训练集合数据分布),会导致测试数据和训练数据不是同分布,这样采样以后还需要修正(比如小类别数据权重增加)。那么不如直接修改损失函数,增加小样本的权重,然后用AUC来评估模型好坏。
第一次写一点经验给大家分享,有什么问题希望别介意
首先先进行自我介绍(老规矩)
1.写一个代码,树的层序便利(写出来了)
2.代码:编辑距离(不懂的可以自己去百度一下,只说了思路,代码没写写出来)
3.围绕简历问了一些项目相关的问题(略)
4.因为简历上写了Cnn,所以问了一些cnn方面的东西(问的很多,我只说了一点点,效果不理想)
5.毕设做了推荐算法(本以为会问很多),结果只问了一个问题(计算用户相似度的时候为什么用余弦,不用其他的算法)
细扣实习的东西(太深了)、
一阶导二阶导代表什么(看我太菜了)
还有关梯度下降
1.自我介绍,
2.你这个论文是怎么做的,场景是什么,你这个酒店数据集里面是个什么样子,推荐出的东西是啥,如果我要预测用户下一个购买的物品,你这个模型可以用吗?
3.xgboost和gbdt的区别。
4怎么判断过拟合,你一般怎么解决。
5,参数初始化的作用是啥,
6.会话的长度对你的效果有影响吗?
7.graph-embedding的流程,和普通的word2vec效果的区别。
8.说一说偏差和方差吧,
9.什么模型能减小方差。
10.xgboost的二阶泰勒展开为啥那么效果更好,
11.了解b+树吗?
12.写个sql题吧。
13.讲一下dp的思想,斐波拉契数列能用dp做吗?什么问题适用于dp。
13.http里面get请求和post请求有啥不同。
14.你论文的数据预处理是怎么做的,你把那些出现次数少的给删掉了,那你怎么推荐那些物品呢。
15.你的embedding维度是多少,
16.你了解mutil-task吗?
17.你了解point-wise,pair-wise,list-wise吗?
18.你觉得树模型和神经网络的数据预处理有什么不同吗?
19.讲一下整个推荐系统的流程。
20.你知道位置偏差这个东西吗?Position bais?21.mutil-task的任务是怎么优化的?
22.比如我要针对一个指标,如mrr,ndcg这种,它是不可微的,该怎么处理。
23.推荐系统的可解释性你了解吗?有哪些方法,基于深度学习的推荐系统可解释性你知道些什么。
24.你论文里面数据增强怎么做的,
25.高维稀疏的特征为啥不适合用xgboost
2道业务场景题-商品性价比和排序期望题
第1道题当场就给出了解决方案,二分类机器学习问题
对模型、推荐系统、项目线上经验等考察得比较深入。
leader面对机器学习考察得比较全面、深入,
- 最少时间复杂度求数组中第k大的数,写code
- 去除字符串S1中的字符使得最终的字符串S2不包含’ab’和’c’,写code
- 长度为N的序列Sequence=abc….Z,问有多少不同的二叉树形态中序遍历是这个,写递推公式
- 给定整数n和m,问能不能找出整数x,使得x以后的所有整数都可以由整数n和m组合而成
- 中序遍历二叉树,利用O(1)空间统计遍历的每个节点的层次,写bug free的code
- 排序二叉树转双向链表
- 一个运算序列只有+、*、数字,计算运算序列的结果
3、机器学习&数据挖掘问题
- L1和L2正则项 >> 它们间的比较
- 各个模型的Loss function,牛顿学习法、SGD如何训练
-介绍LR、RF、GBDT ,分析它们的优缺点,是否写过它们的分布式代码
- 介绍SVD、SVD++
- 是否了解线性加权、bagging、boosting、cascade等模型融合方式
- 推荐系统的冷启动问题如何解决
- 是否了解A/B Test以及A/B Test结果的置信度
- 特征工程经验
- 是否了解mutual infomation、chi-square、LR前后向、树模型等特征选择方式
4.解决方案类题目
- 为今日头条设计一个热门评论系统,支持实时更新
- 给定淘宝上同类目同价格范围的两个商品A和B,如何利用淘宝已有的用户、商品数据、搜索数据、评论数据、用户行为数据等所有能拿到的数据进行建模,判断A和B统计平均性价比高低。统计平均性价比的衡量标准是大量曝光,购买者多则高。
- 有n个elements和1个Compare(A, B)函数,用Compare函数作为排序算法中的比较算子给elements排序。Compare函数有p的可能比较错。排序完取Top m个元素,本来就在Top m并被正确分在Top m的元素个数是x。问x的数学期望。
- 如何预测双十一支付宝的负载峰值。
个人发展受限(瞎扯呗,就说自己刚毕业认知有限,好奇心比较重,年少轻狂),想从事新的行业,别说老东家坏话,传播正能量
2轮内容都是项目相关,以及相关引申点,你面临到了啥问题,怎么改善的之类的。
可能自己回答上面不够自信 + 回答的点不够全面吧emmm。
0. 项目介绍。
1. wide&deep等相关介绍。
2. 面临的困难/注意做了啥部分。
3. 怎么改善呢?现在让你重新思考这个ctr预估场景上线后的场景如何提高?
下周一再不变,基本上就可以等简历释放其它bg捞了。
简单总结:
0. 讲话要自信,不要迟疑,唯唯诺诺;
1. 项目要讲清楚,所有点尽可能保证深度/广度到位,突出自己的贡献;
2. 回答问题的时候,做好条理清晰点,不要想到啥说啥,会显得很没逻辑,面试官听着也很难受。
很常规的问题,做的项目是什么方向?怎么分工协作的?你做了哪些,怎么做的,中间克服了什么困难?为什么选择腾讯?
详细介绍了LSTM对RNN改进的地方
问了问我SVM的原理和优点
最后做了一道算法题:是lc的原题(找出一个字符串中所有的回文串)
1.自我介绍。
2.讲项目,三个项目都讲了一遍。
3.问了对推荐方面的了解。 答:没做过相关项目,但是有一些简单的了解,比如,LR, FM, DeepFM, 协同过滤,矩阵分解。
4.问RNN有什么问题。 答:扯了长期依赖问题,attention的解决也不够理想。目前基本朝着CNN+attention、transformer这个方向前进。
5.追问那为什么transformer这种更好。 答:因为并行,可以更好的attention。
6.RNN为什么梯度消失。 答:tanh激活函数 以及序列过长会导致梯度消失。
然后面试官和我解释了一下其实还有个原因是因为RNN是每一步都共享权重的。(确实忘了)
7.算法题接雨水。 说了下思路,写完之后面试官觉得有问题,现场跑了几组样例。都过了。
8.你有什么问题+部门介绍。
2、第一个项目为什么做了一年?这点东西居然需要一年?(这个人应该是个leader,第一个东西是一篇SCI一区论文)然后揪着这个项目问了十几分钟,所以一定要对自己项目非常了解。
3、最近看了什么论文?将一篇论文讲清楚。
4、怎么调参的?怎么解决效果不好的情况?
2、介绍一下你论文中的注意力机制,为什么这样设计?有什么优点?
3、讲讲transformer 在那些地方做了改进?
4、讲CycleGAN的结果,怎么处理字符漂移问题?
5、深度学习调参经验?
6、怎么处理大批量数据的读入?(基于pytorch或tensorflow回答)
7、有什么问题想问的?
5、为什么loss会出现nan ?
然后问了LR和DecisionTree的区别
问了Stacking的原理(因为项目里有用到)
还问了Bagging和Boosting的区别
最后是业务场景题,问电商推荐可以用的主要特征有哪些
开门见山,自己讲自己的论文,首先讲自己的论文是做了一个啥东西,什么领域的 ==> 再讲自己论文的动机是什么 ==> 然后再讲自己论文中是怎么做的,为什么这么做,有什么直观上的解释 ==> 最后再提一下论文中的其他部分
-
如果有n种类别(比如新闻类,体育类等)的网站,目前收集到一些网站,及其网站中不良信息的位置,那么新来一个网站,如何判断该网站中是否含有不良信息,若含有,不良信息在哪个位置?
-
这时我提问题,新来的这个网站的类别知道吗?然后面试官说,知道和不知道,分别有什么处理方式?
对于新来的网站知道类别的,我觉得既然要检测不良信息在哪个位置,这种问题一般比较难,我说如果要考虑公司部署等问题的话,可以每种类别都有监督的训练一个模型,面试官听了之后,具体细节面试官就没问下去了。
-
对于新来的网站不知道类别的,我说还是每种类别都有监督的训练一个模型,然后用判断新来的网站跟哪个网站相似度更高,再用其训练好的模型预测。
- 这个问题是给自己挖了个坑,感觉答的很不好,新来的网站不知道类别的这种做法估计有挺大的问题。* 面试官听完上述描述之后,也没有做什么评价,然后他说,要不我们直接把问题简单一点,如果收集到一些网站的语料,如何判断这些网站中是否有不良信息。
-
这个我就直接答了,我说这个直接跑一个BERT就可以了,先对网站预处理,如果过长就切成几个para就好了,然后跑BERT做个分类即可;
- PS:其实这里如果面试官问下细节,怎么切?切的依据是什么?最后怎么综合几个para做分类的?我可能懵了,这块细节没去看。
-
然后这时候面试官说,但是公司部署的话,一般不直接采用BERT,你有其他办法吗?我说那可以用tf-idf表示新闻语料,然后过一个LR就好了,用PCA降维之后,效果也还行,应该做的比较好有70%+的准确率。
- 这时面试官就问了,那你说一下tf-idf的公式是怎么样的?有什么缺陷?然后我有点懵逼,没太答好
-
情景问题,他说如果有一些语料,然后还有一些关键词,如何判断这些语料中是否含有这些关键词,然后我问,关键词长度多少,是一个词语还是一句话甚至更长,然后面试官说这个重要吗?然后我就回答,如果只是判断关键词,那可以用原来的语料先分词,然后再做一个vocabulary,再将vocabulary中的单词做hash,这样后续就能实现O(1)查找了。然后面试官问,那你这个建立vocabulary的过程的时间复杂度是多少?我说应该是O(n)吧,如果针对英文语料的话(毕竟直接空格隔开),然后他说如果是中文呢?时间复杂度是多少?我说中文还真没了解过底层分词的时间复杂度,然后他就问,那中文分词有哪些处理方式,是怎么做的?我说CRF序列标注那一套?然后他让我讲一下CRF的原理以及分词的过程,然后我说不会,面试官就没有盘问下去了,便回到原来的问题,他说关键词长度不限,有没有什么好用的方法,然后我说那要不然kmp算法吧,然后他问我kmp算法的时间复杂度,我说O(m+n),然后我就让我描述一下kmp算法的算法流程,orz,实在是想不起来了next数组的生成过程,就跟他说本科学过,也写过代码实现,但是现在忘了。
介绍了一下简历上面的项目(问的不深)
准确率和召回率的概念
LR如何引入非线性
什么是卷积
什么是过拟合,如何改善
提取特征做过哪些预处理操作(我回答做过归一化和图片增强,问了一下归一化具体如何做的)
逻辑题:0 1 2 3 4 5 6 7 8 9 下面写一个数,使得下面这个数刚好是这个数字在下面一行出现的次数
答案: 6 2 1 0 0 0 1 0 0 0
手写快排
两个字符串的最小距离(插入,删除,改变一个字符)说一下思路和复杂度
4 场景题,给出用户的数据和交易记录,是否给他开通花呗
5 gbdt 和 xgb
6 做了个题目,https://zhuanlan.zhihu.com/p/112002408
7 什么情况下用动态规划,如果换成递归会怎么样
1.推荐系统有几个步骤 为什么要召回?
2.你平时调参的时候,怎么设置神经网络的大小的?
3.深度学习用在推荐里的例子有哪些?能描述一下ncf的基本框架吗?
4.python里的正则表达式
5.推荐系统里的排序算法有哪些
6.你处理数据集的时候,会遇到哪些关于数据的问题?你是如何处理的
-
自我介绍。(这是你唯一能把握主动权的3分钟!!!)
上来先自我介绍,我主要从数学建模比赛(本科参加了很多次,岗位对这个比赛是nice to have)、项目、对强化学习的了解(这个部门主要是用强化学习)3个方面进行介绍,我并没有按照简历照本宣科,而是分别拿出3个方面最值得介绍的经历,以讲故事的方式来叙述,并且说完一个经历就会总结一句:我在这个经历中收获最多的是xx(eg:快速学习能力、团队合作意识等)。因为自我介绍是为了让面试官了解你身上具备的优点和潜质,至于你已有的能力,你的简历上已经写得清清楚楚,就不需要浪费这么宝贵的3分钟。比赛、项目提问
面试官会根据自我介绍的内容进行提问,所以自我介绍显得尤为重要,你可以引导面试官接下来会对你提问什么。我在自我介绍时说到比赛中快速自学了元胞自动机模型并得到了应用,两面的面试官关于比赛的问题都问且只问了元胞自动机的相关知识,包括简介、原理、应用场景、有没有对其进行改进。
至于项目,只要把涉及到的整体流程、每个算法的原理&使用的原因、难点搞清楚就差不多了,并没有问到代码具体实现。机器学习
①面试官:你参加那么多数学建模比赛,对机器学习方法应该挺了解,请你说下哪些模型可以用来做回归?
简要:我把回归分析里的方法都讲了,并提到了支持向量回归。
②面试官:请讲下支持向量回归原理。
简要:我说不会,但知道支持向量机③面试官:支持向量机也差不多类似,那你说下吧
简要:我从SVM基本问题定义到对偶问题的推导过程,以及核函数、非线性问题、SMO、KKT条件都说了。- 深度学习
①面试官:讲下BN。
简要:这个是常考的,一定要会。我从背景、原理、方法、训练和测试的差异、意义,各方面都详细说了。
②面试官:你刚说到BN要重构,请问为什么?
简要:我之前看过博客,说是如果不做的话会破坏浅层的特征,结果面试官说不重构也可以学习到特征呀。然后又继续反问我为什么要重构。我想不出来。最后他告诉我是因为归一化后会降低表征能力。③面试官:你做过深度学习,那你说说卷积吧。
简要:我把卷积的整个过程详细讲了一遍。④面试官:pooling有什么意义
简要:我从降维减少参数量和减少卷积后的冗余两方面回答。结果面试官补充说pooling可以增大深层卷积的感受野。⑤面试官:刚才说到感受野,那谈谈你对感受野的理解吧。
简要:这个我之前没准备,就真的是凭自己的理解,结果也答的不好。面试官告诉我是一个卷积核可以映射原始输入图的区域大小。⑥面试官:讲下激活函数的意义
简要:讲了常用的几个的激活函数及意义⑦面试官:为什么要用relu而不用sigmoid
简要:从饱和区间、敏感区间和梯度三个方面来回答。⑧面试官:有了解过GAN吗?
简要:没有。。。- 强化学习
①面试官:讲下q-learning。
简要:一步一步介绍了模型。
②面试官:有了解过DDPG吗?讲一下原理。
简要:我说是属于Policy Gradient系列的,就从PG->Actor Critic->DDPG一路详细地讲了模型的流程和特点。- 语言
①面试官:讲下python的staticmethod和staticclass
简要:没听过,但面试官谈到了装饰器,我就介绍了装饰器相关的。
②面试官:讲下python的匿名函数和意义
简要:讲了lambda的形式和意义③面试官:对浅拷贝和深拷贝有了解吗,讲一下。
简要:很清晰地介绍了它们的特点和区别。- 框架
①面试官:讲下tensorflow搭建网络和训练的流程。
简要:从定义占位符开始一步一步说下来,可能说的很顺畅,说到一半面试官就说不用了,下一个问题。
②面试官:有没有学过pytorch
简要:我没学过,但我说知道现在很流行,如果以后工作需要用这个框架,那我可以快速学习,因为框架之间应该都差不多,况且pytorch还更简洁简便。算法题
面试官发了一个腾讯文档,可以实时看到我敲的代码。然后问我有没有刷过算法题,我说这学期刚开始刷,刷了一些。他就说那我们先来一题简单的。就现场从leetcode搜了一题easy的。然后给3分钟思考,思考完跟他讲思路,讲完就让我在文档写代码,按leetcode的那种形式,给10分钟。看我很快想出来并很快写完,他就说那再来一题。结果出了一题medium。恰好我做过原题,前两天还复习了,所以秒解,用哈希集合+快慢指针,并且面试官问了我时间复杂度,因为快慢指针各遍历一次,所以是O(n)。以下是题目:
①原地删除排序后的数组中重复的数字。(要求空间复杂度为O(1))
②给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。开放性问题(都跟他们的温室挑战赛有关)
开放性问题是本来已经结束了,都已经在提问反转环节了,说到一半他突然说问我一个开放性问题。
①面试官:如何设计一个算法来实现自动控制温室种植,假设数据都已经收集好。
简要:我说了用强化学习,并给了几种现有算法。
②面试官:那如果不用强化学习,你觉得可以用什么方法做。
简要:想了半天想不出。。其他
①面试官:有没有学过搜索算法?
简要:这学期刚好学了相关课程,就都说了。然后实现过一些,比如启发式搜索算法:GA、SA等,都自己用代码写过,也在数学建模比赛中用过。提问反转环节
①我问在腾讯我要怎么能得到系统性的成长。
②我问在腾讯的工作强度是怎么样的。
-
自我介绍:
和一面一样,不过面试官遇到感兴趣的内容会直接打断来问你。比赛、项目提问
这次项目问了很多算法实现的步骤,以及项目中遇到的难点,但都能回答的很顺畅。机器学习
①面试官:为什么会发生过拟合?
简要:我讲了先前总结过的几种情况。
②面试官:那如何降低过拟合?
简要:讲了几种降低过拟合的方法,这个面试官一直问:还有吗?强行憋出了6个。(降低模型复杂度、增大数据集、dropout、正则化、集成模型、BN)③面试官:讲下正则化
简要:讲了L0\L1\L2,L1和L2的具体形式和反向传播的时梯度的推导公式、以及它们如何降低过拟合都详细说了。④面试官:泛化误差如何产生,有哪些方法可以减小?
简要:讲了泛化误差的展开式,分别说了从bias、var和噪声三个方面减小,并说了相关的方式,以及如何平衡bias和var。⑤面试官:讲下dropout原理。
简要:从背景、原理、实现详细介绍。⑥面试官:dropout训练和测试有什么区别吗?
简要:从期望的角度,说明了训练时要除以概率p,或者测试时乘概率p。- 强化学习
①面试官:on-policy 和off-polic的区别
简要:先从蒙特卡洛强化学习的同策略和异策略模型来说明;再根据q-learning和sarsa的区别来说明。
②面试官:贪心策略和确定性策略区别
简要:从选择action的概率的角度,介绍了区别,并介绍了两种贪心策略:epsilon和softmax
③面试官:有一些真实例子,还有一个模拟器,如何训练一个强化学习模型?(这个就是他们目前面临的问题)
简要:讲了可以先用直接模仿学习和逆强化学习,然后再用一个强化学习的模型。
④面试官:直接模仿学习和逆强化学习具体说下
简要:就按《机器学习》(西瓜书)中学到的详细说了。但逆强化学习没说太清楚。④面试官:强化学习的baseline
简要:我懵了,因为我项目是用深度学习做多目标跟踪的,对于强化学习只学了一些基本框架和基本的理论知识,但是还没时间去看过强化学习的论文,所以不懂啊。然后面试官最后告诉我说就是采用一个随机选择action的策略。。。算法题
①求二维矩阵的人脸个数
简要:和leetcode的求岛屿数量那题非常像,算是medium的,刚好复习过,就秒解了,大概40行左右的代码,很顺地解下来。面试官看完说没问题。开放性问题
①面试官:如何对一段python代码做加速,可以自己假设代码的应用场景
简要:这个问题又榨干我了,我一开始说了5种方式(优化算法从而减少循环次数、调整if elif语句的顺序、核心模块用cython、多线程多进程、生成器减少内存占用量)
②面试官:追问了多线程和多进程是什么?
简要:详细说了区别,以及python中的实现,并说python没办法利用多线程,因为有GIL,面试官说他没听过,问我是不是真的,然后让我讲一下GIL,我也详细讲了GIL的流程。③面试官:还有什么办法可以加速python代码吗?提示说可以假设是一个训练神经网络的场景。
简要:我补充说可以用GPU、batchsize。然后面试官继续追问还有没有,最后他说了cpu加载数据和gpu训练数据的差异,如果只用cpu加载,那发挥不出gpu的优势,可以用异步来加速,即先加载一部分数据到缓存。【我有一种醍醐灌顶的感觉】④面试官:GPU如何加速?
简要:不懂。。- 提问反转环节
①我问他们部门的工作机制是怎么样的
②我问通过今天的面试,觉得我哪些方面需要加强
面试官说觉得我基础挺不错的,但是缺乏经验,如果过去实习的话,需要适应一段时间他们的节奏。(当时我感觉凉了,没想到过了两天给我发了offer)
比赛&项目:对用到的模型的原理都要能清晰地说出来,以及难点、创新点,都要明确。* 机器学习(传统\深度学习\强化学习):大厂考察的基本都是底层的原理,要了解每个知识点的原理,最好是能用代码自己实现过,这样理解得更深。并且在准备的时候需要以点带面,在一个知识点涉及到的内容都要去掌握,因为面试官是串联式地提问的,也就是对你之前回答的内容中再提取新问题,如果你不懂,那就是相当于是给自己挖坑。对主流的框架要掌握,尤其是岗位对口的那个方向的相关方法,至少了解原理和步骤以及创新点,最好是用代码实现过,并且有自己的一两点想法。* 语言:AI相关岗位的话基本是用python,要对python的语言特性有全面的了解,还需要知道它们的应用场景。* 数据结构与算法:按分类来刷leetcode的题,一开始刷的时候先找经典的题,然后一题多练,经典的题至少做3遍,有利于记下每类的模板。题目不贪多,要精刷,即做完一题一定要去看题解,一题尽量掌握3种解法,并且都要会讨论时间、空间复杂度。做题要限制时间,因为面试的时候,3分钟给你思考,然后你就得跟面试官讲思路了,然后再给10分钟写代码,唯手熟尓。此后我自己会每天保持刷题,这可是进入大厂的门槛啊,我觉得这次能够顺利通过,也主要得益于3道算法题我都在指定时间内bug-free并给出最优解法了。* 开放性问题:在面试前,最好去了解下这个部门主要是做什么的,有哪些成果,很可能他们会把他们遇到的问题来问你,这样你可以有针对性地准备。因为我发现,在面试的时候是很难临时想出什么方法的。* 面试官:
①一面的面试官问的问题很广泛,基本各个方面都问到了,加上项目和比赛的话应该有30个问题左右,但是问的方式很简单,基本上就是:说下xx方法。那么你就可以根据你准备到的来回答,并且是串联式的提问,即根据你对上一个问题的回答中提取内容来提问,所以你要对自己说的话负责,哈哈,说到的东西就一定要懂,至少能说出原理,否则就干脆不要说,不然被问倒了就是坑自己。
②二面的面试官,差不多20个问题左右,但会更深入,并且提问的方式更难,主要提问方式是:说下有哪些方法可以解决xx问题?这比一面的那种提问方式难多了,因为需要你对这些方法有一个整体的认识,你的脑子里要有一个思维导图,或者说一个知识体系,这样的问法本身就更深入。所以腭面的体验更差,就是感觉被面试官榨干了,我说了所有自己所知道的方法,面试官还一直说:还有吗?还有吗?这样面试完就没有一面时的那种舒畅,因为总感觉自己掌握的不全面,很有可能凉。但其实大部分都是可以准备到的,有一两个点是需要大量的经验累积才会知道,所以这也不会有太大影响。神经网络解决梯度爆炸的方。
follow-up: dropout的tf实现,
BN, dropout FC 连接的顺序? BN和dropout连在一起会有什么问题
CRF理解、作用
coding: 最大连续子数组
场景题: IR-QA实现方式
语义匹配模型,(represent-based and interaction-based)
场景题。问了很多KBQA IRQA实现设计细节
什么时候会导致梯度不可导
DL中的广播机制
BERT原理和应用。GPT BERT区别。预训练模型演进。
HR面常见的问题,工作性格期望薪资等
总体体验还不错
Offer
小红书
- coding: 也是分词问题。输入词典和query,输出分词结果
- ML基础问题很少。GBDT/XGboost/lightGBM
- 场景题很多。lexicon怎么收集 扩展,训练数据怎么收集。
- 面经这么少是因为我真的记不清问了哪些技术相关的问题……小红书的面试体验就比较差了,流程(每面之间等待的时间比较长)、态度……、技术体验都相对比较差,我一度觉得面试官对技术不太了解,或者说已经不在一线技术了。
-
因为简历上写了了解hadoop、spark之类的,问我是看过还是做过项目,回答自己在学,搭建了虚拟集群,然后被问了pyspark中的dataframe和什么中(没听清)的dataframe有什么区别
估计是听我已经搭建了虚拟集群,就认为比较熟悉了?但是我还没有怎么用起来过哭
本来就有点紧张,这个问题直接懵逼了,然后就跳过下一个了继续追问项目(深度学习项目)中的细节,项目中用了聚类和循环神经网络,就问循环神经网络是怎么搭建的、怎么调整设置超参的、训练用了多久之类的,lstm为什么比rnn的效果好
除过tensorflow还知道其他深度学习框架吗
还知道其他聚类算法吗
情境分析?假设某一产品销售量突然下降,你该如何分析它?
了解一般的机器学习吗,随机森林、xgboost、gbdt之间有什么区别和联系
介绍one-hot,为什么采用one-hot
了解分类模型吗,怎么处理数据不平衡
过拟合原因及处理方法
3.DL基础(正则化,数据不平衡,negative sampling)
4.coding(找到小于N的素数个数,一开始给了naive的遍历,后来想到了筛法)
二面:
被虐暴的一面。。
1.介绍公司做的项目
2.ML基础(手推LR,stacking/boosting/bagging的区别,如何理解L1/L2正则化)
3.Coding(手撸heapsort。。可怜我之前最多是用一用python的heapq包啊啊啊啊。。。)
链表,队
判断两个链表相交
不用+-*/,让一个数扩大7倍
测试开发要做些什么
逻辑地址和物理地址
3.6(视频面试)
自我介绍
介绍一个项目
线程和进程的区别,优缺点
编程(输入数组b, 把b1*b2+1,放回b1,b2;问最后数组最大值最小值)
腾讯:(腾讯科技 北京 运营开发)
3.11(电话面试)
自我介绍
项目中遇到的问题,是怎么解决的
StringBuilder和StringBuffer的区别
数据库中,左删右删和***的区别
Equals和==的区别
字节跳动(测试)
3.17
自我介绍
实习时测试的情况
数据库索引(B+树)
TCP三次握手
TCP为什么是安全的
TCP四次挥手
HTTPS三次(?)(握手还是协议来着)(?)
Linux查询语句
单链表找环算法(口述)
返回单链表倒数第k个数据(口述)
测试一个大楼里新装的电梯
测试支付宝绑定信用卡功能,客户端,服务器端
0概率p,1概率1-p,构造一个方法使得两个都是1/2(口述)
编程:输入链表排序
3.22 滴滴出行(测试 电话面试)
项目是什么,重难点
Spring框架了解多少
本地上传视频至服务器,测试
上传不成功,怎么debug,怎么找是前端还是后台的问题
如何实现多线程
3.30 腾讯 (后台开发 电话面试)
Linux指令
Java基本数据类型有哪些
==和equals()什么区别:
TCP和UDP什么区别:
Time_wait出现在什么位置:
数据库索引的优缺点:
数据库的锁:
抓包:
项目难点:怎么判断胜利和失败
排序算法有哪些,归并排序的伪算法是什么
数组和链表区别
面试一共两轮,第一轮技术面试,第二轮是主管+hr(可能会问项目,技术涉及不多)
1. arraylist初始大小为5,添加15个元素,会报错吗?
2. 有没有遇到过数据库死锁?讲讲x锁和s锁的区别。死锁和数据库索引有关吗
3. 推荐使用mysql存储过程吗?
4. 线程池用什么类?get是干什么的?(submit future中的get)
5. 重复元素怎么快速去重,如果要保持有序呢?(考察数据结构)
6. 策略模式知道吗?单例模式
7. 用过mybatis吗?原理?
8. 两个包下有同样的类名,Spring允许用依赖注入加载吗?
9. ==和equals区别
10. 如果某个字段是非必填的,在设计该字段相关的方法时参数设计为int还是Integer?(考察int和Integer区别)
11. Inner join和left join的区别
12. static静态变量,用在什么地方,修饰变量和方法的作用
13. Java和其他语言的区别以及继承、封装、多态。
14.快排
15.平衡二叉树和为什么要有平衡二叉树(二叉搜索树的性能退化),以及了解红黑树吗
记得也有问jvm相关的问题,具体什么记不清楚了
全程结合我的论文在问,我是做推荐系统的:
1. 解释你的论文该如何应用到真实场景中去
2. 介绍你的数据集
3. 怎么求的地理区域的用户偏好(我是做兴趣点推荐的)
4. 用户历史记录特别稀疏的时候怎么办
5. 如何进行TOP-K的推荐
6. LR的优缺点
7. 手推LR损失函数(口头推导的)
8. L1与L2的区别联系
9. AUC的实现方式
10. 协同过滤中UserBased和ItemBased的区别和应用场景
11. GBDT介绍一下
12. 协同过滤中的一个较深的知识点,忘记了,反正我没会回答上
13. 算法题:求n个筛子和为s的概率,leetcode原题,妈蛋,我写出来了的,但是有一个判断条件写错了,结果出错,然后算法题就10分钟,面试官说8点要去面下一个,指出了我的错误就说ok了
经验:
1. 为了表示我的谦虚,在询问某一个知识点的时候,我用的措辞有“我记得是,我印象是.....”,然后面试官说,面试的时候不要说这次词汇,一定要表示自己掌握了的
2. 可以刷一些项目(诸如竞赛啥的),面试官知道我是学术型硕士,理解我没有参与过工程项目
3. 面试官人很好。我感觉可能捞我的这个团队真的是做推荐的(广告?视频?),可惜我没把握住。
内容生态产品岗,问题记不太清了,大概如下:
1.我现在实习负责的短视频的内容生态,然后针对于这个内容生态细挖,例如:生态存在什么问题,怎么解决的
2.原创和搬运:怎么定义视频/图文是原创的,如果两个视频非常相似,先发的就是原创吗
垂直搬运需不需要打压,怎么打压,原创怎么保护
3.生产者激励:怎么给生产者划分等级,对于每一级生产者评估的纬度是什么,激励的措施是什么,希望不同身份/等级的生产者的占比达到多少
4.B站的内容生态有什么问题,B站如果想主打别的品类,B站还可以在哪些品类找突破点,怎么找到这些品类找到自己的用户,怎么做用户泛化
5.平时使用微博主要是干什么,能满足你什么需求,头条和微博的区别在哪
6.头条有关的一些策略,比如如果要打压新闻品类,怎么控制内容品类的流量阀
7.信息传播类app例如抖音、小红书、头条、微博等等,他们的天花板用户量级是多少(具体的数字),你怎么分析的,怎么验证你说的是对的(这个题差点逼死我,答的一塌糊涂)
每一条进行了细挖,但是面试官态度非常好,我中间掉线了两次,面试官都没有不耐烦,是我答得太菜了!!!
头条的面试官用实力告诉我,我不应该拒西瓜的offer,谢头条爸爸教我做人
主要问了人工特征工程和lighgbm模型特征处理,有啥不一样的,你为啥要构造这特征。
然后就是一些样本不平衡处理(重点聊了小样本只有一个的时候),
神经网络利用dropout和多项式回归利用正则项减轻过拟合的本质是什么(为什么就能减轻过拟合了),
我项目有用到lightgbm和xgboost模型融合,就问了为啥要这两个模型融合,lightgbm是xgboost的改进,那你为什么还要融合呢,懵了...
项目的主要问题还是特征构建,会问你为什么要这样构造特征。
1. wide&deep等相关介绍。
2. 面临的困难/注意做了啥部分。
3. 怎么改善呢?现在让你重新思考这个ctr预估场景上线后的场景如何提高?
下周一再不变,基本上就可以等简历释放其它bg捞了。
简单总结:
0. 讲话要自信,不要迟疑,唯唯诺诺;
1. 项目要讲清楚,所有点尽可能保证深度/广度到位,突出自己的贡献;
2. 回答问题的时候,做好条理清晰点,不要想到啥说啥,会显得很没逻辑,面试官听着也很难受。
一二面:
1. 算法题:无序数组找前k大的数,描述思路+复杂度分析
2. Python:callable,垃圾回收
3. 机器学习分类指标有哪些?AUC如何计算?
4. SVM和GBDT的比较?
5. attention说一下?
6. xgboost?lightGBM说一下改进点?
7. 随机森林描述一下?
8. 深度学习模型压缩有哪些方法介绍一下?
9. 关于项目的讨论:关键工作?负责角色?难点及解决方案?是否有落地应用?
10. 连续值数据特征离散化的好处?原因?
11. 正则化的方法?作用?原理?
12. 常见Loss?物理意义?
13. 工程相关:项目中学到的东西举例?如何解决bug?代码优化?量化代码效率?缓存机制?
14. 操作系统是如何执行C++代码的?C++智能指针介绍一下?
15. 统计学习算法举几个例子来?能够如何分类?分类的标准如何定义?
1.lr公式推导
2.算法题,求a^n
3.DNN反向传播公式推导
4.CNN反向传播公式推导
一面问了我实习的项目,考了道算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来。
二面面试官对我不敢兴趣,全程不咋说话,让我讲了一下自己对NLP的理解,讲了一下文本分类的发展史,主流分类方法的发展,然后考了一道概率题:求一根绳子被切两刀能组成一个三角形的概率。
三面主管面:FM推导,deepfm原理,graph embedding,问了之前的一些项目。
四面交叉面:模型上线时应该注意的事,如果请求过高模型服务挂了怎么办,tensorflow和torch的区别,如何降低模型复杂度。
一面,算法题:快排非递归,旋转有序数组找某个值
二面,算法题:一个二维数组,上有0和1,把所有相邻的1给连起来,求最终有几块连起来的1。 L1和L2正则区别,softmax损失函数。
三面,MapReduce原理,聊人生理想。
一面,算法题:bitmap
二面,算法题:链表去重,扩展:删除链表中的所有重复值
三面,聊人生聊理想
一面问了实习项目,算法题:旋转有序数组找某个值
二面也偏重项目,算法题:使用O(N)复杂度完成GBDT分裂
三面还是项目,算法题:找出无序数组中相隔距离最长的逆序对
四面只问了项目
一面问了项目,算法题:一个数组里只有0和1,把0换到1前面,不能使用统计次数的方法。扩展:如果有0,1,2三个数咋办?
二面项目,算法题:无向图的迪杰斯特拉算法实现。
一面,算法题:在大量文本中匹配词表
二面,算法题:字符串编辑距离,求第n个丑数,最长公共子串
三面,算法题:设计一个hashmap
算法精英加面一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来。
算法精英加面二面:纯项目,聊人生理想。
一面,算法题:链表快排
二面,智力题:100个球,甲乙两个人依次拿球,每次只能拿1-5个,甲先拿,求甲必胜的方案。
一面:聊项目,XGB与LGB区别,Bagging和boostting区别,概率题:一个袋里有很多红球和白球,随机拿出10个球,其中7个红球3个白球,求取出一个球为红球的概率最大是? 这个概率题求大佬解,不会
二面:聊人生理想
三面:聊人生理想,10万个手机号排序。
一面:聊项目,然后面的组是做仓储物流算法的,考了一个场景题,一个订单调度系统,每个订单可以有多个商品,每类商品对应一个货架,仓库里有10台运输车,每台运输车每次可以拿10个订单,设计算法求如何安排订单才能使运输成本最低。
二面:聊人生,项目,然后考了道英文题,用英文介绍自己最喜欢的科目。
笔试:前两道很容易,第三道是一个线段树的应用
一面:聊项目,手写代码,最长递增子串。
二面:聊项目,手写代码,大量数据中找中位数。
熟悉C++/java编程语言,主要研究方向是深度学习、NLP方向,一直有letcode刷题的习惯,有过阿里天池的比赛经历(大概是top15)和实验室的项目经历。最后是在去年4月份的时候拿到了腾讯应用研究岗校招提前批的Offer。
一轮面试
往年腾讯算法岗的一面是在3月中旬左右,一般都是一些基础的技术问题,考察你对常见机器学习算法的了解,建议去Letcode、牛客网、七月在线等平台多刷一些算法题,以及多看《剑指offer》这类面试必备的书籍。
(1)LR、XGB、随机森林的原理、优缺点以及应用场景。这类问题几乎逢面必问,不光是腾讯,美团、头条等其它公司也是经常会问,建议大家好好准备一下这类问题;
(2)LR和XGB算法做特征处理有什么区别?随机森林怎么进行特征选择?等特征处理方面相关的问题;
(3)如何判断一个单链表是否有环?以及环的入口?二叉树的求解等一些常规算法题;(链表和树这类问题会常被问到)
(4)最后也会问一些简历相关的问题,比如:你简历中的项目、比赛等,而且会问的比较细。(比如:我当时和师兄一起做了一个天池工业大数据应用的项目,被一直追着问......)
二轮面试
二面也是在3月中旬,一般是和一面隔2-4个工作日左右,我当时是一面结束后的3天收到了二面,整体感觉和一面问的内容差不多,但除了常见的机器学习问题外,还会问一些算法上的优化、论文相关的问题。
(1)常规的机器学习算法问题,比如:XGB和GDBT相比有什么优势?
(2)深度学习相关。问了RNN、Text-CNN等一些神经网络的原理和应用;
(3)简历相关。相较于一面,除了比赛和项目,还问了我论文的情况,感觉二面的面试官对论文比较感兴趣。。。
(4)论文相关。大概给我讲一下论文的核心思想,你的方法和别人的方法有什么不同?论文中的方法还有哪些可改进的地方等;
(5)可能当天面试的时间没有那么赶,面试官还问了我有什么问题想要问他?通常遇到这类问题,我的一般做法是询问面试官针对上面某个问题的答案,或者是针对自己简历中的某个比较熟悉的项目往深了探讨一下。(个人的一点经验,仅供大家参考。)
三轮面试
二面后其实还是有点忐忑的,感觉自己有几个问题没答好,感觉自己可能会跪~~~。不过大概是两天后还是收到了三面的邀请,感谢面试官的不杀之恩。。。
(1)项目相关,讲讲你天池工业大数据的这个项目,遇到了些什么问题,如何调优,你觉得还有哪些不足等等;
(2)常规算法题,链表、topk的解法等。因为从本科就一直有在Letcode刷题的习惯,所以最不担心的就是这类问题,哈哈;
(3)对深度学习了解的多吗?Bert有用过吗?讲讲Attention,讲讲深度学习不平衡分类算法;
(4)最后就是一些讨论,有问过我如何去落地一个机器学习项目,并且面试官给了他的看法。感觉腾讯的面试官,人都非常nice,没有想象中的那么严。
四轮面试
三面过后等了大概一周左右,迎来了四面。腾讯技术岗的四面才是总监面,后来才知道我四面的面试官是隔壁中心的一个总监,据说都快要上GM了。总监面相较于前面的三轮面试,最大的感受是他会问针对某个问题或是项目的解决思路,不会针对某个算法扣的太细。
(1)针对高维数据,如何做特征选择的?
(2)问了几种评价指标,以及在项目实际上线时候关注的指标;
(3)ID3、C4.5、CART树是什么?分别说下它们的优势?
(4)问了一下简历中项目是怎么完成,怎么落地的,自己在团队中扮演什么角***r /> (5)聊了一下论文和学校的事;
(6)最后还让我做了个简单的自我评价,问了我有什么缺点,哈哈~
HR面试
通常,过了总监面有80%以上的概率差不多可以上岸了,只要你在HR面中规中矩的答下来,尽量用肯定的语气让HR觉得你很想留下来,尽量多说,引导HR的思路,不要只说一句,也不要做杠精。。。
(1)谈谈你在校期间最难忘的经历;
(2)项目中遇到最大的困难是什么?如何解决的?
(3)怎么看待AI整个行业的发展?
(4)有女朋友吗?读书还是工作?(典型的查户口啊......)
(5)除了腾讯,最想去的公司是哪?为什么?
(6)还有什么要问我的吗?
......
最后,大概是将近一周多的时间拿到了Offer,后面就顺利实习,感觉我们组的工作氛围还是蛮不错的。
【总结】
腾讯机器学习算法岗的面试算是非常正规的了,整套面试流程下来几乎能把你几年所学的东西都问到。所以,不要存在侥幸心理,踏踏实实的刷题,复习好常规机器学习算法,尤其是算法的原理和应用场景。
另外,项目和比赛经历非常的重要,往往面试官都是根据项目里用到的方法拓展提问,对项目的优化和改进也问的比较多。还有就是能内推的一定去找学长学姐或是其它资源去内推