(修订)百度大搜算法工程师的秋招经验分享

零.offer情况

  • 百度  大搜—互联网数据研发部—B2B搜搜   机器学习/数据挖掘

  • 华为  中央软件研究院 算法工程师  AI分布式框架开发

  • 搜狗  商业平台事业部 算法工程师

  • 新浪微博 feed流推荐算法工程师  

  • 贝壳  (不太想去没问具体部门)  数据挖掘/机器学习

  • 京东金融   用户画像组—数据挖掘工程师

一.写在前边的“废话”

一和二两部分是文中作者冠军的一些碎碎念,不想看的直接从第三部分看起~另外我把他叫我的外号统统换成了乔戈里

我和乔戈里是一个实验室的,虽不是处于一个项目组,但是久闻乔戈里大名,项目组主力。哈哈回到正题,就是乔戈里邀约给学弟学妹写一写自己的秋招的经历,说的是吧可能去年的我和今天学弟学妹们一样处于焦虑紧张刻苦的状态里吧,那时的我感受迷茫和担心不知道找工作这么神奇的高大上的话题怎么入手呢,所以想到这自己希望能把自己的经历写一写,希望有同感的的学弟学妹看到了能有一丢丢收货。

二.起因

读本科时一直希望的是读研所以未关注找工作的行情,只知道实验室的大神有去华为美团网易的大佬,但是并没有交流,保研后又忙于出差并没有研究工作,知识和师兄的交流中知道了工作的讯息,所以心里有个打算怎么在研究生阶段中准备然后找到一个自己满意的工作。时间过得很快自己就开学了回到了学校,新学期新气象,实验室人很好,乔戈里就是其中的一个,可是不久就感受到了一丝不安,就是我天天上课并没有和本科什么区别,这我可怎么找工作啊,再和一个大神室友的交流下,自己知道了机器学习nlp,CV的研究内容,自己感觉和自己一直做得不太一样。但是更贴合我的熟悉点。于是我进入了做算法和开发的纠结中,最后在自己的兴趣中,自己试着接触了下算法,但是感觉时间匆匆,缺乏信心和学习氛围,因而徘徊了一阶段,后来头条来我们学校进行了一个补招专场招聘,大约元旦前,于是一直思考工作的我就跑过去参与,先是笔试,后来面试,最后竟然投的算法没过被调岗,虽然面试官已经很友善了,但是奈何我没正规学过算法啊,连RF都说不清啊,因此我想我到底要不要那个调岗,后来想了想反正也不让去实习,那我就学一下算法吧,于是就进入了算法的漩涡中。

三.过程

或许到这才是重点吧,我的算法之路起源于一本书机器学习那本课堂教科书,后来觉得不行听同学说西瓜书和小蓝书是必备,但是我感觉那对我太难,于是我把机器学习那本书又看了遍,从规则学习到n-折验证,对机器学习有了认识,然后总觉得实践大于理论,我就又刷了机器学习实战,对里面的算法实现代码进行了刨铣和理解,以及手敲,这大概花了我俩月的时间,但是这仅仅是对机器学习的实践有了实践认识,掌握的也只是分类和回归的基础算法,后来开始读论文,读了一些顶会的论文,然后对其中一篇图像的论文关于图像去雾的论文进行了复现,这从配环境到理解基础概念大概花了一个月,最后遇到各种问题询问图像的实验室同学,算基本完成了过程,这个文章复现的过程就是让我接触到了深度学习,但是比较浅,仅仅是CNN,这在以后的面试中也表现得我的弱点,接下来我会提到这就不知觉中到了3月多,阿里已经开始面试了,这时的我仅仅期望阿里能慢一些面试,我想在准备准备,因为我没有相应的项目经验,于是我就和实验室的一个小伙伴和额外找的小伙伴开始组了个队打起了天池的一个比赛,我希望越快越好,同学说他看好的那个题4月才开始,后来我自己打了个线下赛,熟悉了下数据处理工具,然后我就开始接受了阿里的面试,这一次我接到的是阿里云的数据库的,结果可想而知,我根本不懂这些也没准备这些,挂了之后,虽然满满的失望,但是让我明白了如果回头学开发我要准备项目的架构原理和难点,接着从头开始学算法我要更开拓新项目,最后我选择了打比赛作为新项目吧,毕竟熟悉时间隔得时间短。实习就当锻炼,秋招应该能做个完整的算法项目,这样到4月我就开始了天池的比赛,初赛吧从数据处理到特征工程和模型训练,我和队友都很认真,逐步探索,每天纠结着成绩的排名,最后还好成绩排在了45/3151,进入了复赛,虽然不是太好但是我经历了整个过程,在这里我的建议是比赛有排名很好,排名不理想也不是很坏,重点是能有自己的想法思路融入,这是面试者关注的。

笔记:大家要记得笔记记住一些面试的自己的盲点和待学习点,进行任务学习。

以上是我写的一些个人经验,以下部分,是我看过的一篇关于算法的学习与准备文章,我基本照着学到了很多,文章很好,这里也分享给大家。原文地址:

四.面试总结

4.1 实习经历可以是一个金钥匙
  • 从上边的面试经历可以看得出,春招面试还是比较痛苦的,一般时间较长,且大多数时间纠结在基础知识。所以春招的面试准备重在基础和刷题,因为大部分人都没有项目经历,所以只能靠基础知识评价你的能力了。

  • 春招如果能拿到一个不错公司的offer,并做了一个较为完整的项目,那么恭喜你,秋招很简单。比如我的阿里实习经历,面试官看了项目以后就默认你有了较为扎实的理论基础(毕竟去BAT实习的还是少数啊),大部分考察你的实践能力,也就是问项目。

4.2 简历
  • 项目一定要真实具体。一个项目能够完整的从头到尾叙述下来,对于其中各种出现的问题,要有合理的解释。你在叙述项目的过程中,面试官会随时打断你,问你为什么?胡乱编个项目蒙混过关?不存在的。

  • 如果是现场面试的话,一定要画结构图。因为面试官也是普通人,听你说一遍,并不能对你的项目有一个直观的认识,所以画图最好

  • 最容易忽略的两个点:一是项目来源,项目背景;二是项目的创新点。大多数人在复述项目的时候一再强调各种花里胡哨的技术,这会另面试官反感的。阐述项目来源会让面试官更容易理解你项目的意义,否则说了半天,面试官不知道你在解决什么问题,那就囧了;其次最重要的是创新点,或者解决了哪些难点,如果一个项目很简单,或者是已经有成熟的解决方案,那你的项目意义在哪里呢?

  • 如果你的目标是算法工程师,就不要让社团活动、优秀班干部占据太多的篇幅,一页简历空间就那么大,在有限的空间里尽可能展示自己的技术实力。

4.3 我理解等面试结果的你
  • 等面试结果是痛苦的,我经历过两次。现在牛客里流传“终于收到某某公司的短信了”,结果一看是业务推销短信。然后大家一致评论“又疯了一个”。很有意思

  • 正视自己。不排除有非本人因素造成面试失败的,但是这绝对是极小概率事件。通常来讲,面试失败了,还是因为你某些地方还没理解透。你可能SVM推导卡在了一个步骤上,然后你抱怨说我只要看一眼书就会了,但是对不起,面试官认为你是比那些能顺利推导的同学是差一些的。

五.给明年的你

5.1成为算法工程师,应该学习哪些东西
  • 首先说算法工程师有几个方向:NLP,推荐,CV,深度学习,然后结合公司业务做得内容各不相同

  • 传统机器学习算法:感知机,SVM,LR,softmax,Kmeans,DBSCAN,决策树(CART,ID3,C45),GBDT,RF,Adaboost,xgboost,EM,BP神经网络,朴素贝叶斯,LDA,PCA,核函数,最大熵等

  • 深度学习:CNN,RNN,LSTM,常用激活函数,Adam等优化算法,梯度消失(爆炸)等

  • 推荐系统:itemBasedCF,userBasedCF,冷启动,SVD(各种变形),FM,LFM等

  • NLP:TF-IDF,textrank,word2vec(能推导,看过源码),LCA,simhash

  • 常见概念:最大似然估计,最小二乘法,模型融合方法,L1L2正则(Lasso,elestic net),判别式模型与生成式模型,熵-交叉熵-KL散度,数据归一化,最优化方法(梯度下降,牛顿法,共轭梯度法),无偏估计,F1(ROC,recall,precision等),交叉验证,bias-variance-tradeoff,皮尔逊系数,

  • 概率论,高数,线性代数(像我一样懒的人,就可以遇到哪里复习哪里,:D)

  • 常见问题(具体答案去搜知乎或者百度,最好能在实际项目中总结出来):

    • 常见损失函数

    • SGD与BGD

    • 如何处理样本非均衡问题

    • 过拟合原因,以及解决办法

    • 如何处理数据缺失问题

    • 如何选择特征

    • L1为什么能让参数稀疏,L2为什么会让参数趋于较小值,L1优化方法

    • 各模型的优缺点,以及适用场景

学明白上述所有内容你需要多长时间?反正我这么笨的人用了不到一年时间(我本科完全没接触过算法相关,完全是研一学的)

5.2 推荐书籍
  • C :《C primer5》《STL源码分析》《深度探索C 对象模型》《Effective C 》《Effective STL》 (虽然有些书有点老,不过开卷有益吧)(其他语言就不管了哈)

  • python:《python学习手册》《python源码分析》《改善python程序的91个建议》(Python必须要会)

  • 刷题:《编程之美》《剑指offer》《程序员代码面试指南》《leetcode》

  • 算法相关:《统计学习方法》(这本多看)《数据挖掘导论》《数学之美》《田林轩视频》《吴恩达视频》《西瓜书》

5.3简历项目
  • 最好能有两个相关的项目,而且是有质量的,不要太水

  • 没有项目的,可以去参见比赛(kaggle,天池),比赛成绩高,比项目管用。成绩不高的,一定要有自己的解决方案。

5.4刷题
  • 刷题是必须的,书目就是上边列的哪些

  • 每天一道或者两道,风吹雨打也不能停。如果坚持住,一年后你就成了

六.其他

6.1 什么叫学透了,学明白了
  • 别人问你问题,你能讲明白

  • 躺在床上,闭着眼,能完整的阐述一个算法(什么是完整?以SVM为例,SVM的推导?KKT条件?什么是支持向量?什么是松弛变量?为什么推导成对偶形式?核函数的作用是什么?如何选择核函数?模型优缺点?)你说这些问题我都明白,但是你是否能形成一个知识体系呢?一提到SVM,就能想到所有这些问题呢?

  • 能够达到第二步的要求,那么面试官在问“说一下你对SVM的认识”,你就可以滔滔不绝的讲了,这样面试官才能认可你,这样就很舒服了。

6.2 人脉太重要了
  • 找工作时,互相帮助,多加几个交流群,观摩大佬的一举一动

  • 多和上班的师兄沟通,因为他们能把简历直接给到leader手里

  • 多向周围的大神学习。就像我实验室的ACM大佬,他是我让我佩服的五体投地的存在。每次有什么不会做的编程题,找他解释都是秒解。还要感谢实验室的师兄,带我项目,助我去阿里实习。

七.面经

限于篇幅,这里不放面经了,需要的公众号后台回复  冠军的面经

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值