各个行业都有算法部分,统计有统计的算法,控制有控制的算法,图像处理有图像处理的算法。在很多传统行业,算法不是一个独立的岗位,而是由研发工程师负责。

  互联网和软件行业把算法分离成一个独立的岗位大体有两个原因。第一,低级的软件工程师不懂算法,或者更干脆一点说不懂数学,所有涉及到模型和计算公式的工作都必须要找专业技术人员来搞定。第二,从生产效率考虑,初级算法工程师很多没有很好的软件工程背景,简单点说就是不会写代码只会写matlab,这种工程师的工作交付没有很好的方法直接投入生产,所以要将他们的工作和生产环节隔离开。

  面向业务流程的算法设计,例如数据结构设计,排序,搜索,随机数生成,分布式计算优化,是普通的计算机专业常识,一般中高级程序员都需要有能力负责这种算法的开发设计。

  大数据和统计分析算法,大多数都用在各种行业的量化模型的构建,比如推荐系统,广告竞价,量化交易系统,财务金融分析决策。这一部分一般并不是程序员做的,而是其他与数学紧密的一些专业技术人员。这一部分也有很多工具包可以直接用,在很多行业里其实并不会单独抽调团队来做研发。

  推荐算法和协通过滤算法,就是各种推送系统的设计机制,这个无他,熟练工种+各种业务需求满足。

  NLP,自然语言分析,包括信息检索技术,比如倒排索引,概率检索等。 另外,在面向文本内容分析中,还会使用到很多的聚类,embedding等机器学习算法。依然多数应用于广告,推送系统,搜索引擎等产品中应用。当然,依照惯例,大部分的公司是没有专门的团队做nlp的,一线公司除外,因为能使用的第三方库很丰富,所以普通算法工程师会退化到调参和api调用等低级工种上。

  信语音信号处理,例如回路噪声抑制,vad,语音合成,acoustic signal processing是一个特定领域,需要有很深入的理论认知才能设计出好的处理算法,例如做语音识别的前端信号采集,人工语音等。如果是小公司做业务相关的东西,这块也不建议做自我研发,成本太高。

  图像处理,尤其是基于OpenCV的图像处理算法,一般产品里有做美颜,滤镜什么的很喜欢招这块的小朋友,近一两年有被做深度学习的取代的趋势。最近google出了arcore,所以让不少小公司也能出一些效果很好的换头类应用。

  深度学习,当然,别认为这样的领域大部分公司能做到什么程度。首先,国内的大部分公司,号称做ai的,集中在做人脸识别,这块做的太成熟了,基本上现在上手也就是搭框架,什么rcnn,yolo,vgg,alexa,这些都需要去研发么,不,你能把模型跑起来就可以了。说白了会用工具,知道基本调参方法,就能去做了。其次,正儿八经用到DNN,RNN,CNN的地方,一般都没什么鸟数据可用,所以低端的岗位最后会变成收集数据和标记数据的马仔。

  SLAM,集中在机器人定位导航上,比如无人车,扫地机器人,这个方向已经很专了,和上面的那些大路货不是一个层面的,要有好的团队,好的导师才能带你入门,国内这个方向的团队实验室来来就那么几个。

  计算机图形学,这也算是一个大类,主要涉及到图形渲染算法,光追算法,三维图像重构等图像绘制方面的内容。这个方向,不光是做3d引擎和游戏开发方面,对于很多行业需要与cad相关的,都会涉及到这一个领域的模型和优化算法设计。

  VR,AR领域,涉及到的包括视频跟踪,SLAM,raytracing,几何投影等等,其实就是一个综合的领域,目前主要是做计算机视觉的转行做这块。

  传统的算法范畴还包括:所有的业务逻辑流程设计,随机数生成,校验,加密解密,压缩算法,但是这种类型的算法不需要专门一个算法工程师来做,都是程序员搞定的。

  通信基带信号处理,网络优化算法,这一块其实很式微了,毕竟高大上的算法小公司没成本去实施。

  控制算法,自适应滤波算法,用在机械领域上,比如机械臂行程控制,稳定性。

  有限元算法,这块从雷达,机械,电磁学,到服装设计,都有很有价值的应用。

  统计建模,stochastic calculus,点估计,主要是量化金融行业,某些行业的信号检测也会应用到这块的技术

  信号处理,比如插值,频谱分析,盲信号分离,压缩感知,物联网大部分应用会涉及这一块。