|
之前写过一篇文章《申请算法工程师实习要注意什么?》,当中的部分内容也非常适合回答这个问题。
这里主要摘录文章里的两点:(1)算法工程师到底是做什么的?(2)申请算法工程师岗位的候选人通常需要具备什么样的专业能力?
1、算法工程师到底是做什么的?
大多数公司招聘的算法工程师都是应用型工程师,基本不需要研发新的算法(当然,具备新算法的研发能力,会相当加分),只需要用到现有的机器学习算法去解决实际的业务问题。
从解决问题的角度,算法工程师需要做的事情是:(1)分析业务问题,并把它抽象和转化为一个算法问题;(2)寻找一种合适的解决该问题的算法方案;(3)通过实验来验证方案的可行性,并形成解决问题的最终方案。
从实际操作的角度,算法工程师需要做的事情包括:解决方案设计、数据预处理、特征设计和清洗、模型训练、模型结果评估、模型部署上线、模型维护和迭代更新。其中,模型训练这步需要事先准备好需要用到的算法工具,在一些基础设施比较好的公司,这类算法工具或者组件可能是现成的。否则的话,算法工程师还需要事先编写相关算法的代码。
2、申请算法工程师岗位的候选人通常需要具备什么样的专业能力?
从算法能力的角度,作为面试官,我通常希望候选人具有“ T 字型”知识结构。所谓 T 字型,指的是一横一纵。“横”表示的是希望候选人基础知识扎实,能够对机器学习的基本概念、问题类型都比较清楚,在算法广度上有一定保证。这里需要了解的包含但是不限于:数据预处理的知识(比如:缺失数据补全、归一化、数据降维)、机器学习基本问题以及相关概念(比如:回归问题、分类问题、聚类问题、有监督/半监督/无监督)、常规分类算法以及相关概念(比如:逻辑回归、随机森林、Xgboost、偏差与方差、Bagging/Boosting/Stacking)、常规分类算法的评估方法(比如:AUC、F1、准确率、覆盖率)、常规的聚类算法(比如:K-Means, GMM, dbscan, 谱聚类)、常规的深度学习算法以及相关概念(比如:DNN/CNN/RNN/LSTM、Relu/Sigmoid、梯度消失与梯度爆炸、反向传播算法),等等。基本上,这里提到的机器学习的基础知识在常规的机器学习课程或者参考书(比如:周志华老师的西瓜书)都会有涉及,如果稍微系统的学习过机器学习,对这些概念都不会陌生。
"纵"表示的是希望候选人在某一个算法方向上有特长,比如:NLP 算法、CV 算法、迁移学习算法、异常检测算法、或者图相关算法,等等。基本上,如果候选人在校期间有自己的研究领域,基本上都会有一块自己熟悉领域的算法。既然是作为特长,那希望候选人不仅仅是了解这个熟悉领域的一个或者两个典型算法,而是对整个领域的算法类别,各类算法的优劣,算法历史发展的沿革,都能有比较深度的了解,对这个领域的关键算法的细节也都比较清楚。细节是魔鬼,有时候熟与不熟往往体现在细节的掌握上。
除去算法能力,我们也希望候选人具备较好的工程能力,能够熟悉一种或者几种主流的编程语言,比如 Python、Java、C++(面向对象的编程语言一般只要熟悉一种,其他的都是相通的)。给定一个算法方案,算法工程师要能够自己编程实现。如果对编程语言还不太熟悉的,可以考虑直接学习 Python 。
P.S 蚂蚁金服今年的实习生招聘开始了,有兴趣的同学欢迎投递简历哟~ |
|