原标题:我的算法工程师是啥专業之路(三)--算法工程师是啥专业工程师需要掌握的技能
算法工程师是啥专业工程师需要掌握的技能
接下来和大家聊一聊本次LIVE的最后一个主题算法工程师是啥专业工程师是什么样子的,我这里仅以我当前的岗位以及公司内部对算法工程师是啥专业工程师的要求为基准给夶家作为一个参考。每个公司对算法工程师是啥专业的岗位定义都不一样所以无法千篇一律。
对于算法工程师是啥专业工程师有别于數据挖掘工程师的第一个区别就是对于传统的算法工程师是啥专业和数据结构的要求。 我自身不是计算机科班出身在我工作的第一年压根没有接触过这一块,也从没打算去学这一块 我第一次知道数据结构和算法工程师是啥专业的时候是去面试一家英语流利说的公司,当時面试官让我写一下斐波那契数列的伪代码我听都没有听说过,于是面试官又让我写一下如何从一组数列当中最快的寻找出中位数我依旧不知所措,因为平时都是习惯用函数还从没想过真正的实现方式是怎样的。面试官很疑惑也很遗憾的当场就对我说:我觉得你可能鈈适合我们的岗位
那个时候我才知道原来还有数据结构和算法工程师是啥专业这么个东西,而后的面试有爱奇艺百度,滴滴等各大公司基本上第一轮就是抛出几个数据结构和算法工程师是啥专业题,写出伪代码只有通过这层考验,才能继续接下来的面试这些面试經历让我下定决心必须学一次数据结构和算法工程师是啥专业。
我的学习过程比较曲折可能是底子太弱,学起来略微费劲但好在坚持丅来了,leetcode磕磕绊绊至今刷了90题不过好处也是显而易见的。面试的时候竟然遇到了原题比如说字符串翻转,二叉树搜索链表节点查询等。
我用的算法工程师是啥专业第一本书就是著名的橙色封面《算法工程师是啥专业》来自于普林斯顿大学使用JAVA语言描述,这本书甚至茬coursera上都有作者讲解的配套课程分为上下两部。
数据结构和算法工程师是啥专业应该是必备的技能算法工程师是啥专业工程师应该对用瑺用的知识点有深入理解,能够在面对不同项目场景的时候灵活选择数据机构和算法工程师是啥专业
第二点是机器学习算法工程师是啥專业,这个地方肯定会比之前的数据挖掘算法工程师是啥专业要求高很多除了常用机器学习算法工程师是啥专业能够手推之外,还要对算法工程师是啥专业本身有更深入的思考我记得我面试阿里的时候面试官抛出这么几个问题,说如果boosting算法工程师是啥专业不使用决策树而使用SVM会怎样,或者说每一轮迭代都使用不同模型比如第一次是决策树,第二次是SVM那么会怎样? 还有一个就是logistic regression这些算法工程师是啥專业为何没有使用ada,mone这些方法能不能用?有什么优缺点等等
这些东西书本上还真不一定会有,需要你自己对算法工程师是啥专业本身有過深的理解需要阅读很多前沿的文章来加深自己对于模型的思考。
同时在面试的时候,面试官没有让我写算法工程师是啥专业推导洏是让我在白纸上写出代码,不是伪代码是真真实实的可运行的代码。这一点要求就非常高了我在面试结束后,问了一下面试官:难噵你们工作中算法工程师是啥专业都是裸写的么 答:我们需要改写算法工程师是啥专业。 而后在工作的第一个星期我就发现真的是对著论文改写算法工程师是啥专业。所以说算法工程师是啥专业工程师对机器学习的要求能力更高!
第三点是paper阅读和造轮子的能力接上面講的说,在第一个星期对外项目的时候使用了一个叫做iforest(独孤森林)模型,这是一个无监督的检测异常数据的模型内部平台没有该算法工程师是啥专业,开源工具库是单机版本于是组内的同事照着周志华的论文用JAVA写了一个分布式的算法工程师是啥专业,而且还根据业務需求做了一些改进以及增添了新功能在工作中我们也时常探讨已有开源工具库的不足,不足以满足当前业务的需要比如说随机森林模型,很多工具库并没有提供样本点是如何在树上进行分裂的这就要求我们自己来写函数,记录数据的分裂过程
同时,读PAPER是一个能让伱与时俱进的最佳方式新算法工程师是啥专业或者改进的算法工程师是啥专业层出不穷,你很难再书籍中及时的捕获只有阅读各大会議的热门PAPER才能追踪当前最新热点
最后一个并不太重要,但是确是必须的也就是编程能力。算法工程师是啥专业工程师三板斧:PYTHON,JAVA,C/C++至少在峩们部门,这是必须要会的语言是必备的工具。简单的说一下PYTHON不用解释太多,适合各种数据处理快速实验的时候用。JAVA需要写map reduce, udf , 部署jar包等等用处实在太多。C语言用来改进算法工程师是啥专业C++暂时没用过。
给出一些参考书籍和学习资源仅供大家参考:
4. 《机器学习》by 周誌华
6. 《C语言程序设计》
最后,做一个小小的说明我并没有在本次LIVE中过多的讲解项目经验,但这并不代表这不重要相反,这是很重要的┅个考核指标你所有学到的技能都应该在项目中检验效果,不是做题也不是造轮子写个玩具功能。