这是一篇不太专业的算法工程师面经,希望能给非科班想要从事机器学习工作的同学或学弟学妹一些建议,同时也回馈给予我很大帮助的咕泡学院。目前拿到的offer有:网易、三星、联想、vivo、斗鱼、拼多多、猎聘等等。面经分为两个部分:虐心面试实录和一点人生经验。先上干货再BB,大家可以针对性的选择自己需要的部分,祝大家最后都能拿到心仪的offer啦。
虐心面试实录
- 网易邮件事业部 数据挖掘工程师 offer
整数翻转,如何处理越界问题
C++多态,静态联编和动态联编,虚函数表
GMM原理,增大数据量是否会更好
模型融合如何做
股票买卖问题,一次买卖和两次买卖
提升树的思想,随机森林和提升树的区别
EM算法数学原理
SVM推导,对偶性的作用,核函数有哪些,有什么区别
分布式计算框架了解哪些 - 百度商业平台部 数据挖掘工程师 二面挂
python两个每行都是数字的文件合并,去重。
shell编程,编辑文件。
进程与线程的区别
卷积神经网络介绍
SVM的推导
大文件求交集,如何解决哈希之后小文件还是放不进内存
堆排序代码
连续和最大问题,如何证明?
3sum问题,时间复杂度
最短路问题,第K条最短路 - vivo 人工智能工程师 sp offer
bp算法介绍,梯度弥散问题。
svm介绍,优缺点是什么,lr介绍,区别是什么
lr与线性回归的区别
如果要预测房价,用什么模型
如果要预测房价,并且知道一个房间的房型信息,如何构建模型
sigmoid 函数的应用有哪些,为什么?
列举十种常用的神经网络模型
语音识别模型有哪些
如何识别一个人在喝酒,需要几个模型 - 苏宁 算法工程师 备胎池凉了
卷积神经网络中卷积如何实现,激活函数的意义,损失函数有哪些,初始化参数如何选择
用过哪些深度学习框架,TensorFlow中的session是什么,session和interactivesession的区别
如何实现卷积层权值共享
如何保存模型,读取已有的模型
用过哪些深度学习模型,区别是什么。
了解哪些寻优算法
softmax损失函数是什么
c++ 的 const,static作用
new,delete原理
强制类型转换cast之间的区别 - 腾讯IEG 应用研究 二面挂
svm推导,核函数的体现,常用的核函数有哪些
alexnet介绍
过拟合的原因,有哪些避免过拟合的trick
1G的文本统计词频,输出频率最高的1000个词
手写topk的代码,快排。代码还能如何优化,如果要上线的话还需要做哪些处理
如果分类样本的标签只有一定的概率可信,如何处理
过拟合的原因,有哪些防止过拟合的方法
mysql查询一段时间中某个用户的数据 - 三星电子中国研究院 机器学习研发工程师 offer
笔试:水管工之类的算法题,求最大深度
模型评价如何做,其中存在哪些问题
决策树算法有哪些,随机森林和GBDT的区别
降维方法,PCA原理
哈夫曼树在机器学习中的应用
文本挖掘算法了解哪些
人流量预测系统如何设计
profession笔试:最优的进程调度算法,至少用多少个cpu
英语自我介绍,口语渣猝不及防 - 联想研究院 模式识别研究员 offer
EM算法数学推导,如何证明算法收敛性
异常值的影响,如何消除
所有了解的机器学习算法有哪些,框架性讲述
梯度下降算法了解哪些,优劣势是什么
二叉树中序遍历,递归和非递归
linux操作指令了解哪些,文本处理指令有哪些
一亿个数的文件,如何分成两个文件a,b,使得a文件的数都小于b,同时文件大小要差不多。 - 拼多多 算法工程师 offer
均匀分布如何生成正态分布
SVM原理,支撑向量越多越好还是越少越好
二叉树深度遍历,时间复杂度和空间复杂度
二维排序矩阵搜索
项目中的长时间推广问题,如何考虑样本之间非独立的影响。
编程题,矩阵中的最短路,有门有钥匙。动态规划加状态向量。
贝叶斯公式,实际如何计算,如何解决精度问题。 - 五八集团 算法工程师 二面挂
字符串转数字
svm核函数有哪些,如何选取,手写表达式
降维方法介绍
c的虚函数,虚函数指针和虚函数表存在哪儿
Linux 文件权限修改,参数介绍
模型的比较如何做
随机森林和提升树
卷积神经网络原理
如何避免网络的过拟合
如何网络调优 - 猎聘 算法工程师 sp offer
Python 的数据结构有哪些
tuple 和set的区别,set的底层实现
hash表的算法有哪些
svm推导,一直到序列最小化求解。核函数如何体现,有哪些类型。
构建分类器的整个流程是什么
数据清洗方法,缺失值处理方法,降维方法
pca原理推导
决策树算法的介绍
二维排序数组搜索
如何构建欺诈交易识别的模型?
不均衡的数据如何分类 - 新浪移动 数据挖掘工程师 录用排序
归并排序,二维排序数组搜索,中序遍历重构二叉树
svm推导,为什么要用拉格朗日乘数法,对偶问题是什么
KKT条件都有什么,如何求解svm的最优化问题
数据不均衡如何解决,抽样得到的分类准确率如何转换为原准确率。
逻辑回归原理,推导求解方法。
为什么选用对数极大似然函数作为优化目标,用平方损失有什么问题。
逻辑回归对特征有什么要求,是否需要做离散化,离散化的好处与坏处。
逻辑回归的参数是否可以分布式求解,如何做分布式。
有三辆车,到达时间随机,a车五分钟一趟,b车十分钟一趟,c车十五分钟一趟,求平均等待时间
一点人生经验
我是一名文科类院校的硕士(面试的时候不止一次被问是不是学计算机教育的),本科是信息专业。硕士科研是模式识别方面的,其实说数据分析更贴切,基本属于浪费青春(建议各位喜欢计算机的学弟学妹:珍爱生命,远离文科院校)。同时也因为老板的24小时贴心看护,毫无悬念的没有实习机会,mmp。自己虽然非常喜欢机器学习,但是秋招之前的状态是:编程基础只会python,算法设计全靠调包,深度学习基本不会,分布式框架完全不懂。到七月份的时候,整个人丧到一定境界,感觉基本要告别互联网了。
笨鸟先飞,七月中旬就开始准备秋招了,主要是打比赛、看书和刷题。八月底投简历,投过的公司非常多,然而收到面试的很少。庆幸自己比较能吹,效率还比较高,最后也拿到了一些心仪的offer。过程很痛苦,但是还好有个好收获。总结一下这三个月自己的一些经验感悟,希望对大家有帮助。因为自己是非科班出身,今后也要疯狂补习,早日跟上大佬步伐,也希望多跟大佬们交流呀。
秋招准备
硬实力:项目经验,竞赛,简历。
对于自己的项目,数学逻辑上一定不能有漏洞。多多反思,想想自己模型的优势,以及换其他模型会有啥问题,假装有面试官提问自己回答。基本上做到这些,项目上就不会有问题。因为我没有过实习经验,所以对企业关注的技术了解的很少。我的建议是,一定要参加竞赛,无论名次。找工作之前,跟寝室的老铁一起参加了百度的机器学习竞赛,虽然没有名次但是真的是积累了很多经验。也正是因为这个比赛,对图像领域有了个概况的了解,动手能力也提高了不少。记住,企业要求的东西不会也没关系,至少有个概括性了解,同时展现自己的学习能力和思考深度就行啦。
简历方面,记住一条:自己做过什么不重要,关键是企业想要什么。建议大家都以一个面试官的角度看待自己的简历,或者找找师兄师姐。我现在回头看自己的第一版简历,感觉像是要去考博士。。- 软实力:编程基础,手撕代码,机器学习。
从八月到现在,leetcode刷了185道题,基本是middle+少量hard,牛客上刷了剑指offer和一些基础题。我自己的感觉是,剑指offer用来入坑真的赞,leetcode真的要用心刷。边刷题边总结,基本刷到了150题的时候,就会进入一个百毒不侵的状态。后期基本上就不怕笔试了,手撕代码也很快。
机器学习方面,主要是刷小蓝书《统计学习方法(李航)》和西瓜书《机器学习(周志华)》,经典的算法建议都手推一遍。重点关注损失函数,为什么这样定义,有哪些优缺点,多思考方法间的比较。说实话,其实最后都可以总结出套路,后面有空我再总结下。。 面试
项目介绍
基本上每次面试开始都是项目介绍,建议事先准备一个项目介绍,聊的时候也不会慌乱错过项目亮点。最好是准备两个版本,一个是简单介绍思想,一个是详细介绍包括细节和公式。在讲自己项目的时候,一定要突出技术难点以及自己的思考,最好有个清晰的框架性说明。针对项目可以预先准备一些问题,然后再讲述的时候可以故意留几个坑,挑起面试官兴趣,攻其不备让其入坑,这样也更能体现自己对项目了解的深度,岂不美哉。
对于竞赛方面,其实我自己没有啥名次,方法也没有创新。这种情况就尽量突出自己对于领域的了解,对于常用基础模型原理的掌握程度,以及自己在应用时遇到的问题。我在竞赛中是用的只有inception和resnet的微调和融合,以及数据增广。工作很浅显,但是讲述的时候结合实际把inception和resnet的trick原理和优势讲清楚就行。- 基础知识
手撕代码的时候,建议先讲清楚思路再写代码,记得分析时间空间复杂度。如果有多种思路可以分析比较一下。再就是,不要慌,慢慢写,手不要抖。。
机器学习算法的介绍,我一般分为两步:第一步介绍算法基本思想,损失函数,适合于解决哪一类问题,有哪些缺点。如果面试官还有兴趣,就开始第二步推公式。在明确每一步的目的的前提下,强烈建议把公式背下来直接写答案,例如svm拉格朗日函数求导之后的结果,当场求导很浪费时间,不如用来多展现自己。在面试官提问的时候,可以暗中总结一下面试官喜欢的类型,如果一直问数学推导方面的问题,就多讲讲算法原理,如果问了很多实现方面的问题,就多讲讲算法实现方面的trick。这样更有针对性,也更能让面试官霸霸开心。 - 开放性问题
对于设计类问题,其实多看看面经就能知道主要的类型,多看看他人的解题思路同时结合自己擅长的算法一起思考,表述时逻辑清晰突出要点就行。个人建议:不要抢答,也不要边想边答。可以先在纸上记下问题中的关键点,以及对应的解决方案。可以提出多种方案,互相比较最后得到最好。让面试官看到你的思考,但是不要出现那种讲到一半讲不下去的尴尬情况。
对于人格类问题,因为文科院校所以认识不少心理学大佬,投射之类的基本套路都naive。表现出对技术的热诚和领导力就行。这种题说话越多越错,你需要的只是热爱技术的态度和坚定的眼神。 - offer的选择
offer选择无非就两个方面的问题:1. 公司环境,行业前景,技术发展。2. 面向薪资的编程。我也不了解很多公司,渣渣就不bb了。建议大家与熟悉的师兄师姐聊,同一届的同学视野可能没有那么远。个人觉得,技术发展虽然重要,钱也不是关键问题,有的时候也需要多关心身边的人呀。人生还长,有些事情不用那么着急的。 - 再BB两句
俗话说的好!找工作这种事情,三分靠打拼,七分靠锦鲤!非科班确实很难,所以心态很重要!不要被眼前的不幸击倒,眼前的困难都不是困难!后面运气差的时候还多得很呢。。 总之,一定要调整心态,心态爆炸的时候要多多放松,有妹子抱妹子,没妹子抱舍友,不能被情绪左右。无论结果如何,都要冷静总结。
”那些无法将你打败的,终会使你更强大。“
作者:王非池
java学习干货面试经验,不定期分享+Q群:282711949。
如果你正在找工作或者刚刚学校出来,又或者已经工作但是经常觉得难点很多,觉得自己java方面学的不够精想要继续学习的,想转行怕学不会的,+Q群:282711949 了解咨询java继续学习。更有免费视频等你来领取。