本人本科硕士皆双非,和牛客大佬们没得比,目前拿到的还能够的offer就是百度SP和京东SP,都是作的推荐算法,其余的不说了。前端
先说一下我的经历吧,学校比较水,实验室没有项目,实习经历:腾讯实习+滴滴实习 比赛经历:几个数据挖掘竞赛Top5的名次。java
我的感受,算法岗确实看学校,但若是简历还能够的话,仍是有面试机会的,内推投的简历,80%都给了面试机会吧。python
3轮电话面,远程桌面coding。程序员
百度的面试风格实际上是比较好把控的,基本就是项目问答、coding、机器学习算法、CS基础,偶尔会有些几率题智力题。面试
算法题:算法
1. 两个有序数组求中位数(leetcode)编程
2. 判断平衡二叉树(剑指offer)数组
3. 最长上升子序列(lintcode)网络
4. 二叉树转双向链表(剑指offer)数据结构
5. LRU cache实现(leetcode)
6. House Robber(leetcode)
机器学习问题:无非就是树模型(gbdt、xgboost、rf、lightgbm)原理,LR、FM原理,w2v原理,深度学习在推荐系统上应用(和面试官讨论了google的两篇paper,其中wide&deep network讲的时间比较长),神经网络embedding层和w2v中的embedding的实现区别,其余的记不清了。
CS基础:进程线程区别,多线程实现方式,线程冲突是什么、怎么解决,TCP三次握手细节,海量数据排序(分治),其余的不记得。
2轮电话面,远程写code。
京东的面试我的以为不是太难,广告部今年招人比较多,面试内容的话也是围绕项目+机器学习算法来问的,本人有京东算法赛Top20,可能也是个加分项吧。
算法题:链表翻转、判断平衡二叉树、最长公共子序列、海量数据topk问题、蓄水池抽样算法
机器学习问题:也是简历上写的算法来问的,以及问了一些DL的基础,不难。
2轮电话面+1轮CTO面。
蘑菇街的面试只是围绕项目进行的,2轮各30分钟左右,都是在问项目,以及项目中用到的技术、算法,不难。
对实习所在部门的工做不感兴趣,因而提早离职参加了提早批。面了AI平台部,感受是经历过最难的面试,面试官的问题一个接着一个,有点咄咄逼人,无奈水平不够,跪了,校招时候,作了笔试没被通知面试。
1. 项目介绍
2. 你这个项目中间哪些地方提高,中间过程分别提高了多少CTR?
3. 你项目用的分布式LR的是用什么优化方法,参数怎么调的,mini-batch的batch是多少? parameter-server原理,如何解决数据一致性?
4. 会分布式么,hadoop,spark会么,说说hadoop的灾难处理机制
5. hadoop一个节点数据量太大拖垮reduce,怎么办,Hadoop自己的处理机制是怎么样的,手工的话能够怎么调
6. hadoop数据倾斜问题如何解决
7. L一、L2的区别,L1为何能够保证稀疏?
8. 各类最优化方法比较 拟牛顿法和牛顿法区别,哪一个收敛快?为何?
9. 深度学习的优化方法有哪些? sgd、adam、adgrad区别? adagrad详细说一下?为何adagrad适合处理稀疏梯度?
10. DL经常使用的激活函数有哪些?
11. relu和sigmoid有什么区别,优势有哪些?
12. 什么是梯度消失,标准的定义是什么?
13. DNN的初始化方法有哪些? 为何要作初始化? kaiming初始化方法的过程是怎样的?
14. xgboost里面的lambdarank的损失函数是什么?
15. xgboost在什么地方作的剪枝,怎么作的?
16. xgboost如何分布式?特征分布式和数据分布式? 各有什么存在的问题?
17. lightgbm和xgboost有什么区别?他们的loss同样么? 算法层面有什么区别?
18.lightgbm有哪些实现,各有什么区别?
阿里的话二面跪了,内推的阿里妈妈,难度比较高,跪了也是意料之中。
还有一些公司的面试没有参加,滴滴(面试时间和腾讯笔试冲突了,放弃),网易(2次笔试都过了,不过拿到百度后就没有去面了),搜狗(电话面了1面后,让去现场面二面,放弃),拼多多(二面被面试官放鸽子)。
其余的offer就是一些小公司了,蘑菇街、YY、Bigo这些,主要仍是问项目,参考意义不大。
PS:Bigo的推荐算法团队很是厉害,都是百度高T出来的,并且今年待遇很是给力。
下面说一下我的的学习经历吧。
虽然是CS专业,但实验室作的方向和ML半毛钱关系没有,且实验室也只有我一我的在搞ML,因此也算是野路子出身了。
理论基础:CS229视频、西瓜书、统计学习方法、数据挖掘导论、推荐系统实践、深度学习
实践基础:机器学习实战(研一时候照着书上代码打了一遍)、利用Python进行数据分析(照着书敲过一遍)
完成了这些基本功以后就是参加一些比赛了,刚开始入门的时候搞天池和Datacastle比赛,成绩都很水,而且是孤军做战,个中心酸只有亲身经历才能体会,后来研二后开始和一些外校的大神组队,拿了几个还能够的名次,也在大神身上学到了很多东西,因此我的感受作比赛最好仍是要组队,思惟更加开阔,一我的闷头作很容易放弃。研二上学期末开始去实习,实习作的也是搜索引擎、NLP、推荐算法相关。
再说一下面试须要准备哪些吧。
算法工程师的面试其实就是围绕几项来展开的。
1. 机器学习算法理论:LR、SVM、树模型、FM/FFM、EM、LDA、word2vec、推荐算法等等,都会被问到,须要懂得算法的推导、适用场景、使用的Trick、分布式实现。
2. 深度学习相关:CNN、RNN、LSTM的基本原理,不一样激活函数的差别等等,若是是面的传统机器学习岗的话,DL问的不深,但必定会问。
3. 数据结构与算法:leetcode高频题、lintcode高频题、剑指offer,大概这三样准备好就够了,校招前保证100多道题的积累量,面试时候写code应该就手到擒来了。
4. CS基础:计算机网络、操做系统,推荐书籍:王道程序员面试宝典,这本书对于突击面试颇有帮助。
5. 分布式:Hadoop/Spark这些,属于加分项,会问点基本原理,仍是须要看一下。
6. 编程语言:虽然作比赛都是用的Python,但C++或者Java必须掌握其中一个,面试也会问一些语言相关的
7. 海量数据处理:常常问的就是海量数据排序
Anyway,我的的秋招结束了(其实结束好久了),虽然有些遗憾,但拿的offer和薪资也都挺满意了,满足,开始弄毕业论文了,但愿能顺利毕业吧,就写到着吧,语序有点混乱,凑合着看吧。
PS:最近私信个人朋友太多,这里再补充点吧。
对于学校不那么好的、又立志找算法工做的同窗,这里给点建议:
1、尽快去实习!若是是3年学硕的话,研二上学期中下(11月-次年2月) 就能够去进厂里实习了,这样作的好处是能够避开春招实习生的招聘高峰,比较容易进大厂,据我所知,像百度、滴滴、头条这些公司都有常年在招实习生的,固然了,大部分是在北京。那么怎么找这种实习呢,推荐几种投简历的渠道:1. 实习僧 2. nlp job 3. 北邮人论坛的实习板块。对于学校不那么好的同窗,若是简历上有一二线公司的实习经历,那么内推简历经过筛选的可能性就大的多了。
2、 关于数据挖掘比赛,不少同窗问我如何入门这块,个人建议是分步进行,1. 先熟悉python的基本语法、numpy、pandas、sklearn、gensim、keras这几个比赛中经常使用的库的使用;2. 精读优秀比赛选手的代码,学习比赛的套路;3. 作完以上两步,就能够开始参与比赛了,天池、CCF、DataCaslte、Kaggle等平台的比赛均可以,不要贪多,同一个时间段最多参加2个比赛就能够,而后天天坚持优化结果,虽然过程可能会有点枯燥,可是最终会有收获的,通过观察与亲身实践,这类比赛比较吃经验(套路),要想取得比较好的名次,一般须要参加几回比赛积累失败的经验才行,过程少则半年,多则一年。
3、算法题必定要刷! 若是时间紧,就刷上面说的三件套(leetcode高频题、lintcode高频题、剑指offer),固然,要多刷几遍,作到看到题目马上想到思路并写出bug free的代码。若是时间比较充裕,能够刷刷leetcode中medium和hard的题目,锻炼思惟与编码熟练度,总之,刷题是一个锲而不舍的过程,切忌三天打鱼两天晒网!
4、专一于一个方向! 发现有些同窗(包括我年轻时候),总喜欢这搞点那搞点,今天学一下机器学习,明天学一下Java后台,后台再学一下前端。这种方法对于大部分人来讲是错误的(大牛忽略)!你要搞机器学习就专心搞,三条线并行搞:1. python -> 刷比赛 2. java -> hadoop/mapreduce/spark 3. python -> 深度学习,工做没你想象中那么难找。
做者:智障哦
本文来源于牛客网
——————————
牛客网(www.nowcoder.com)
- 互联网名企笔试真题
- 校招求职笔经&面经
- 程序员求职实习信息
- 程序员学习交流社区