非科班野路子的2018秋招算法工程师面经:面试实录+人生经验

这是一篇不太专业的算法工程师面经,希望能给非科班想要从事机器学习工作的同学或学弟学妹一些建议,同时也回馈给予我很大帮助的牛客网。目前拿到的offer有:网易、三星、联想、vivo、斗鱼、拼多多、猎聘等等。面经分为两个部分:虐心面试实录和一点人生经验。先上干货再BB,大家可以针对性的选择自己需要的部分,祝大家最后都能拿到心仪的offer啦。

 

 虐心面试实录

1.网易邮件事业部 数据挖掘工程师offer

整数翻转,如何处理越界问题

C++多态,静态联编和动态联编,虚函数表

GMM原理,增大数据量是否会更好

模型融合如何做

股票买卖问题,一次买卖和两次买卖

提升树的思想,随机森林和提升树的区别

EM算法数学原理

SVM推导,对偶性的作用,核函数有哪些,有什么区别

分布式计算框架了解哪些

 

2.百度商业平台部 数据挖掘工程师 二面挂

python两个每行都是数字的文件合并,去重。

shell编程,编辑文件。

进程与线程的区别

卷积神经网络介绍

SVM的推导

大文件求交集,如何解决哈希之后小文件还是放不进内存

堆排序代码

连续和最大问题,如何证明?

3sum问题,时间复杂度

最短路问题,第K条最短路

 

3. vivo人工智能工程师sp offer

bp算法介绍,梯度弥散问题。

svm介绍,优缺点是什么,lr介绍,区别是什么

lr与线性回归的区别

如果要预测房价,用什么模型

如果要预测房价,并且知道一个房间的房型信息,如何构建模型

sigmoid函数的应用有哪些,为什么?

列举十种常用的神经网络模型

语音识别模型有哪些

如何识别一个人在喝酒,需要几个模型

 

4.苏宁 算法工程师 备胎池凉了

卷积神经网络中卷积如何实现,激活函数的意义,损失函数有哪些,初始化参数如何选择

用过哪些深度学习框架,TensorFlow中的session是什么,session和interactivesession的区别

如何实现卷积层权值共享

如何保存模型,读取已有的模型

用过哪些深度学习模型,区别是什么。

了解哪些寻优算法

softmax损失函数是什么

c++的const,static作用

new,delete原理

强制类型转换cast之间的区别

 

5.腾讯IEG应用研究 二面挂

svm推导,核函数的体现,常用的核函数有哪些

alexnet介绍

过拟合的原因,有哪些避免过拟合的trick

1G的文本统计词频,输出频率最高的1000个词

手写topk的代码,快排。代码还能如何优化,如果要上线的话还需要做哪些处理

如果分类样本的标签只有一定的概率可信,如何处理

过拟合的原因,有哪些防止过拟合的方法

mysql查询一段时间中某个用户的数据

 

6.三星电子中国研究院 机器学习研发工程师offer

笔试:水管工之类的算法题,求最大深度

模型评价如何做,其中存在哪些问题

决策树算法有哪些,随机森林和GBDT的区别

降维方法,PCA原理

哈夫曼树在机器学习中的应用

文本挖掘算法了解哪些

人流量预测系统如何设计

profession笔试:最优的进程调度算法,至少用多少个cpu

英语自我介绍,口语渣猝不及防

 

7.联想研究院 模式识别研究员offer

EM算法数学推导,如何证明算法收敛性

异常值的影响,如何消除

所有了解的机器学习算法有哪些,框架性讲述

梯度下降算法了解哪些,优劣势是什么

二叉树中序遍历,递归和非递归

linux操作指令了解哪些,文本处理指令有哪些

一亿个数的文件,如何分成两个文件a,b,使得a文件的数都小于b,同时文件大小要差不多。

 

8.拼多多 算法工程师offer

均匀分布如何生成正态分布

SVM原理,支撑向量越多越好还是越少越好

二叉树深度遍历,时间复杂度和空间复杂度

二维排序矩阵搜索

项目中的长时间推广问题,如何考虑样本之间非独立的影响。

编程题,矩阵中的最短路,有门有钥匙。动态规划加状态向量。

贝叶斯公式,实际如何计算,如何解决精度问题。

 

9.五八集团 算法工程师 二面挂

字符串转数字

svm核函数有哪些,如何选取,手写表达式

降维方法介绍

c的虚函数,虚函数指针和虚函数表存在哪儿

Linux文件权限修改,参数介绍

模型的比较如何做

随机森林和提升树

卷积神经网络原理

如何避免网络的过拟合

如何网络调优

 

10.猎聘 算法工程师sp offer

Python的数据结构有哪些

tuple和set的区别,set的底层实现

hash表的算法有哪些

svm推导,一直到序列最小化求解。核函数如何体现,有哪些类型。

构建分类器的整个流程是什么

数据清洗方法,缺失值处理方法,降维方法

pca原理推导

决策树算法的介绍

二维排序数组搜索

如何构建欺诈交易识别的模型?

不均衡的数据如何分类

 

11.新浪移动 数据挖掘工程师offer

归并排序,二维排序数组搜索,中序遍历重构二叉树

svm推导,为什么要用拉格朗日乘数法,对偶问题是什么

KKT条件都有什么,如何求解svm的最优化问题

数据不均衡如何解决,抽样得到的分类准确率如何转换为原准确率。

逻辑回归原理,推导求解方法。

为什么选用对数极大似然函数作为优化目标,用平方损失有什么问题。

逻辑回归对特征有什么要求,是否需要做离散化,离散化的好处与坏处。

逻辑回归的参数是否可以分布式求解,如何做分布式。

有三辆车,到达时间随机,a车五分钟一趟,b车十分钟一趟,c车十五分钟一趟,求平均等待时间

 

 

 

 一点人生经验

我是一名文科类院校的硕士(面试的时候不止一次被问是不是学计算机教育的),本科是信息专业。硕士科研是模式识别方面的,其实说数据分析更贴切,基本属于浪费青春(建议各位喜欢计算机的学弟学妹:珍爱生命,远离文科院校)。同时也因为老板的24小时贴心看护,毫无悬念的没有实习机会,mmp。自己虽然非常喜欢机器学习,但是秋招之前的状态是:编程基础只会python,算法设计全靠调包,深度学习基本不会,分布式框架完全不懂。到七月份的时候,整个人丧到一定境界,感觉基本要告别互联网了。

笨鸟先飞,七月中旬就开始准备秋招了,主要是打比赛、看书和刷题。八月底投简历,投过的公司非常多,然而收到面试的很少。庆幸自己比较能吹,效率还比较高,最后也拿到了一些心仪的offer。过程很痛苦,但是还好有个好收获。总结一下这三个月自己的一些经验感悟,希望对大家有帮助。因为自己是非科班出身,今后也要疯狂补习,早日跟上大佬步伐,也希望多跟大佬们交流呀。

 

1.秋招准备

1.硬实力:项目经验,竞赛,简历。

对于自己的项目,数学逻辑上一定不能有漏洞。多多反思,想想自己模型的优势,以及换其他模型会有啥问题,假装有面试官提问自己回答。基本上做到这些,项目上就不会有问题。因为我没有过实习经验,所以对企业关注的技术了解的很少。我的建议是,一定要参加竞赛,无论名次。找工作之前,跟寝室的老铁一起参加了百度的机器学习竞赛,虽然没有名次但是真的是积累了很多经验。也正是因为这个比赛,对图像领域有了个概况的了解,动手能力也提高了不少。记住,企业要求的东西不会也没关系,至少有个概括性了解,同时展现自己的学习能力和思考深度就行啦。

简历方面,记住一条:自己做过什么不重要,关键是企业想要什么。建议大家都以一个面试官的角度看待自己的简历,或者找找师兄师姐。我现在回头看自己的第一版简历,感觉像是要去考博士。。

 

2.软实力:编程基础,手撕代码,机器学习。

从八月到现在,leetcode刷了185道题,基本是middle+少量hard,牛客上刷了剑指offer和一些基础题。我自己的感觉是,剑指offer用来入坑真的赞,leetcode真的要用心刷。边刷题边总结,基本刷到了150题的时候,就会进入一个百毒不侵的状态。后期基本上就不怕笔试了,手撕代码也很快。

机器学习方面,主要是刷小蓝书《统计学习方法(李航)》和西瓜书《机器学习(周志华)》,经典的算法建议都手推一遍。重点关注损失函数,为什么这样定义,有哪些优缺点,多思考方法间的比较。说实话,其实最后都可以总结出套路,后面有空我再总结下。。

 

2.面试

1.项目介绍

基本上每次面试开始都是项目介绍,建议事先准备一个项目介绍,聊的时候也不会慌乱错过项目亮点。最好是准备两个版本,一个是简单介绍思想,一个是详细介绍包括细节和公式。在讲自己项目的时候,一定要突出技术难点以及自己的思考,最好有个清晰的框架性说明。针对项目可以预先准备一些问题,然后再讲述的时候可以故意留几个坑,挑起面试官兴趣,攻其不备让其入坑,这样也更能体现自己对项目了解的深度,岂不美哉。

对于竞赛方面,其实我自己没有啥名次,方法也没有创新。这种情况就尽量突出自己对于领域的了解,对于常用基础模型原理的掌握程度,以及自己在应用时遇到的问题。我在竞赛中是用的只有inception和resnet的微调和融合,以及数据增广。工作很浅显,但是讲述的时候结合实际把inception和resnet的trick原理和优势讲清楚就行。

 

2.基础知识

手撕代码的时候,建议先讲清楚思路再写代码,记得分析时间空间复杂度。如果有多种思路可以分析比较一下。再就是,不要慌,慢慢写,手不要抖。。

机器学习算法的介绍,我一般分为两步:第一步介绍算法基本思想,损失函数,适合于解决哪一类问题,有哪些缺点。如果面试官还有兴趣,就开始第二步推公式。在明确每一步的目的的前提下,强烈建议把公式背下来直接写答案,例如svm拉格朗日函数求导之后的结果,当场求导很浪费时间,不如用来多展现自己。在面试官提问的时候,可以暗中总结一下面试官喜欢的类型,如果一直问数学推导方面的问题,就多讲讲算法原理,如果问了很多实现方面的问题,就多讲讲算法实现方面的trick。这样更有针对性,也更能让面试官霸霸开心。

 

3.开放性问题

对于设计类问题,其实多看看面经就能知道主要的类型,多看看他人的解题思路同时结合自己擅长的算法一起思考,表述时逻辑清晰突出要点就行。个人建议:不要抢答,也不要边想边答。可以先在纸上记下问题中的关键点,以及对应的解决方案。可以提出多种方案,互相比较最后得到最好。让面试官看到你的思考,但是不要出现那种讲到一半讲不下去的尴尬情况。

对于人格类问题,因为文科院校所以认识不少心理学大佬,投射之类的基本套路都naive。表现出对技术的热诚和领导力就行。这种题说话越多越错,你需要的只是热爱技术的态度和坚定的眼神。

 

3. offer的选择

offer选择无非就两个方面的问题:1.公司环境,行业前景,技术发展。2.面向薪资的编程。我也不了解很多公司,渣渣就不bb了。建议大家与熟悉的师兄师姐聊,同一届的同学视野可能没有那么远。个人觉得,技术发展虽然重要,钱也不是关键问题,有的时候也需要多关心身边的人呀。人生还长,有些事情不用那么着急的。

 

4.再BB两句

俗话说的好!找工作这种事情,三分靠打拼,七分靠锦鲤!非科班确实很难,所以心态很重要!不要被眼前的不幸击倒,眼前的困难都不是困难!后面运气差的时候还多得很呢。。总之,一定要调整心态,心态爆炸的时候要多多放松,有妹子抱妹子,没妹子抱舍友,不能被情绪左右。无论结果如何,都要冷静总结。

 

”那些无法将你打败的,终会使你更强大。“

 

全部评论
膜拜!不过.....非科班是指不是学计算机的吧,你这不算非科班的吧....
3 回复 分享
发布于 2017-11-20 11:58
“本科是信息专业。硕士科研是模式识别方面的,其实说数据分析更贴切,”这也是非科班
1 回复 分享
发布于 2018-09-12 11:52
不是说不会c++吗😂
1 回复 分享
发布于 2020-03-24 12:58
羡慕拿到拼多多的大佬
点赞 回复 分享
发布于 2017-11-20 11:57
果然
点赞 回复 分享
发布于 2017-11-20 16:45
谢谢
点赞 回复 分享
发布于 2017-11-21 19:19
最后去哪了,大佬
点赞 回复 分享
发布于 2017-11-21 19:23
最喜欢的帖子之一。
点赞 回复 分享
发布于 2018-09-12 11:26
没懂这句话“技术发展虽然重要,钱也不是关键问题”
点赞 回复 分享
发布于 2018-09-12 11:50
不是说只会python吗?怎么c++也这么牛逼
点赞 回复 分享
发布于 2020-02-14 11:13
大佬三星面试过几天通知的啊
点赞 回复 分享
发布于 2020-03-27 14:38

相关推荐

10-11 17:45
门头沟学院 Java
走吗:别怕 我以前也是这么认为 虽然一面就挂 但是颇有收获!
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
评论
21
429
分享
牛客网
牛客企业服务