机器学习面试总结
作者:xfcherish
链接:https://www.nowcoder.com/discuss/65323?type=0&order=0&pos=50&page=1
来源:牛客网
https://www.zhihu.com/question/59683332/answer/281642849 知乎回答的补充部分
* 在知乎上发过,但是被人指出贴题目是非常不好的行为,所以偷偷地发在这里
* 我基本不上牛客,如果要跟我讨论问题还是请在知乎上联系我
* 发现有错误的,欢迎指出
* 里面很多问题,我面试时也没回答好,我也没有标准答案
* 欢迎给我知乎的回答点赞 ^_^
(1)代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功
虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重。基本每家公司的面试都问了大量的算法题和代码题,即使是商汤、face++这样的深度学习公司,考察这部分的时间也占到了我很多轮面试的60%甚至70%以上。我去face++面试的时候,面试官是residual net,shuffle net的作者;但他们的面试中,写代码题依旧是主要的部分。
大部分题目都不难,基本是leetcode medium的难度。但是要求在现场白板编程,思路要流畅,能做到一次性Bug-free. 并且,一般都是要给出时间复杂度和空间复杂度最优的做法。对于少数难度很大的题,也不要慌张。一般也不会一点思路也没有,尽力给面试官展现自己的思考过程。面试官也会引导你,给一点小提示,沿着提示把题目慢慢做出来也是可以通过面试的。
以下是我所遇到的一些需要当场写出完整代码的题目:
<1> 二分查找。分别实现C++中的lower_bound和upper_bound.
<2> 排序。 手写快速排序,归并排序,堆排序都被问到过。
<3> 给你一个数组,求这个数组的最大子段积
时间复杂度可以到O(n)
<4> 给你一个数组,在这个数组中找出不重合的两段,让这两段的字段和的差的绝对值最大。
时间复杂度可以到O(n)
<5> 给你一个数组,求一个k值,使得前k个数的方差 + 后面n-k个数的方差最小
时间复杂度可以到O(n)
<6> 给你一个只由0和1组成的字符串,找一个最长的子串,要求这个子串里面0和1的数目相等。
时间复杂度可以到O(n)
<7> 给你一个数组以及一个数K, 从这个数组里面选择三个数,使得三个数的和小于等于K, 问有多少种选择的方法?
时间复杂度可以到O(n^2)
<8> 给你一个只由0和1组成的矩阵,找出一个最大的子矩阵,要求这个子矩阵是方阵,并且这个子矩阵的所有元素为1
时间复杂度可以到O(n^2)
<9> 求一个字符串的最长回文子串
时间复杂度可以到O(n) (Manacher算法)
<10> 在一个数轴上移动,初始在0点,现在要到给定的某一个x点, 每一步有三种选择,坐标加1,坐标减1,坐标乘以2,请问最少需要多少步从0点到x点。
<11> 给你一个集合,输出这个集合的所有子集。
<12> 给你一个长度为n的数组,以及一个k值(k < n) 求出这个数组中每k个相邻元素里面的最大值。其实也就是一个一维的max pooling
时间复杂度可以到O(n)
<13> 写一个程序,在单位球面上随机取点,也就是说保证随机取到的点是均匀的。
<14> 给你一个长度为n的字符串s,以及m个短串(每个短串的长度小于10), 每个字符串都是基因序列,也就是说只含有A,T,C,G这四个字母。在字符串中找出所有可以和任何一个短串模糊匹配的子串。模糊匹配的定义,两个字符串长度相等,并且至多有两个字符不一样,那么我们就可以说这两个字符串是模糊匹配的。
<15> 其它一些描述很复杂的题这里就不列了。
(2)数学题或者"智力"题。
不会涉及特别高深的数学知识,一般就是工科数学(微积分,概率论,线性代数)和一些组合数学的问题。
下面是我在面试中被问到过的问题:
<1> 如果一个女生说她集齐了十二个星座的前男友,她前男友数量的期望是多少?
ps:这道题在知乎上有广泛的讨论,作为知乎重度用户我也看到过。如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量?
<2> 两个人玩游戏。有n堆石头,每堆分别有a1, a2, a3.... an个石头,每次一个游戏者可以从任意一堆石头里拿走至少一个石头,也可以整堆拿走,但不能从多堆石头里面拿。无法拿石头的游戏者输,请问这个游戏是否有先手必胜或者后手必胜的策略? 如果有,请说出这个策略,并证明这个策略能保证必胜。
<3> 一个一维数轴,起始点在原点。每次向左或者向右走一步,概率都是0.5. 请问回到原点的步数期望是多少?
<4> 一条长度为1的线段,随机剪两刀,求有一根大于0.5的概率。
<5> 讲一下你理解的矩阵的秩。低秩矩阵有什么特点? 在图像处理领域,这些特点有什么应用?
<6> 讲一下你理解的特征值和特征向量。
<7> 为什么负梯度方向是使函数值下降最快的方向?简单数学推导一下
(3)机器学习基础
这部分建议参考周志华老师的《机器学习》。
下面是我在面试中被问到过的问题:
<1> 逻辑回归和线性回归对比有什么优点?
<2> 逻辑回归可以处理非线性问题吗?
<3> 分类问题有哪些评价指标?每种的适用场景。
<4> 讲一下正则化,L1和L2正则化各自的特点和适用场景。
<5> 讲一下常用的损失函数以及各自的适用场景。
<6> 讲一下决策树和随机森林
<7> 讲一下GBDT的细节,写出GBDT的目标函数。 GBDT和Adaboost的区别与联系
<8> 手推softmax loss公式
<9> 讲一下SVM, SVM与LR有什么联系。
<10>讲一下PCA的步骤。PCA和SVD的区别和联系
<11> 讲一下ensemble
<12> 偏差和方差的区别。ensemble的方法中哪些是降低偏差,哪些是降低方差?
...... 这部分问得太琐碎了,我能记起来的问题就这么多了。我的感觉,这部分问题大多数不是问得很深,所以不至于被问得哑口无言,总有得扯;但是要想给出一个特别深刻的回答,还是需要对机器学习的基础算法了解比较透彻。
(4)深度学习基础
这部分的准备,我推荐花书(Bengio的Deep learning)和 @魏秀参 学长的《解析卷积神经网络-深度学习实践手册》
下面是我在面试中被问到过的问题:
<1> 手推BP
<2> 手推RNN和LSTM结构
<3> LSTM中每个gate的作用是什么,为什么跟RNN比起来,LSTM可以防止梯度消失
<4> 讲一下pooling的作用, 为什么max pooling要更常用?哪些情况下,average pooling比max pooling更合适?
<5> 梯度消失和梯度爆炸的原因是什么? 有哪些解决方法?
<6> CNN和RNN的梯度消失是一样的吗?
<6> 有哪些防止过拟合的方法?
<7> 讲一下激活函数sigmoid,tanh,relu. 各自的优点和适用场景?
<8> relu的负半轴导数都是0,这部分产生的梯度消失怎么办?
<9> batch size对收敛速度的影响。
<10> 讲一下batch normalization
<11> CNN做卷积运算的复杂度。如果一个CNN网络的输入channel数目和卷积核数目都减半,总的计算量变为原来的多少?
<12> 讲一下AlexNet的具体结构,每层的作用
<13> 讲一下你怎么理解dropout,分别从bagging和正则化的角度
<14> data augmentation有哪些技巧?
<15> 讲一下你了解的优化方法,sgd, momentum, rmsprop, adam的区别和联系
<16> 如果训练的神经网络不收敛,可能有哪些原因?
<17> 说一下你理解的卷积核, 1x1的卷积核有什么作用?
........
同上,这部分的很多问题也是每个人都或多或少能回答一点,但要答得很好还是需要功底的。
(5)科研上的开放性问题
这部分的问题没有固定答案,也没法很好地针对性准备。功在平时,多读paper多思考,注意培养自己的insight和intuition
下面是我在面试中被问到过的问题:
<1> 选一个计算机视觉、深度学习、机器学习的子领域,讲一下这个领域的发展脉络,重点讲出各种新方法提出时的motivation,以及谈谈这个领域以后会怎么发展。
<2> 讲一下你最近看的印象比较深的paper
<3> 讲一下经典的几种网络结构, AlexNet, VGG,GoogleNet, Residual Net等等,它们各自最重要的contribution
<4> 你看过最近很火的XXX paper吗? 你对这个有什么看法?
......
(6) 编程语言、操作系统等方面的一些问题。
C++, Python, 操作系统,Linux命令等等。这部分问得比较少,但还是有的,不具体列了
(7)针对简历里项目/论文 / 实习的一些问题。
这部分因人而异,我个人的对大家也没参考价值,也不列了。
作者:熊风
链接:https://www.zhihu.com/question/59683332/answer/281642849
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
最近投了一堆机器学习/深度学习/计算机视觉方向的公司,分享一下自己的经验,希望对大家有帮助。
个人背景: 华科本科 + 港科大硕士(MPhil)
拿到的offer有腾讯优图,阿里AI lab,今日头条,滴滴研究院,商汤科技,旷视(face++),大疆,快手。绝大部分是ssp(super special),给到了普通硕士能给到的最高档。
最新修改:经人提醒,我意识到直接po公司的原题是非常不好的行为。所以我修改一下答案,只能指明大概的考察范围。在此对我的所有面试官表示抱歉,未经同意贴出了所有的面试题。
写在前面的话
这个回答的适用对象主要还是本科和硕士。PhD找工作的套路跟硕士还是很不一样的,所以这个回答的经验对于手握几篇一作顶会的PhD大神并没啥参考意义。
我也和我们实验室几个找工作的PhD学长学姐聊过,他们的面试主要是讲自己的research,有的甚至就是去公司给个talk,跟本科硕士的校招流程完全不同。现在也是AI方向PhD的黄金时代,没毕业就被各大公司主动联系,待遇也比我这种硕士高很多很多。
一. 整体建议
一定要找内推。
内推一般有两种,第一种力度比较弱,在公司的内推系统上填一下你的名字,加快一下招聘流程;第二种力度比较强,直接把简历送到部门负责人手上。个人比较建议第二种,会省事很多。
原因如下:
(1)现在做机器学习的人实在太多了,在不找内推的情况下,流程会特别特别慢。即使你的简历比较优秀,也可能淹没在茫茫大海中,不一定能被懂行的人看到。
(2)现在很多公司的笔试其实挺有难度的,就算是大神也有翻车的可能性。
(3)对于大公司而言,即使通过了简历筛选、笔试那一关,你也很难保证你的简历被合适的部门挑中。很可能过关斩将后,发现给你安排的面试官并不是太对口。尤其是深度学习这样比较新的领域,一般部门的面试官多半也是近期自学的,对这个也是一知半解。所以如果是想去BAT这些大公司里面专门做AI的部门,按照正常校招流程走是不合适的,一定要找到那些部门的员工内推。
在我看来,如果是跪在简历筛选、笔试这些上面,连面试官都没见到,就实在太可惜了。为了避免这一点,请认真找内推。最好能联系到你想去的公司部门里的负责人,直接安排面试。
二. 面试经验
面试遇到的题目,可以分为几个大类:
(1)代码题(leetcode类型),主要考察数据结构和基础算法,以及代码基本功
虽然这部分跟机器学习,深度学习关系不大,但也是面试的重中之重。基本每家公司的面试都问了大量的算法题和代码题,即使是商汤、face++这样的深度学习公司,考察这部分的时间也占到了我很多轮面试的60%甚至70%以上。我去face++面试的时候,面试官是residual net,shuffle net的作者;但他们的面试中,写代码题依旧是主要的部分。
大部分题目都不难,基本是leetcode medium的难度。但是要求在现场白板编程,思路要流畅,能做到一次性Bug-free. 并且,一般都是要给出时间复杂度和空间复杂度最优的做法。对于少数难度很大的题,也不要慌张。一般也不会一点思路也没有,尽力给面试官展现自己的思考过程。面试官也会引导你,给一点小提示,沿着提示把题目慢慢做出来也是可以通过面试的。
以下是我所遇到的一些需要当场写出完整代码的题目:
/*******************************************************************
经人提醒,意识到直接贴具体的面试原题是非常不好的行为,该部分不在回答里放出来了。
*******************************************************************/
不过这部分有些是LeetCode原题,在这里我简单地举几个例子,附上LeetCode题目链接:
(2)数学题或者"智力"题。
不会涉及特别高深的数学知识,一般就是工科数学(微积分,概率论,线性代数)和一些组合数学的问题。
下面是我在面试中被问到过的问题:
/*******************************************************************
经人提醒,意识到直接贴具体的面试原题是非常不好的行为,该部分不在回答里放出来了。
*******************************************************************/
这部分有些题也在知乎上被讨论过,这里附上相应的知乎链接
如果一个女生说,她集齐了十二个星座的前男友,我们应该如何估计她前男友的数量?
(3)机器学习基础
这部分建议参考周志华老师的《机器学习》。
下面是我在面试中被问到过的问题:
/*******************************************************************
经人提醒,意识到直接贴具体的面试原题是非常不好的行为,该部分不在回答里放出来了。
*******************************************************************/
列一下考察的知识点,并附上相关的优质知乎讨论。
逻辑回归,SVM,决策树
各种机器学习的应用场景分别是什么?例如,k近邻,贝叶斯,决策树,svm,逻辑斯蒂回归和最大熵模型。
主成分分析,奇异值分解
随机森林,GBDT, 集成学习
为什么说bagging是减少variance,而boosting是减少bias?
基于树的adaboost和Gradient Tree Boosting区别?
为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?
过拟合
机器学习中使用「正则化来防止过拟合」到底是一个什么原理?为什么正则化项就可以防止过拟合?
(4)深度学习基础
这部分的准备,我推荐花书(Bengio的Deep learning)和
/*******************************************************************
经人提醒,意识到直接贴具体的面试原题是非常不好的行为,该部分不在回答里放出来了。
*******************************************************************/
列一下大概的考察点和相关的知乎讨论。
卷积神经网络,循环神经网络,LSTM与GRU,梯度消失与梯度爆炸,激活函数,防止过拟合的方法,dropout,batch normalization,各类经典的网络结构,各类优化方法
CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?
sgd有多种改进的形式(rmsprop,adadelta等),为什么大多数论文中仍然用sgd?
你有哪些deep learning(rnn、cnn)调参的经验?
深度学习中 Batch Normalization为什么效果好?
为什么现在的CNN模型都是在GoogleNet、VGGNet或者AlexNet上调整的?
Krizhevsky等人是怎么想到在CNN里用Dropout和ReLu的?
(5)科研上的开放性问题
这部分的问题没有固定答案,也没法很好地针对性准备。功在平时,多读paper多思考,注意培养自己的insight和intuition
下面是我在面试中被问到过的问题:
/*******************************************************************
经人提醒,意识到直接贴具体的面试原题是非常不好的行为,该部分不在回答里放出来了。
*******************************************************************/
这部分在知乎上也有很多讨论,不具体列了。
(6) 编程语言、操作系统等方面的一些问题。
C++, Python, 操作系统,Linux命令等等。这部分问得比较少,但还是有的,不具体列了
(7)针对简历里项目/论文 / 实习的一些问题。
这部分因人而异,我个人的对大家也没参考价值,也不列了。
三. 平时应该怎么准备
在大多数情况下,你能拿到什么样的offer,其实已经被你的简历决定了。如果平时没有积累相关的经历和成果,很难只靠面试表现就拿到非常好的offer。所以建议大家平时积累算法岗所看重的一些干货。
下面几点算是找AI相关工作的加分项:
(1)一作的顶级会议论文
(2)AI领域知名公司的实习经历(长期实习更好)
(3)相关方向有含金量的项目经历
(4)计算机视觉竞赛,数据挖掘竞赛的获奖或者优秀名次。现在这类竞赛太多了,就不具体列了。
(5)程序设计竞赛的获奖(例如OI/ACM/topcoder之类的)
当然,名校、高GPA这些是针对所有领域都有用的加分项,同样也是适用于这个领域的。
所以我的建议就是,如果自己所在的实验室很厉害,资源丰富,就专心做科研,发paper; 如果所在的实验室一般,没法产出相关的优秀成果,可以考虑自己做比赛和找实习。有一份知名公司的实习经历之后,找工作难度会下降很多。
最后,祝有志于AI这个领域的人都能拿到满意的offer.
http://geek.csdn.net/news/detail/242141
这是一篇不太专业的算法工程师面经,希望能给非科班想要从事机器学习工作的同学或学弟学妹一些建议,同时也回馈给予我很大帮助的咕泡学院。目前拿到的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继续学习。更有免费视频等你来领取。
相关面经
http://www.cnblogs.com/ljy2013/p/7010308.html
回望过去与展望未来(数据挖掘)
2017年06月14日,距离毕业时间刚好是两年整,一路走来,有太多的故事。作为一个非985,非211毕业的学生来讲,相比之下,成长的道路上还是有些崎岖不平,亦或是蜿蜒曲折的。可是人就是这样,没有一点曲折不平,反而显得平淡无奇,无任何故事可言。
毕业之前,在深圳的一家医疗设备有限公司实习,招我进去实习的是一个满头白发,看上去很有学问的博士。并且还是中科大毕业的。谁知我进去才发现原来是个大坑,没办法,进来了就没那么容易走了,主要是一方面实习生的身份比较尴尬,二来自己可以利用公司的资源自己学习一些技术也是不错的。前前后后我在这个公司待了一整年。也当是在这个公司自己进修一年吧。
是的,我离开了实习的公司,来到现在的公司——互联网金融公司。主要做的事情是数据挖掘相关工作。在这家公司遇到了不管是人生还是职场当中比较牛逼的同事。跟他们在一起工作,你每天都在进步。这也是我为什么后来非要去“大厂”的原因。跟聪明优秀的人一起工作,你收获的不仅仅是工作上的,更多的是技术积累、以及一些做事的方式和方法。这些做事的方式和方法就能反应一个人的能力和水平。 甚至,与优秀的人在一起工作,你的眼界和视角都开始变得高级很多。这里简要的说明一下:当你接到老板或者leader一个项目的话,首先需要了解的是项目的业务背景、项目的意义,项目当中存在的技术点,项目的评价方式和指标,以及后续上线或者优化的方法。 这对我来说有很大的帮助。
人生就是这样,好景不长,在这个互联网公司接连两个比较优秀的leader离我们而去,去追求他们更好的人生,加上Boss对机器学习的技术并不是那么信任,在Boss眼中,机器学习暂时还做不出什么东西出来,最重要的还是数据。Boss有这样的看法也是没错的,但是他忽略了我们做技术的人斗志或者说是自尊心吧。技术人员是需要得到的老板的肯定才会有成就感的,进而才会有工作上的动力。犹如将遇良才,将得有爱才之心和爱才之道,良才才会有后面的报以知遇之恩。而我们的老板忽视了这点。另一方面,在互联网金融公司的数据量对于一个做大数据的人来讲还是相当小的。这也是我们做技术存在局限性。
是的,你想的没错,有了前面的铺垫,我就想着该去“大厂”里面积累积累了。才有了我想写这篇博客的原因。主要是想记录一下在去大厂面试的一些点点滴滴。
如果你打算去大厂,首先需要做一下几件事情:
(1)复习你所涉及的领域里面的一些基础知识,特别需要注意基础知识里面的一些细节内容。我涉及的是机器学习领域,主要包括:
常规的机器学习算法的数学原理和公式推导,如:线性回归、LR、SVM、ID3、C4.5、RF、GBDT、XGBoost
工程实现能力,主要表现在数据结构的算法题目。
实际的项目技术能力。如:推荐算法、深度学习。
(2)整理项目(让面试官感兴趣的项目经验很重要)
首先需要明确项目的背景及其意义。
对自己的项目中的一些问题进行思考,需要从几个大的方面去讲,体现出逻辑性。
项目中使用的一些技术细节内容需要去吃透
在项目中的一些问题要有自己的看法和见解
最后项目取得了什么样的成果
(3)考虑问题,需要从抽象的层面去考虑,分步解答,有一定的逻辑性。比如:如果让你去涉及个推荐系统你会怎么考虑?回答问题的时候需要考虑一下几个方面:
我们拥有那些用户的数据源:如用户浏览历史、用户历史行为等
我们会根据具体的业务情况,考虑选择什么模型比较合适。user-based or item-based。
根据前面的数据召回一定量的用户或者物品。这个过程可能需要考虑数据量的问题。
排序
(4)找几个中型的公司先去练练手(类似模拟考试一样。)
通过几个中型公司,对自己进行查缺补漏。
针对自己的漏洞进行重点补充。
这个过程其实是认清自己的过程,发现自己的问题,或者让自己对问题的认识更深一步。这一步对自己的提升蛮大的。
(5)运气的问题
有时候面试的时候,也是有运气的。虽然这部门的因素所占的比例比较小。
这里面主要列举一下我面试阿里巴巴和腾讯、京东的经历:
阿里巴巴:
面试的岗位是阿里妈妈的搜索推荐组数据挖掘工程师岗位。
一面:面试官的语气比较重,可能采用的打击的面试方式,面试过程中问了一下几个方面的问题:
针对项目问了一些问题。介绍项目的时候需要首先从几个打的方面介绍,面试官会主动问细节的。一定要体现出你的项目逻辑出来。
机器学习的一些基本问题:L1和L2,LR,RF和GBDT等
数据结构的问题:ADTree结合实际的问题来问的
深度学习的问题:用tensorflow实现LR
二面:
介绍自己认为比较牛逼的项目
针对推荐系统,给定了一个场景,问我怎么设计
一些机器学习常用算法原理
三面:
介绍自己比较牛逼的项目
针对一些机器学习常用算法原理进行探讨
问了一个大数据的问题,两个巨大的文件,找相同的url
最终三面挂了。比较可惜。
腾讯:
一面:
介绍自己做的项目
针对项目细节内容进行提问
机器学习常用算法的原理
二面:
机器学习常用算法的原理
数据结构算法的实现,需要写代码
可惜,又挂了。
京东:
一面:
介绍自己做的项目
针对项目进行提问
针对工程能力进行提问
二面:
介绍自己做的项目
针对项目的细节内容进行提问
NLP相关的问题:近义词,热词等
针对大数据工程能力进行考察
三面:
介绍自己的项目细节内容
项目的背景、意义、应用场景和效果的提升
讲解公司业务逻辑,主要是考察逻辑能力和业务逻辑能力
闲聊
面试通过......
展望:
目前我所涉及的领域是:NLP、机器学习(推荐系统)、深度学习等领域。与中国的基本国情一致,还需要进一步提升自己的技术。主要会以下几个方面考虑:
1、深度学习
完善自己深度学习的理论和技能。
2、机器学习(推荐算法)
积累更多的机器学习算法,主要偏向推荐系统中用户意图分析。
3、NLP
(1)自然语言处理应用在搜索推荐领域,主要涉及根据用户的搜索(query)去分析用户的意图,进而才能更好的推荐给用户。
(2)深度学习在NLP中的应用。