美团算法面经(搜索算法)
一面
逻辑题:8 5 3升的桶 8升水, 分成两个4升
比较简单的逻辑题,也有通用题目 LeetCode 水壶问题 先试着做一下题目再看 题解算法题:一个字符串,找到第一个只出现一次的字符,n空间n时间,只能扫一次
有原题:牛课题霸:第一个只出现一次的字符
set或者更省内存的bitset算法题:一个整数数组,找最长的先增后降的序列
基础题:牛客题霸:最长递增子序列
先分别找最长递增和最长递减的,然后合并一下就好了c++基础,shared ptr的特点是什么,可以引用传参吗?
c++11的智能指针,通过引用计数来管理,引用计数为0的时候释放内存,有效防止内存泄露的问题,每次拷贝引用计数都会+1,在传参时,不可以引用传参,原因是引用传参不会增加引用计数,在多线程或者闭包场景可能会导致引用计数混乱引发core或者内存泄露的问题项目:为什么设计神经网络解决问题,目前网络存在的问题是什么,后续可以怎么优化
二叉树想必大家都了解,对于只有一个节点的二叉树,只会有一种结构,对于有两个节点的二叉树,那么会有2种可能的结构,那么问题来了,对于有n个节点的二叉树,一共有几种可能的情况?
当时直接就想列一下3,4,5个节点分别有多少种可能,然后看能不能找到规律,可是当去遍历4个节点时,发现遍历不住了,就放弃了。然后灵机一动,发现对于n个节点的二叉树,去掉根节点之后,会出现2个种情况。
第一种
一种是变成一颗n-1个节点的二叉树,这种情况存在两种可能。
第二种
另一种情况是,会变成一个a个节点的二叉树和一个b个节点的二叉树,a+b=n-1。
这样很容易列出递推公式,问题就引刃而解了。
上面公式可以优化一下,我们设 ,这样可以优化为
- 这个题目感觉挺新颖的,大意是我们令a-z对应数字1-26,这样我发送给你一串数字串比如123,然后进行解析会有abc,lc,aw这3种情况,然后你输出3表示有3种可能。那么问题就来了,我传给你一串数字串,然后你告诉我有多少种可能的情况。
这题目很明显是用动态规划来做,最开始我想法是用来表示的串有多少种可能性,那么递推公式为
当时以为就解决了,可是发现在对123进行验证的时候发现有4种情况,最后发现原来是1,2,3这种情况重复了。简直心碎啊,当时时间紧迫,没有容我三思。不过面试完了之后,我继续研究这个问题,当天晚上就想出来了。用表示子串有多少种可能的表示,我们可以发现,对于来说,无非就是在后面加了一个数字,当不能构成一个1-26的数字时,那么其实,而当可以构成1-26的数字时,.这样递推公式就是
二面
- 项目:为什么设计神经网络解决问题,目前网络存在的问题是什么(确实是和一面的问题一模一样)
- 二维有序数组 找target
原题:牛课题霸:二维数组中的查找 - 一个人打靶十次命中7次,命中率是70%,这个概率是怎么估算出来的
面试官实际是想问极大似然估计,理解了题意之后就好回答了 - 两瓶墨水,一红一黑,用小勺从红墨水瓶里舀一勺放入黑瓶,搅拌均匀,然后从黑瓶里舀一勺放入红瓶,这时红瓶里的红墨水多还是黑瓶里的黑墨水多?如果不搅匀呢?
都是一样多,搅拌均匀的话可以很容易的写出公式。不搅匀的话,直接宏观来想,是守恒的,红墨水少了多少,就需要用多少黑墨水来填
三面
-
算法题:顺时针打印二维数组
原题 牛课题霸:顺时针打印矩阵
关键考点是边界条件,奇数偶数两种情况如何简化代码,极限情况(例如1*1的矩阵)要确保能打印 - 项目细节 出发点,为什么这么做,如何迭代的
- 如果离开前一家公司的话,如果挽留你,什么地方最让你留恋,最可能不离职了
美团 问的算法和机器学习的都很深入。
问的算法和机器学习的都很深入。
先自我介绍之后,就是编程算法题了
1.输出一个字符串的下一个字典序
如ABDC 输出ACBD(不会。。)
- 输出一个字符串的最长回文(没写完整,时间拖太久。。,他直接说下一个了,应该要用两个辅助栈)
3.n个苹果放入m个盘子中有多少种方法(不能用排列组合,算法实现)(动态规划)
问题: - 两个集合如何求并集,交集
- 两个集合如何求相似度,维度不一定相同
- 如何找出N个数的中位数,内存不够怎么办
- Top k问题
- 你最熟悉的两个机器学习的算法,我说了LR和SVM。然后让我讲SVM,需要推公式,我。。推。如何分类非线性问题,答核函数,知道xx核函数吗(径向基核,好吧,就是高斯核),没听过(只知道多项式核,高斯核),核函数的优缺点(优点避免高维运算,缺点不知道。。),SVM的优缺点,balabala
- 给你1000w篇文档或html,如何判断是否为体育类的新闻,需要给出系统的方法(分词+人工判定+词库+SVM训练),你觉得整个过程中有哪些需要注意的地方,我提到了过拟合,面试官:有哪些防止过拟合的方法,答:添加正则化项,交叉验证,树的话可以剪枝,问:还有呢,我。。。
- HashMap如何实现,解决碰撞还有哪些方法,TreeMap呢,红黑树的原理,平均时间复杂度,最差的时间复杂度?O(lgn)?那边比较耗时间?答更新的时候需要左旋右旋?
- 知道map-reduce吗,shuffle是做什么用的?如何用map-reduce对浮点数排序(只做一次map-reduce)?
- 用什么数据结构实现深度优先搜索?广度优先搜索?层次遍历?我:层次遍历和广度优先搜索不是类似的吗,面试官:你确定?我。。
- 问了下协同过滤和KNN模型,他说了几个术语我都没听明白,我只知道根据相似度做推荐。面试官说:貌似你的项目都是偏开发的嘛,我。。有没有手动实现过什么机器学习算法,我。。
- 实现负载均衡的算法,轮询,一致性hash,最小连接数。。面试官:还有呢,我。。想不到了
面试官貌似比较纠结要不要让我过,考察的确实蛮深入,编程的写的不好,最后犹豫了一下还是把我挂了,这一面时间真的很长啊9:15-10.30,面试官各种追问,招架不住。
微软Bing团队面经
写在前面
微软的面试整体偏向基础,英语能力考察仅限于个人简介和项目描述,如果运气好的话都是中国的面试官,没有英文面试。
投递简历之后会有hr先和你聊一轮,要求做一个一分钟的英文自我介绍,然后会对英文能力做一个整体评估,告诉你应该怎么准备可能的英文面试。
下面是技术干货部分
电话面试
微软的社招面试通常是先进行一轮电话面试,面试通过的话才会邀请进行现场面试
- 什么是死锁,造成死锁的原因有哪些
- 数据库的索引有了解过吗,有哪些优缺点
- 算法题:rotate一次的数组,找target,例如 [3,4,0,1,2] 找4所在的位置,如果不存在返回-1,要求logn时间 (LeetCode medium原题,直接二分即可,写代码之前记得问有没有重复元素这类二分可能会遇到坑,面试官很nice 很乐意多交流,另外ms的面试风格,一定要自己想test case,尽可能的覆盖所有边界条件)
现场面试
电话面试之后会约现场面试,通常会安排5-6轮的面试,每轮一小时,前3轮是基础面,面试结束后面试官商量决定要不要进行后续的面试,当然如果表现比较差,也可能在某一轮直接结束。
1面
- 算法题:最大子数组和 (LeetCode原题,n时间1空间)
-
算法题:两个长度为m的无序数组A,B,对于任意不相交的区间ab和cd,val[ab]=sum(A,a,b)- sum(B,a,b),val[cd] = sum(B,c,d)- sum(A,c, d)
求abcd,使val[ab] + val[cd]最大 (这题比较难,先写了个暴力解法,然后和面试官逐步讨论优化,没有给出最优解法) - n个准确率为50%的分类器,可以通过什么方式提升准确吗?60%呢?如果可以,提升到96%需要多少个?(这题在台大林轩田的机器学习课程里有提到过)
- xgb和gbdt的区别 (几乎必问的题目,提前准备一下,说的要有条理,有哪些算法优化,哪些工程实现优化,可以适当扩展提一下lgb)
- 前序遍历 中序遍历 后序遍历 知道那些可以恢复二叉树,只知道前序和后序可以吗?原因?
2面
- 无序数组找第k大的数 (经典题目了,这类题目可以表现一下思考过程,比如最开始最直观的做法是排序,然后优化的思路,不需要全部排序,部分有序就可以了,最后能给《算法导论》里的n时间解法当然最好了,给不到的话给个nlogn的解法也还可以吧)
- 一个字符串 切分成多个回文串,返回所有可能,如aab要返回 [[aa,b],[a,a,b]] (印象里应该是LeetCode原题)
3面
- 实现atoi 考虑所有情况 (LeetCode medium,记得考虑所有异常情况,包括溢出)
- 实际业务问题,如何屏蔽搜索结果的成人内容展示 (面试官一直提示说各种方法都可以,当时的思路被局限在了模型上。这类业务问题的通用套路:先考虑简单的规则,把所有可能覆盖的规则描述一遍;然后拓展到模型,想一些规则cover不到的case,但是模型有能力cover)
4面
- 细聊项目,里面的bad case怎么解,具体的优化方向 (这里主要考察的还是对自己项目的思考深度,面试官可能会挑战,你这个项目用一个简单的规则就可以解决,为什么要用模型。需要准备好可以应对挑战的典型case,能说服面试官。另外就是项目收益的评估问题,怎么评估模型正向,模型怎么上线)
5面 aa
- 聊人生聊理想 (对未来要做的方向的考虑,为什么工作了一年就想跳槽,需要准备一个合适的跳槽理由,然后说一下目前的想法,一定要主动去询问面试官,怎么样合理的做职业规划,面试官会很耐心的解答)
- 估算北京地铁有多少司机 (《编程珠玑》里有一章专门讲估算的)
转广告推荐 加面aa
面完bing搜索之后,hr告知面试通过但是组内没有HC了,帮我转了bing的推荐组
滴滴算法面经(定价策略算法)
校招时候就面过滴滴,整体感觉滴滴是面试体验最好的,面试官是以一种平等的态度来交流技术,即使有时候卡壳也会慢慢提醒(两次都拿了offer)
安利一下 牛客题霸
https://www.nowcoder.com/activity/oj
最近各大厂的视频面试都用牛客平台,要求编译运行,难度比白板写提升了,多写写练练手帮助很大,面试时候写个bug free的代码,拿到offer的概率大大提升
1面
- 项目,针对项目中的细节询问比较多,比如怎么抽象问题,损失函数怎么定的,为什么要选这个损失函数,正负样本怎么来的,怎么验证结果
- 算法题:求树深 时间复杂度(LeetCode easy,时间复杂度是O(N),因为要扫一遍所有的节点)
- 算法题:矩阵,只能向右或向下,求最大路径 时间空间复杂度(LeetCode easy 入门级的动态规划,时间复杂度O(M*N),空间复杂度O(N))
- linux基础:awk实现left join(算法工程师少不了的基本功,awk sed建议学一下,实际工作中也是很有用的)
- 机器学习基础:boosting和bagging的区别 (bagging就是投票策略,会降低方差,减小过拟合风险,boosting是降低偏差的策略,可以描述一下 Adaboost和gradient boost的区别)
- 梯度下降的更新公式,和梯度提升的区别 (这里可以继续结合boosting来说,梯度提升是在函数空间的,而梯度下降是在参数空间的)
2面
- 机器学习基础:xgb和gbdt区别(基本是必考题目,从主要的优化点说起,xgb是二阶泰勒展开,gbdt是一阶,可以类比牛顿法和梯度下降法的区别,牛顿法收敛更快,但是由于更快逼近目标,会增大过拟合风险,因此在目标函数里有一个显示的惩罚项,与叶子节点数和叶子节点的权重有关,来控制模型复杂度;另外还有分裂节点的选择,xgb怎么选取最优分裂节点,有哪些加速的优化之类的知识)
- 算法题:给一个字符串和一个k,要求找到不超过k个不同字符的最长子串的长度,on时间(LeetCode上的medium或者是偏简单的hard题目,用划窗的思路做)
- 概率题:2人抛硬币,正面赢,反面让另一个人抛,求先抛的人获胜的概率
- 深度学习基础:cnn和全连接的区别(参数共享,降低运算量)
- lstm有什么新的改进,替代(针对rnn来说 通过门电路把连乘转换成了连加,一定程度上缓解了梯度消失问题,梯度爆炸可以直接clip不需要考虑,另外就是广度了,lstm的应用和改进)
3面
- 预测一个城市不同区域一天的发单量,和滴滴业务相关,设计一些调度策略
- 预测一个城市不用区域的降水量(这个可以作为前一道题的特征)
- 判断用户感知是否顺路,给出思路(怎么获取训练数据,怎么去判断用户的感知到底顺不顺路,找一些简单的规则)
- 概率,抛硬币,连续两次正面向上为止,求次数期望
猿辅导算法面经(OCR算法)
作者:记记面经而已
写在前面
面猿辅导之前经历了大厂3连跪,刚开始社招的时候没有准备好,其实心里是很慌的。
而且听说猿辅导的面试难度也不低,所以没有想到能顺利过面试
面试前还是要好好刷题
牛客题霸 https://www.nowcoder.com/activity/oj 搞起来
正片分割线
1面
先自我介绍,大概1分钟左右,准备延伸到项目开始讲的时候,面试官直接打断了,说先来做题吧
算法题1:
输入 链表 453612 target 3
输出 451236 就是把target后面的小于target的数移到target前,其余都保持相对关系,返回链表头节点
算法题2:应该是leetcode pathsum
输入 二叉树,target
输出 所有从根节点到叶子结点的和为target的path
两个算法题基本是在easy到medium之间的,刷过题的话应该都能秒解,题目1一定注意边界条件,面试官看的还是很细的,给我指出了一处问题,修改之后就没有问题了
介绍深度学习项目:
面试官主要的关注点在训练数据,毕竟标注数据是稀缺资源。这类问题要着重准备,即使面试官不问,也可以主动提,难点是标注数据太少了,然后是怎么去做数据增广的
2面
介绍深度学习项目:为什么用深度学习解,出发点是什么,模型最后学到了什么内容。(好像在leader面的时候会比较关注一个项目的出发点,有没有数据佐证,说明不是为了用深度学习、为了炫技而用深度学习,建议提前准备这类问题,可以在介绍项目的时候主动说,算是一个加分项)
hmm 维特比算法(NLP相关必考了,这里的应用点是解决识别准确率)
实现一个不考虑转移概率的维特比,要求给出topn的路径 (现场写代码,用了堆实现的,没太准备好,写的比较乱)
3面 hr
优缺点
最有成就感的项目,为什么有成就感,遇到什么问题,怎么解决
总结
- 刷题 刷题,记得总结分类,避免同类型题不会做
- 项目要好好准备,和校招很大的区别是,面试官会问为什么做这个项目,前期的调研和数据支撑非常重要,这个问题回答不好的话,整个项目是没法让面试官信服的。还有项目中一些工业界常见的问题,前面提到的训练数据量不足的问题,还有模型训练时间,迭代周期的问题,如果迭代速度慢,怎么解决
- 关于方向的问题,工作一年还没有定型,所以不要担心换方向的问题,nlp面cv,推荐完全没问题。面试官更看重的是:基础扎实,工程实现能力强
小米算法面经(推荐算法)
写在前面
猿辅导面试通过后,也算有了一些信心,差不多找到面试的状态了,后续的面试也顺利了很多
刚开始准备面试的时候,多刷刷面经,有了几次面试经历之后,要自己多复盘,想想面试的时候,什么地方回答的不好(主要是项目经历的部分)
算法题方面就算是硬实力了,需要好好刷题
牛客题霸 https://www.nowcoder.com/activity/oj 搞起来
正片分割线
一面
- 先自我介绍,我的习惯是经历简单介绍一下,然后自然转向准备最充分的一个项目开始详细讲,面试官感兴趣的话最好,不感兴趣的话会直接打断的。主要介绍了项目的背景,难点和解决方案,面试官关心的点主要集中在问题抽象和损失函数,讲清楚为什么这么做,项目大概聊了半小时左右
- 机器学习基础:推导 lr,写出loss和梯度(比起推导svm来说简直就是送分题,要是写不出来的话估计会直接挂,基础还是要好好准备)
-
算法 链表对折 1 2 3 4 5 变成 1 5 2 4 3
拆解一下题目,(灵活)
a. 找到链表的中点 牛客题霸: 链表中倒数第k个节点 是找中点的复杂版,都是双指针解法
b. 翻转后半段链表 牛客题霸: 翻转链表
c. 合并两个链表 牛客题霸: 合并两个有序链表 是复杂版
二面
项目介绍
- 先介绍项目,主要聊了项目背景和收益,收益具体怎么衡量,项目如何上线生效
- 算法题 m*n的二维数组,只能往右或者往下,找最短路径,n空间 牛客题霸: 矩阵的最小路径和
- 有了解过设计模式吗?(答了常见的工厂模式和单例模式,对应的应用场景,简单扯了一下装饰器模式,也是看xgb源码看到的,其实不会用)
- 系统设计需要注意什么,如何设计一个系统,系统性能如何评估,需要考虑哪些指标(考察点应该是线上的系统了,指标比如内存使用率,qps,99 39 49时间之类的)
- 之前帮阿里云录制过一些深度学习的入门课程,简单聊了一下相关的内容
三面
- 介绍xgb
a. gbdt和xgb的区别(居然没有问lgb)
b. 怎么选最优分裂节点,怎么加速,预排序有什么作用,怎么分箱,等宽还是等深
c. 怎么处理缺失值的,预测时候缺失值怎么办 - 为什么离职,希望一份什么样的工作
- 有没有什么问题想要了解的(问了业务场景 工作内容)
总结
整个面试下来,感觉问的基础题偏多,机器学习的内容偏多,基本没怎么聊深度学习相关的事情。工程方面的问题也有涉及,感觉应该是推荐系统早期的建设阶段,更多的工作内容偏向于工程落地实现
百度算法9.27三面
一面:50分钟
1、自我介绍
2、问实习,问得挺细的
3、开始撸代码:第一题:剑指offer上面的~数组中出现次数超过一半的数字,当时给了两种解法,面试官问两种有什么区别,就说了时间复杂度和空间复杂度不一样;第二题:求解完全二叉树节点个数,要求是必须要用到完全二叉树的性质
二面:一个多小时
1、问实习、问项目,问得更细
2、撕代码:大致的意思就是百度需要做一个检索的工作,我需要写的就是通过给定的一级目录id,输出所有的子目录id
3、问机器学习的,SVM,LR,xgboost原理
4、激活函数的种类,饱和激活函数有哪些,缺点是什么?BN的原理以及效果?
5、深度学习过拟合欠拟合如何解决?
三面:四十分钟:
1、问实习问项目
2、考了一道智力题
3、开始谈人生聊理想:(1)你的缺点是什么?(2)你最大的遗憾是什么?(3)你曾经放弃过什么?(4)曾经有什么事你特别想去做但是最后放弃了?(5)曾经有什么事你特别想去做但是某个时间段你放弃了然而最后你还是坚持下来了?(4)假如领导必须要你做一件你不想去做的事你该怎么办?(5)对未来的规划是什么样的?(6)目前找工作的情况怎么样?(7)期望地点是哪里?
4、有什么需要问我的?直接说面试官的回答吧:这次招聘(说是招聘我觉得几乎没有hc了)是联合招聘,需要比较所有人的面试成绩然后择优录取。
58nlp算法面经
找了在58NLP工作的本科同学内推,估计HR给忘了,第一批没内推上,只赶上了第二批笔试,当时已经开奖了好多人了,感觉坑位不多。
笔试:9.14笔试,20选择+3代码,一个半小时,感觉时间有点紧,选择题十几分钟草草了事,抓紧时间搞代码,结果三道全是签到题,10分钟3/3,一共半小时交卷,感觉58已经招满人了
一面二面:9.17
一面:
1.自我介绍
2.今后的事业规划、研究方向
3.项目1:为什么选择这种模型,有尝试过其他模型吗
4.BERT的优缺点
5.PTM都了解哪些,BERT与GPT区别
6.单项与双向在实际训练时有差别吗
7.bert的mask会带来什么缺点吗
8.项目2:句对匹配任务
9.每次查询都要与库里所有的数据做计算,有考虑过优化么
10.手撕代码 :
(1)经典DP
(2)判断两个链表是否相交
ps:没给反问机会
二面:
1.自我介绍
2.挑一个比较重点的项目开讲
3.知识库有多大,数据是分层存储的吗
4.数据是如何收集的
5.问题会有子问题吗
6.准确率怎么验证的
7.效果会跟数据集有关系吗
8.sentence pair怎么改进的
9.CNN与RNN的区别
10.Transformer原理
11.注意力机制有哪些种类,本身原理上起了什么作用
12.怎么解决过拟合问题
13.BN在原理上怎么解决过拟合
14.常用损失函数有哪些
15.回归问题主要用哪些损失函数
16.隐马尔可夫了解么
17.数据不平衡怎么处理
18.数据不平衡的损失函数有哪些
19.交叉熵是什么原理
20.系统搭建怎么搭建的
21.项目3介绍
22.评价体系是什么
23.词向量有哪些方法
24.分词了解么
25.工作上的规划,地点有选择吗
26.工程上的开发与落地有经验吗
27.知识蒸馏是什么,通过什么方式来简化,比如albert,具体原理是什么
HR面:9.27
字节电商NLP一面凉经
一面 8.19 电商部门NLP岗
1.自我介绍
2.项目介绍
3.word2vec原理,如何得到词向量
4.如何分词,分词原理
5.竞赛介绍
6.lightGBM是什么模型,GBDT原理
7. 数据集分成几份,每份的作用是什么
8.怎么知道模型过拟合了
9.如何应对过拟合
10.dropout是什么
11.过拟合什么情况下比较容易产生
12.tensorflow用过么,pytorch用来作过什么事情
13.场景题:现在有一些新闻,包含军事、体育、经济等,想分出它属于哪个类,该怎么做
14.能讲下BERT么
15.手撕代码:二叉树路径上和为target的最长路径
依图NLP算法凉经
一面:9.4 新加坡部门跨国面试
1.是保研吗
2.实习
3.项目1
4.BERT为什么有效,与其他模型相比呢
5.Transformer优点
6.数据源如何来的,数据更新如何解决
7.embedding方式有哪些
8.word2vec训练时出现过问题吗,比如训练后的词之间的相似性不准
9.爬虫框架用过哪些
10.手撕代码
(1)手写字典树
(2)二叉树的遍历 递归非递归
二面:9.8
1.自我介绍
2.项目1
3.粗筛能过滤多少数据
4.评测过第一步的性能么
5.BERT原理,
6.正则化是什么,LN是什么,作用是什么
7.过拟合手段有哪些
8.Dropout原理
9.hyperscan的原理是什么
10.模型预测错误的数据,为什么会错,分析过么
11.sentence pairs模型中,为什么不直接用score排序
12.为什么要选用这种模型
13.自定义损失函数是什么,为什么要用这个
14.手撕代码,leetcode.33
结果:挂了 代码没写好只记得offer上有差不多的题,现场写的时候有些紧张,脑袋一片空白,转不动了,写了20分钟磕磕绊绊才写出来,第二天一查结果 果然挂了
贝壳NLP算法面经
一面
1.LDA基础知识
2.LSTM梯度消失/爆炸
记不清了
二面
1.自我介绍
2.项目介绍
3.LDA主题数目确定
4.Gibbs采样和变分推断
5.GIbbs优化目标是什么
6.Gibbs采样与变分推断的优缺点
7.常用的模型(LSTM+BERT),训练语料
8.BERT原理
9.Bert与LSTM比较
10.样本不平衡的处理方法
11.了解NER么
12.统计类模型了解么 阴马
13.编程语言用什么,C++会么
14.embedding的方法(word2vec \glove\ fasttext)
15.glove 与word2vec的区别
16.LR,SVM与XGboost了解么,介绍一下
17.GBDT,Xgboost的区别,Xgboost分布式计算是计算什么
18.代码:写快排
HR面
1.实习经历,
2.说一个印象最深的项目,收获
3.今后还做这个方向么
4.目前关注的公司
5.对贝壳了解么
6.可以实习么
7.在哪个校区
8.反问(两周之内给结果)
字节算法工程师-头条生态:一面凉经
1. 面试安排:长时间(10余天)的简历审核,请求内推人帮忙查询进度后,立刻收到了面试通知(直接免笔试);
2. 面试环境:因为在国外,视频面试有一定的延迟、回声;面试官全程佩戴口罩,看不出喜怒 😶;
3. 面试内容:
问项目:楼主主要做图神经网络、NLP相关内容。面试官只询问了关于图神经网络的项目,过程约10分钟,最后以“图神经网络这块我也不太了解,我们来问点基础的 ”,转到下一话题;
问基础:约10分钟
LR的公式、原理;
BN的原理、 作用、训练与预测时的差异;
如何判断Overfitting的产生,如何减轻Overfiting;L1 Norm 和 L2 Norm的差异,为什么L1 Norm能获得稀疏解;
4. 写题:约20分钟
反转链表中偶数位置的值,例如1-2-3-4-5-6-7 变为 1-6-3-4-5-2-7;
写出主要部分,但局部有细节瑕疵;
从K个整数中,组合出能被3整除的最大数,例如: [1, 2, 3],组合出能最大能被3整除的数是321;
给出回朔法的解法,面试官表示并非最优解
5 反问:约5分钟
问业务,答 曰主做推荐;问图神经网络是否在你们部门有应用,答曰部门有人在做,我说那样便好,有所契合;
问既然做推荐,为什么不问推荐相关的知识,我有所了解;面试官答曰,简历上没写,没法问;
感觉不难,但还是挂了,有些遗憾... 补投了字节的一些实习,再接再厉吧😶
算法岗秋招面经总结
面经总结:
写在前面
本人秋招期间,看了许多牛客上的面经,收益匪浅。如今本人秋招已经接近尾声了,在此写一下秋招总结,回馈牛客。
首先说一下本人背景:算法岗,科班,本硕都是某 985。有一段两个半月的大厂非核心部门实习经历,一篇冷门方向的 SCI 一区期刊论文,一个小比赛的 TOP5。(实习比赛论文都有,但每样都一般般,所以秋招也是十分艰难)
秋招结果:投递了大大小小 30 多家公司,目前是拿到一份意向书。
意向书:字节(经历了一次笔试挂,一次三面挂,再被捞三面后上岸的)
泡池子:京东物流,华为,360,OPPO(其中 360 和 OPPO 已经开过部分奖了,我应该排序比较靠后或者挂了)
二面挂:阿里(二面完后很久状态都没改变),百度正式批,腾讯 PCG
还有一些投了之后没消息或者笔试完后没消息,这里就不列出来了。
面经总结
1. 项目相关提问
项目相关提问我只列举一下可能对大家有借鉴意义的问题。
1. 有没有观察单个特征和标签之间的联系
2. 每次加入一个特征,如果效果没有提升则不使用该特征。那怎么处理特征组合的问题。(组合后可能变好或者差)
3. ID embedding 怎么做
4. 项目中 Embedding 学习到的是什么,特征交叉的作用是什么
5. 为什么使用 DeepFM 来进行特征交叉
6. DeepFM 和 Deep&Wide 区别,写一下 FM 公式,DeepFM 优点
7. DeepFM 只是简单的交叉,其他复杂点的对特征进行交叉的网络了解吗
8. 你说你发现了训练集和测试集分布不一致的问题。你是怎么发现这个问题的,怎么诊断定位,除了可视化还有没有其他直观的指标
1. 对于一个算法课题,你觉得最重要的几个环节有哪些。
2. 项目遇到了什么困难,如何解决?
4. 项目中使用了哪些特征?如果要继续改进的话,还可以使用哪些特征?
5. 有没有使用其他更好的算法来解决问题
6. 你觉得你实习做的项目还有哪些地方可以做优化
7. 项目遇到瓶颈,反映在业务上是怎么样的,你要怎么去解决这个问题
8. 有没有调研过业界的做法
1. 你的比赛任务,四分类,评估指标用 auc 合理吗
2. 比赛的 LSTM 和 CNN 是怎么用的,为什么可以用。讲一下 RNN 和 CNN 的区别,为啥在你这个比赛中 LSTM 比 CNN 效果好
2. 机器学习基础相关提问
特征相关
1. 讲一下特征工程
2. 类别特征编码方式有哪些?如何解决 target encoding 的 target leakage?count encoding 有个缺点:测试集和训练集分布不同,导致特征频率不一样。怎么解决?
3. 如何进行特征选择
4. 项目中如何做交叉特征,为什么这样交叉,基于业务意义?
5. 为什么需要计算特征重要性,计算特征重要性的方法有哪些
6. 连续特征怎么分箱,如何判断分箱的结果是好是坏
7. 特征平滑方法有哪些
8. 怎么处理长尾问题,从样本,模型的角度来看,从优化器的角度来看
9. 什么样的 ID 经过 Embedding 后可能有效,如何筛选有效的 ID。有些 ID 数量级很大,怎么处理
神经网络相关
1. 神经网络如何跳出局部最优
2. 神经网络如何缓解过拟合, 讲一下 dropout,dropout 训练和预测的时候有什么不同, dropout 操作类似于机器学习中的什么操作
3. batch normalization 和 layer normalization 区别,写一下 bn 公式
4. 优化器了解哪些,adam 相对 sgd 的改进
5. 激活函数的作用,各个激活函数的优缺点
6. tf 处理特征的类有没有了解( tf.feature_column)
7. 讲一下 word2vec,有哪两种形式,词的数量比较多,分类时怎么优化, word2vec 怎么做负采样
8. item2vec 有没有了解
9. 多分类如果有 10000 类别,怎么优化
10. graph embedding 了解吗,神经网络做 graph embedding 了解吗
11. 讲一下图神经网络
12. tf embedding_lookup 原理
13. 文本分类有了解吗,说一下 textcnn
14. 如何缓解 RNN 的梯度消失
15. 讲一下 LSTM。LSTM 为啥能缓解梯度爆炸和梯度消失?LSTM 激活函数可以使用 relu 吗
16. 排序算法了解吗?说了快排,归并,冒泡等(后面发现好像问的是 ctr 中的排序算法)
17. 了解哪些推荐算法,nlp 的预训练模型了解吗,attention, transformer,bert 了解吗
18. CNN 和 RNN 在实际使用中有哪些优缺点?NLP 中,什么情况下使用 CNN,什么情况下使用 RNN?
19. 神经网络权重全 0 初始化会有什么问题?应该怎样初始化?讲讲 Xavier 初始化
树模型相关
1. 树模型怎么处理连续特征
2. 随机森林的随机性体现在哪里?boosting 和 bagging 区别。随机森林是不是树越多越好。随机森林采样是有放回采样还是无放回采样
3. c4.5 用来解决 ID3 什么问题,gbdt 和 rf 分别是集成的什么思想,解决什么误差
4. GBDT 怎么生成一个新的树,怎么确定叶子节点的权重
5. 随机森林和 xgboost 那个树的深度更深
6. XGBoost 和 GBDT 的不同,为啥 XGBoost 选择决策树作为基分类器?
7. XGBoost 和 GBDT 分裂叶子节点的不同之处,写一下 XGBoost 计算节点分裂收益的公式
8. XGBoost 如果损失函数没有二阶导,该怎么办
9. GBDT 和 XGBoost 用什么基分类器,如何分裂叶子节点,处理分类问题和回归问题有啥不同
10. Lightgbm 相比于 XGBoost 的改进,LightGBM 为什么比 GBDT 快。LightGBM 怎么做并行
11. 看过 XGBoost, Lightgbm 等的源码没?(没有。。)
12. 讲一下 bagging,boosting,stacking
13. stacking 和 nn 的区别?(nn 也可以搭积木,拼接)
其他
1. 哪些算法需要对特征先进行归一化,这类算法有什么特点,不进行归一化的缺点是?
2. 如何解决过拟合,讲一下 L1 和 L2,L1 为啥能得到稀疏解
3. 如何处理样本不平衡
4. 分类和回归任务有哪些评估指标
5. 写 huber loss 公式
6. auc 是啥,怎么解释。如果线下 auc 好,线上 auc 变差,有什么可能的原因
7. auc 针对的是单个值的排序,那么怎么对 list 进行排序(ndcg ?)
8. 多分类 auc 怎么算
9. 交叉熵公式
10. LR 的损失函数是啥,怎么来的,手推 LR
11. LR 如何优化目标函数
12. SVM 和 LR 区别
13. 为什么 LR 使用交叉熵而不是 MSE
14. 讲一下先验,后验,最大似然估计,最大后验估计
15. 抛一次硬币,正面为上,是啥分布。抛 n 次硬币,正面为上的数目是啥分布
16. 广义线性回归了解么
3. 排序,操作系统,数据结构,计网
这方面问得比较少
1. 快排时间复杂度
2. 排序算法了解哪些,讲一下快排和堆排,堆排适用于哪些场景
3. 讲一下哈希表,哈希表用什么数据结构实现,怎么解决哈希冲突,哈希表数组空间大小怎么确定
4. 线程,进程是啥,进程间通信方式,如何保证线程安全
5. 多进程和多线程区别,各自的适用场景,线程安全怎么解决,有哪些锁,乐观锁悲观锁了解吗,自旋锁适用于什么场景
6. TCP 协议了解吗
4. 编程语言,大数据相关
Hive 相关
1. 了解 Spark,Hadoop,Hive,Scala 吗?(我基本不会,实习时写过一些简单的 Hive SQL)
2. Hive SQL 大表 join 小表,可以怎么优化
3. Hive sql union 和 union all 区别,行转列和列转行了解吗
4. Hive 读取 json 某个 key 对应的值
5. Hive 数据倾斜怎么处理
Python 相关
1. 说一下 Python 中的 lambda
2. Python copy 和 deepcopy 区别, if a 和 if a is not None 区别
3. Python is 和 == 区别,两者分别在比较什么?Python 没有 switch... case.. ,如何优雅地实现
4. Python 有哪些对象类型,哪些是可变对象,哪些是不可变对象
5. Python 中,li = [0,1,2] ,那么 li[3] 和 li[:3] 分别返回什么
6. Python 写过多线程吗
7. 字典有 key, value,按照 value 进行排序
5. 手撕
链表相关
1. 链表翻转
2. 合并两个有序链表
3. 判断链表是否有环,返回环的入口
树相关
1. 无序数组转二叉搜索树
2. 两个树节点的最近公共祖先
4. 无序数组转平衡二叉搜索树(不能先对数组进行排序)
5. 给你两颗二叉树 a,b(只有数的结构而没有 value),判断a 是否 b 的子树(只需要 b 的某个子树结构跟 a 一样就行),能否继续优化?
DFS,BFS
1. 打印字符串所有子序列
2. 字符串全排列(字符串可能有重复元素)
3. 迷宫问题,迷宫里有多个人处于不同位置,每个人逃出迷宫有最短路径值,求这些最短路径值的最大值
4. 划分为 k 个相等的子集:给定一个整数数组 nums 和一个正整数 k,找出是否有可能把这个数组分成 k 个非空子集,其总和都相等
排序,大小
1. 子数组最大和
2. 子矩阵和的最大值
3. 两个有序数组的中位数
4. 求数组的第 k 大数,时间复杂度是多少?
6. 一个数组只包含0,1,2三个数,对这个数组进行排序
7. 最大数组合:给定一个非负整数数组,求一个拼接出来的最大数。比如 [2, 32] => 322
DP
1. 股票最大利润(只能交易一次)
2. 走楼梯方法数,一次可以走一个台阶或者两个台阶,总共有 n 个台阶
3. 01数组,长度为 n,1代表可达,0 代表不可到达,一次可以跳 3 到 5 步。求跨越该数组的最小步数(起点可以看成 index 为 -1,终点可以看成 index 为 n)
其他
1. 顺时针打印二维矩阵
2. 升序数组,求不同绝对值个数
3. 二维平面判断一个点是否在三角形以内
4. 给定数组,计算有多少个子数组和为 target
5. 怎么编程求几何平均值,需要考虑什么情况,怎么解决
6. 提供东西视图和南北视图,求城市体积最大值,最小值,leetcode 807 变种
7. 正整数数组满足 2 * a[i] < a[i+1],给定数字 K,数组中是否存在两个数 x + y = K
8. 协同过滤中,需要计算用户相似度矩阵。给定用户 ID,每个用户的听歌列表(music id 列表)。计算用户相似度矩阵
9. 给一个数据表,有两个字段(user, login_time),用 SQL 求连续两天登录的用户占比
6. 场景题,开放题
1. 在搜索框输入文字的时候,会出现搜索提示,比如输入‘腾讯’可能会提示 ‘腾讯视频’。你觉得搜索提示是用什么数据结构来实现的
2. 学校门口的十字路口车流量预测,怎么建模?(已有历史车流量数据)
3. 年龄预测(范围 10 到 50),目标是最大化准确率,怎么设计损失函数?如果要求预测结果在正负 3 以内就行,怎么设计损失函数,如何优化?
4. 有个商品库,商品库记录的车的型号,最低价格,最高价格(没有精准价格)。当前用户在浏览某个商品,要求推荐同个档次的商品,如何建模?假如商品库很大,要推荐相似度最大的 3 个商品,如何解决?
5. 定义兄弟字符串如下:若两个字符串存在一样的字符,每个字符次数都一样,但是顺序有可能不同。比如 abbc 和 acbb 是兄弟字符串,abbc 和 acb 不是。现有一个很大的日志文件,每一行是一个单词。问题:给定一个单词,查询日志文件中该单词兄弟字符串有多少个。有多次查询操作。
6. 怎么给 50 w 高考考生成绩排序,要求时间空间复杂度尽可能低
7. 一副扑克牌,取出一张,剩下的 53 张给你看,如何判断抽出的是哪一张(要求时间,空间复杂度最优)
8. 一个超级大文件,每一行有一个 ip 地址,内存有限,如何找出其中重复次数最多的 ip 地址
9. 有一款新游戏,怎么识别出土豪(可能在新游里充大量钱的用户)
10. 提供一个包含所有英文单词的字典,为手机的T9输入法设计一个索引,例如输入4能够提示出g、h、i开头的英文单词(greate、hello、……),输入43能够提示出ge、he、id、if (hello……) 等词开通的英文单词,