【导读】
合格的算法工程师真正应该具备什么技能?
在面试时,面试官又会如何验证你具备这些新技能?毕业仅一年,相继
拿下头条、阿里、腾讯等offer的本文作者,为你绘制了一幅面试技能雷达图。
211B段高校毕业的小硕一枚,光电子专业(偏光通信工程)。
专业方向实在不想去,也没有好的选择,不是研究所就是通信设备厂。
研究生期间自己折腾Java,C++开发,也自学了点机器学习算法,毕业秋招
时
也尝试过找
算法
岗
机会,all挂了,那
时
真没有竞争力,
自己的
储备也不够
,
毕业时
去了家小型互联网
公司,主要是做后台开发。一年后
公司挂了,今年
8月份不得不开始重新找工作
,好在我入职后就准备着手入坑AI算法。所以,
我有(dao)幸(mei)在最近2年时间经历了AI算法岗面试,第一年参加秋招,
今年的面试经历感
觉很艰难,体会颇多...
入职两个多月了,有时间回想一下为转行算法岗所经历的学习和面试过程,其实也踩过了不少大坑,今天写点东西(好久没码字了),要是能帮到和我一样准备找算法岗的你,也算是不枉熬这一夜。
兄弟姐妹们,
别怕,坑我帮你踩啦!
一开始只是自学网络上的视频课程,但我本身没有基础,周围又没有人可以交流,
视频课程和博客文章在知识点的构建上都很碎片化,很难在形成从理论到项目实践的系统性认知。
尤其是网络中的博客文章,我点进去看了之后实在是看不下去,慢慢的就觉得没有底气,归根到底是因为
自学中接触网络的信息太碎、太杂了,很多东西串不起来,感觉自己知道的不少了,但是和行家一交流就经常短路,最后只能尬聊。
这个阶段耗费了我大半年的时间,自学效果很不好,总结一下:对算法原理公式推导理解不深刻、用法不熟悉,更不懂工业界算法模型怎样落地应用的。
2018年底,一位学长推荐我学习了一门免费课程:《机器学习面试算法常考题精讲》,5个多小时的课时,我当时花了3、5天时间认真学习了课程内容,这对我之后的学习和面试帮助很大,主要是让我
在初学的阶段
清晰了如何学习,重点应该放在什么地方,如何选择合适的技术方向,合理的学习路径是什么,项目经验如何提升,简历该怎么写才能有吸引力进而获得面试机会,今年的技术面中常会出现哪些考点问题。
小伙伴不要拍砖了,我现在把这门免费课程推荐给你,也许能帮助到你。
◆◆
四个技能点
:
知识、
工具、逻辑和业务
◆◆
算法工程师必须具备的四个技能点
:知识、工具、逻辑和业务,
我可以用一个实际例子中说明一下,比如我去面试“推荐算法工程师”的职位,具体是什么能力呢?
-
知识:
主流
CTR模型以及预算控制,流量预估,bidding策略等模型算法的原理和技术细节
-
工具:
coding能力,大数据相关的spark、flink、深度学习tensorflow、pytorch、ps-lite等模型训练、serving相关工具
-
逻辑:
算法题,模型之间的演化关系
-
业务:推荐业务逻辑包括冷启动、召回和排序等
在构建模型时的区别联系,如何根据公司业务模型制定模型的目标效果
算法基础是个基本功,需要在学习阶段夯实,千万不要在这个阶段过于深究类似于SVM、EM、HMM等这些需要深奥的数学逻辑层面的理解,会把人耗死而且也极易让你丧失信心。你需要量力而行,不是所有的算法都要搞清楚,抓住主流的算法模型,可以从各大公司的JD里发现面试官比较关心的算法模型有哪些,我总结了一些主流的算法如下:
LR、决策树、SVM、EM、Adaboost、PageRank、 FFM、随机森林、 GBDT 、XGBoost 、聚类、CNN、RNN、LSTM、Word2Vec,FCN、RestNet、Fast R-CNN 、MobileNet、SSD
我学习期间汇总了300+道NLP、搜索推荐、机器学习算法的面试常见题,总结一下:
NLP项目
——
要写上深度学习模型,19年面试NLP基本上都会问到Bert,Attention机制,最好准备下。
搜索推荐
——
相关岗位,感觉除了考察算法外,工程上考的也比较多,面一个做搜索的公司就让设计一个方案统计商品近6小时实时点击率。当时有点蒙,回答的并不是很好,有回答使用Storm来实时计算,具体实现并不太熟悉。
机器学习算法
——
GBDT基本上必问,Xgboost,LR、决策树模型也问的很多,没有遇到手推算法,常见机器学习模型的损失函数要清楚。
-
GBDT的原理
-
决策树节点分裂时是如何选择特征的?
-
写出Gini Index和Information Gain的公式并举例说明
-
分类树和回归树的区别是什么
-
与Random Forest作比较,并以此介绍什么是模型的Bias和Variance
-
XGBoost的参数调优有哪些经验
-
XGBoost的正则化是如何实现的
-
XGBoost的并行化部分是如何实现的
-
为什么预测股票涨跌一般都会出现严重的过拟合现象
-
如果选用一种其他的模型替代XGBoost或者改进XGBoost你会怎么做,为什么?
NLP:
-
有没有自己改过模型?
类似Google Inception这种的;
-
你了解attention机制吗?
seq2seq,有用到attention机制吗?
-
了解最新的bert,transformer吗?
-
怎么优化深度学习模型性能?
-
你们有用到哪些激活函数?
NLP中有没有用到?
-
LSTM和GRU那个性能更好,什么情况下gru的效果会比lstm好?
-
讲一下Word2vec原理;
-
商品购买评论,分成10个类,怎么聚类?
把整个流程从头到尾讲一下。
搜索推荐:
设计一个系统来完成搜索词类目预测,
设计一个关键词分类系统,搜索行为日志中有搜索关键词和对于的点击,购买商品日志,每个产品知道具体的分类,怎么处理同一个关键词多分类的情况?怎么处理误点击数据?
广度考察:
-
Adaboost
、 FFM、随机森林、
个别聚类算法,模型评估等知识的理解程度
-
Spark的调优经验,Model Serving的主要方法,Parameter Server的原理,
GAN,Online Learning的基本理解
-
Embedding方法,Attention机制,Multi task,Reinforcement Learning
太多了,不在这里一一列举。
我把当时整理的这份
300+
道
机器学习、深度学习的常见面试题的文档(
还附有答案哦!
很多是我在面试中碰到的原题)送给你,拿走不谢,因为我是雷锋!
(放心拿,不转发、不分享)
有需要的同学加我微信好友,马上发你笔试题目,暗号:
“题”
8月份我开始准备找工作,年初听到很多公司大量裁员的负面消息,还是有些担心就业形势不太好,从后来的投递简历情况看,AI方向的招聘还是挺多的,但是企业的招聘要求在不断增加,门槛提高了。
今年上半年我自己的学习过程给了我很强的信心,在正式找工作前,我先试水面试了几家公司,目的就是积累经验和找一下面试感觉,对我之后学习的效率提升了不少,每次面试中遇到的问题有针对性地做查找资料、细化知识点,准备好之后再投了一批简历。
自己准备的简历投完之后得到的面试机会并不多,所以找了一位老司机检查了一遍简历,发现简历的确有比较大的问题。在他的指导下,调整了简历项目,去除了之前的和目标岗位不太相关的项目,细化了算法部分的项目。
改完简历后,面试机会果然变多了,我主要找深圳和北京的岗位。我当时在职,频繁的请假跑去现场面试也不方便,在集中面试了一周之后拿到了3个offer,年薪都在40W以上,
最终我选择了北京的一家视频类推荐的头部公司算法岗职位。
建议:
面试过程中,面试官常根据你的简历追问一些细节问题,
简历上写的技能和知识点,自己一定要熟悉,不熟悉的不要写上去。
简历
写和目标岗位相关的项目,之前工作中不太相关的项目可以去掉,简历整体项目经历要和目标岗位匹配。
一个完整的算法岗面试过程主要有以下几个主要环节:自我介绍、项目介绍、算法推导和解释、数据结构与算法题(写代码)。
-
关于自我介绍,主要就是简单介绍下自己的教育背景,在校或在职期间的研究方向和所做的项目以及在项目中所充当的角色等等,为之后的面试做个铺垫,让面试官从中捕捉一些点来向你提问。
-
项目介绍是最为重要的,这也是体现你综合实力的地方,对项目背景、项目实现的方案,项目所实现的东西都要了如指掌,做机器学习的,必须准备一到两个重点的机器学习项目,关键是项目中间的技术细节都要了如指掌,比如你用了LR、或树模型,就得知道所有LR或树模型相关的推导和原理,一旦你说不太清楚,面试官就会对项目的真实性存疑。