Qing 发表于 2018-8-28 09:31:13

面啥挂啥的算法、机器学习岗面经(大量文字)

warning:和offer大佬面经不同,以下全是失败的面试。
描述一下自己,无实习、无科研、无项目的三无渣硕,本科、研究生都和机器学习一点关系没有。开发不会,算法自学,只会写python,感觉没有比我经历更差的投算法岗的了。真正开局一卷草席,装备全靠捡。
面了也好几家了,都是回去等消息吧,挂!9月继续努力,不行明年春招,大家也要加油!面经和大家分享一下,也算攒个人品,会持续更新。 我基础特别差,很多都不会,真的希望自己一步一步做的更好吧,大家别嘲笑我,谢啦!
----------------------------------
首先个人感觉,基础一定要非常扎实,了解算法背后的原理,多想多思考,要扎实到你觉得很稀松平常的问题也要问自己为什么(当然我做不到)。项目每个点都要异常熟悉,不熟悉的干脆不写,哪怕编也要编熟悉(当然我也做不到...)。
以下项目有关的只讲一个kaggle的小比赛(没成绩),有用xgboost和词嵌入和lstm,所以问xgboost和word2vec和lstm的问题比较多,但深度学习其实不会所以问深度学习的都是被怼的。
以下大致能回忆的都回忆了,有些题出现在左神的书里我会标注出来页数。
----------------面经------------------
一、拼多多提前批
1、问主要编程语言。会java吗?会hadoop吗?描述项目。
2、描述word2vec算法,描述sent2vec,描述一下sent2vec怎么得到向量?(当时没复习,不会)
3、我们的商品的标题有几十个字符,怎么得到和某个商品最相似的K个商品?(我说先分词再用词嵌入,平均之后拿这个向量互相算余弦距离)
4、他于是问得到向量后,如何在几千万甚至上亿个商品内找到前K个最相似的。如果提高效率?(我说哈希分片到不同机器并行运算,他说这样是可以,但是总复杂度没降下来,要用什么高维特征检索,我猜测有点类似kd-tree的意思)
二、小红书提前批
1、最有意思的项目。
2、在线做题。一个m*m的矩阵,其中每个n*n矩阵中都有一个最大值(n<m),求这些最大值的之和。(我没做出来,写得很烂。实际上一维的这个问题中,滑动窗口求最大值的和要实现O(n)也需要双端队列去做这个事(左神书P19)。二维的相当于X轴先做一遍、Y轴再做一遍,O(m^2)。最后面试官说这个问题其实是出现在雷达扫描的实际场景中)
三、360提前批
第一次现场面,完全不知道面试是什么套路,稀烂。
1、介绍xgboost一下。写下xgboost目标函数。(因为我提到xgboost在目标函数里显式地加入了正则项..血雪崩)
2、问项目里英语分词器用了啥,jieba用过吗,怎么调整XGB参数,除了logloss用了别的评估方式吗
3、了解其他的分类模型吗,问LR缺点,LR怎么推导(当时我真没准备好,写不出来)
4、写LR目标函数,目标函数怎么求最优解(也不会)
5、讲讲LR的梯度下降,梯度下降有哪几种
6、写代码:快拍,如何写非递归的快排(不会非递归)
7、写代码:最长公共子序列(当时不会写,DP,左神书P210)
7、逻辑函数是啥(Log-Sigmoid,1/(1+e^(-x)))
8、机器学习的模型自己实现过吗(对不起我是真开局一卷草席,装备全靠捡)
8、word2vec是怎么实现的
9、nlp做过吗?讲一讲textrank如何做的(有用过)
10、写一下信息增益
女面试官语重心长地对我说,你小子一个应届生,基础差得一批,啥啥不会,我们这要实现算法的,赶紧滚回去巩固基础,并且多自己实现实现。
四、百度提前批
一面
1、C语言,指针和引用区别(略懵逼,后来发现C里没有引用啊...C++我真不了解)
2、线程、进程的区别(太早以前看的,都忘了,以为算法岗不问这些...)
3、线程间通信方式,进程间通信方式,管道是什么(不会,后来补学了一发)
4、同步、异步区别,服务器客户端场景下(再度答错)
5、堆了解吗?有个什么场景非常适合使用堆?(Top-K问题)Top-K问题怎么用堆,怎么更新堆?
6、红黑树了解吗(具体不了解,只知道是种特别叼的二叉搜索树,为什么叼不知道,大概是比较接近平衡,调整的步骤少)
7、散列表了解吗,怎么存储散列表(基础差真的不行,再次答错)
8、散列表读取的时间复杂度,散列表很大的情况下读取(O(1))
9、hadoop,spark这块用过吗(没)
10、python 垃圾回收机制(不会)
11、python 深、浅复制区别和应用场景(微微一讲)
12、python 可不可以多线程、多进程(我说都可以,不过忘了GIL,晕)
13、python 语言有什么特性 或者你编程时比较喜欢的方面
14、xgboost原理
15、gbdt树根据什么分裂(瞎扯的梯度近似残差、梯度下降方向,其实还是信息增益这种东西)
16、gbdt怎么并发(特征选择层面,树层面不能并发)
17、最长公共子序列,复杂度(DP,时间复杂度O(n*m),空间复杂度可以缩小到O(min(n,m)),左神书P210)
18、写代码:翻转链表(原地翻转,左神书P40)
19、两个单向链表第一个公共结点(左神书P62)
二面
1、写代码:一个有序的连续的数组,其中少一个数,如2、3、5、6、7,O(lgn)找出这个数(写的二分我感觉没错她说我少考虑了...)
3、讲项目,参数是如何调整的,获得了多少收益;一个月的工作中,产生特征的思路,获得了多少收益
4、除了xgboost还知道那些机器学习的模型
5、写一下SVM要优化的函数,直接推导SVM(写到L(w,b,α)时让不用写了)
6、写的过程中问了几个问题,为什么要除以||w||,为什么优化问题中间隔γ可以取1(没答太好)
7、一个六位数的随机密码生成器,不小心拿反了,结果读取获得的密码仍然是正确的,概率多大(前三位和后三位要是中心对称的数字)
8、关键词分析有什么模型,情感分类有什么模型(项目相关)
9、自己搭的搜索引擎结果是如何排序的(elasticsearch用了一下而已),有没有评估效果(没),建索引时和query时分词的颗粒大小
经理面
1、为什么一面面的不好,这些不复习也应该知道,代码是不是写的少,按理学电子的写C也很多(别说了,是我的错,基础差)
2、想从事的技术方向,为什么想做这个(我随意..)
3、为什么说喜欢机器学习,你说的推荐系统和购买预测有什么不同(说不清)
4、未来想做到什么水平,什么人适合做什么,就做什么,不论是技术还是管理,适合最重要,不要羡慕别人的风光
5、当领导需要什么能力,你适合当领导吗
8、怎么学习机器学习,最近看了什么书什么论文,有没有去实现它(说看了gans)
聊人生,特别看重逻辑性
五、58转转内推
1、项目介绍,xgboost介绍
2、为什么要用梯度拟合残差
3、为了达到相似的预测结果,RF和GBDT哪个树深(这个我真答反了,还振振有词地说了一统bagging....可以看看这个https://www.zhihu.com/question/45487317)
4、准确率,召回率解释一下
5、假设加了很多很多负例,auc和prc哪个对此不敏感(实际上auc不敏感,但也有人说因为prc比auc在极端不平衡时曲线差很多,所以用prc能反映真实的分类效果,这个问题各自有各自的道理,可以看看这个https://www.zhihu.com/question/30643044)
6、xgboost对特征缺失敏感吗,对缺失值做了什么操作(知道不敏感,但不知道什么操作..)
7、哪些模型对特征缺失敏感,哪些不敏感(不知道)
8、特征缺失,不用说求均值之类的填补方法,用LR、RF去预测缺失值,哪个好(这个求大佬解答,我真没想明白,我扯的RF,又拎出bagging扯了一番.....)
六、美团内推
一面
1、写代码:一个数组和一个num,O(n)找到数组中两个和为num的数字对的下标(哈希,找num-lists)
2、xgboost介绍,项目的一些问题以及没有做到的,很细
3、项目中用到LSTM怎么用的(血崩开始,LSTM真不会,只是用了下)
4、为什么过拟合,怎么判断过拟合,怎么减少过拟合
5、不变动模型和参数,只对数据来说怎么减少过拟合(说是增加数据,略无语)
二面
1、SVM数据线性不可分怎么办 (软间隔,核函数,讲下软间隔)
2、为什么LR要用对数似然,为什么不用平方损失或者差的绝对值之类的损失(我说类似最大熵问题,得到了光滑的凸函数,面试官说就是为了得到凸函数)
3、接上题,LR中使用平方损失会不会形成凸函数(我没敢答,事实上不是)
4、XGB和GBDT区别
5、泰勒展开怎么写(忘了..)
6、L0、L1、L2范式,他们的作用(雪崩2,我以为自己背得牢牢的,然而...其实L1相当于曼哈顿距离,L2相当于欧氏距离,这下不会忘了)
7、外卖时间预测的整个流程(想了一堆特征,天气、路况、外卖员历史速度、菜色大小之类的,监督学习,用XGB之类的回归)
8、LSTM怎么用,back propagation through time是啥,为什么会梯度消失,back propagation推导,讲链式法则(雪崩3,不会深度学习)
9、讲k-fold CrossValidation,然后问说有一百个数,随机选取数字,让其均匀分成十份,不允许有一次碰撞(面试官说随机一个数字后和最后一个数字交换,依次减小数字的范围。略无语,感觉并没有实际解决问题,又在哈希方向思考了半天)
七、作业帮
一面
1、讲项目,特征工程的细节、不足
2、介绍xgboost,讲讲xgboost怎么用以及常用参数
3、介绍word2vec
4、怎么判断是否过拟合,工程上怎么减少过拟合
5、让我用C语言实现char* strcpy(char *strDest, const char* strSrc)(我说不太会C了,只会python做题可以吗..结果开始问python语言)
python:
6、[[],,[]]之类的list用2位置的数排序,sorted(a,key=lambda x:x),排序怎么反向,reverse
7、[[],,[]]之类的list怎么取出2位置是2的形成新的list:[](还真不会,给写了个for循环的....好蠢)
8、写正则表达式(忘了)
9、对list有什么常用操作
10、python with语句是啥,单下划线/双下划线(不会)
面试官认为python没指针,写代码好像不自然,所以以下都没写代码:
11、单向链表判断是否成环(左神书P62)
12、二叉树前序、中序遍历还原树(很常见)
13、0.7概率生成1、0.3概率生成0的随机数生成器和0.3概率生成1、0.7概率生成0的随机数生成器,用任意个组合成为0.5、0.5概率生成1、0的随机数生成器(我说用俩,生成11或者00则对应1和0,生成01或10就continue,感觉不优雅...)
14、字符串如‘abcDefG’,如何把小写的放前面,大写的放后面,相互间顺序不变,即‘abcefDG’,要求不能额外申请空间(没想出来,主要难点就是想办法如何交换)
15、上一题提醒:有两个数字a和b,如何交换a和b的值,要求不能申请额外空间(异或,左神书P317,问我python怎么异或两个数可以直接异或吗,我说^,这个我试过可行)
16、讲堆排序的过程。建堆,调整等。
二面
1、讲项目、特征工程的细节
2、讲xgboost和gbdt区别
3、n人参加0-100分的考试,确定排名n/2的人几分(桶排序)
4、一个输入流,一直不断输出一个数字,随时可能停止,停止时要求立即输出一个之前所有数中的随机数,即每个数字输出的概率都相同,要求是只能申请常数大小的存储空间,不能O(n)大小。(一直在瞎想哈希,实际上要以概率问题来考虑这个题,即新来的数以1/n概率保留,原来的数以(n-1)/n概率保留。每次来一个数按概率抛弃一个数,剩一个数)
5、然后是上一题停止时要求输出K个数字的方案。(差不多的方法,新来的数k/n概率保留)
6、为什么很多实践或论文中,训练时要分为train、validation、test三部分,分成train、validation不就够了吗?(没说好,我感觉还是测试预测效果,实际上一般k-fold也就是train、validation啊...大佬可以说说)

转载自:https://www.nowcoder.com/discuss/36815

强人锁男 发表于 2018-9-8 11:21:51

资源很好,下面字体好斜:L,
页: [1]
查看完整版本: 面啥挂啥的算法、机器学习岗面经(大量文字)