算法工程师是做什么的即学硬件系又学软件系吗

先来看下广义上算法工程师是做什么的做的都是哪些工作:

1.数据预处理算法工程师是做什么的要根据业务的需要将各种脏乱差的数据进行清洗,有点像从垃圾桶淘(感覺这个淘字我用的很妙因为大多数情况下高质量的数据真的很少)宝贝的过程,把数据处理成算法可以用的程度

2.然后就是很多人觉得高端的地方,就是自己改良个算法也好或是干脆用SVM、LR等现成的算法去训练模型。干的事情无非是根据经验调调参数改个数,run喝杯茶。改个数run,喝杯茶改个数,run喝杯茶。改个数run,喝杯茶.............

3.各种优化因为性能永远不够,因为模型效果永远都有优化空间

现在再来談算法工程师是做什么的怎么丢掉饭碗,我们知道代码可以做的东西无非是把逻辑抽象成数学公式然后通过机器的计算能力得到结果。倳物的逻辑大都可以通过两个行为表示,一个是循环第二个是遍历。同理算法工程师是做什么的以上的这些工作,除了第1条都可鉯用循环、遍历两个行为表示。如果计算能力足够强完全可以把所有算法遍历一遍,把所有参数的可能遍历一遍如果计算能力足够,唍全可以不需要优化当然,这些都是极端情况所以,最终算法工程师是做什么的会随着硬件计算能力的增强变成了只做数据清洗的人

随着计算能力的发展,可见的是量子计算机的出现算法工程师是做什么的的工作一定会发生大的改变,甚至被革命好啦,就扯这么哆

}

我是16年转行的18年中下旬面试的,大部分面试是在北京帮同学搞个小项目无聊面着玩的然后就是16-18年之间cv还是比较火的,科班出身的人还没毕业竞争压力小所以放到2020已經不太适用了!参照电梯的故事:

1.三个人乘坐同一电梯,A一直做俯卧撑 B一直原地跑步C 一直用头磕墙电梯到了顶楼,人们问AB,C如何上来的,分别答曰:做俯卧撑跑步,磕墙


这篇文章主要针对那些编程能力弱的想转行或者想跳槽的初级算法工程师是做什么的希望对你们可鉯有一些帮助,像基础月薪3万以上的或者小team的leader就别看了可能会浪费你们时间。

1:介绍我是如何转行的我会介绍我的学历背景,以及学渣程度这里可以给学习不好的人想转行的一点参考;

2:工作经历以及简历制作

如果家里没矿,上学的时候好好学习多认识认识人,这樣以后工作会轻松很多


本科物理硕士光学,本科的时候除了踢球就是打游戏,根本不学习成绩应该是倒数一档(我们学院挂科学分達到25就要退学,我大一就挂了24个然后被退学吓到了,就开始动用其他手段了抄不抄袭的大家都懂的,我就不写了万一被现在或者以後的领导和hr看到了,给扣个思想品德不行的帽子就难受了反正还是不学,继续沉迷游戏当时是真傻比,天天就知道打游戏如果当时恏好学习,现在我没准都年薪百万了)本科毕业去了一家光伏厂,干了不久就感觉无聊琢磨着这干下去不得一辈子几千块钱,然后又囙学校读书了硕士期间因为怕毕业被卡,所以课开始老实上了研究生考试也简单,不用求人了但是科研为0,毕业论文我是就着研2的某一天求助我朋友帮我写的一段程序编的(这段历史只是想跟大家说一定要好好学习,可以少走很多弯路)

硕士的课题与图像无关,の前也没有上过相关的课程之所以想转行做图像有以下几个原因:1.有一次看到系里让提交蓝色背景的1寸照,我看到一个同学因为没有这個底色的就自己用matlab写了个程序P了一个,当时惊为天人;

2.中期的时候看到一个同学做的图像分割以及配准觉得很神奇;

这两件事让我对圖像产生了兴趣,所以就买了本绿皮书图像处理学习看了大概4 5章,后面感觉公式太多了 看不下去了然后根据这个写了个hough变换 圆形物体檢测的小程序,然后写到了我的校招简历上去了图像处理知识就停留在绿皮书的前几章;

跟神经网络产生联系是因为中期答辩的时候看箌同组的同学用BP神经网络做一个报警预测,又惊为天人然后我就买了本matlab版的神经网络介绍书籍,跟着书上推导bp反向传播然后用matlab实现了丅;接触传统机器学习算法,是因为当时我发小天天跟我鼓吹ML的神奇我就去下载了吴恩达的斯坦福公开课,看了大概6 7集然后对线性回歸,SVM贝叶斯分类有了大概的概念。

校招的时候我的基本情况就是:

cv知识基本为0,传统图像处理知识5分编程10分,机器学习算法10分(满汾100分)硕士期间matlab代码量1000行以内,理论不行编程也不行,有的只是对图像处理和机器学习的热爱

校招的简历上内容的就是,对图像处悝非常感兴趣了解线性回归,SVM,K-means等传统机器学习算法了解bp神经网络。靠着这种简历大公司自然没人鸟我,最后是一家做人脸识别的小公司收留了我就这样我成功转入cv,这里很感谢第一个老板愿意给我一个机会,毕竟当时我连CNN是什么都不知道;

这里我想给想转行的小夥伴的建议就是:

1.你可以学习菜可以技术不牛逼,但是你需要认识点牛逼的人跟他们产生交集,这样一起玩的时候你会得到很多指点;(这里可能有人会说只讲道理不说方法的都是耍流氓因为每个人情况不一样,这里我只讲下我自己是怎么跟他们产生交集的我当时雖然学习不好,但我足球踢的好从本科到硕士,学院里的人大部分人我都认识结识了很多优秀的人)

2.多去尝试别人给的建议,比如我發小给我推荐的ML我就去尝试了解了如果你不去尝试,认识牛逼的人也没用;

3.别被别人无意间的嘲讽打败之所以说这个是因为当时我去請教过让我对图像产生兴趣的那个同学(就是上文 那个用matlab P图的那个)如何入门,他当时的原话是“你又不会编程那么喜欢玩游戏,还是別搞图像了太累了,毕业找个轻松的事业单位或者国企混日子吧”当时我心里真的是一万只草泥马在奔腾,但是我也没表现出来只昰尴尬地微微一笑,可能他当时也是好意这里套用《当幸福来敲门》里的一句台词,don't let anyone tell u that u can't do something,including yourself台词可能我改过了 记不清了,这里稍微来点鸡汤

朂后就是关于技术方面的入门可能过时了,因为我毕业的时候是16年当时deep learning在国内工业届刚兴起,也没有cv专业的同学毕业所以可能当时cv緊缺,所以我趁着风口飘了进来现在如果校招转行,起码得了解至少一种深度学习框架比如tensorflow,pytorch或者caffe,然后吴恩达的公开课和cs231n刷一刷 也昰有好处的,不错的入门视频编程还是得刷刷leetcode,虽然到现在我还没刷过但是我已经进来占坑了所以还是建议校招的小伙伴刷一刷。

1.吴恩达机器学习公开课

3.李航《统计学习方法》

以上仅供非科班出身的校招小伙伴参考!


我跳槽前2年时间在两家公司干过,跳的有点频繁這里不建议大家频繁跳槽,大公司不喜欢这种不安稳的员工

主要技术手段人脸识别

当时我老大用的自己写的框架,公司产品用的也是他提供的算法但是他不给我看,保密所以我当时只能自己学caffe,这样他对我的帮助有限基本属于边工作边学习的状态。

在这家公司学到嘚主要就是深度学习的基础知识以及应用;

主要业务领域:交通安防领域

刚去的时候公司规模50人左右,后来走的时候发展到了100多人大蔀分技术以及编程都是在这里学的,这里厉害的人还挺多的虽然不是那种发论文创新的工作,但是都是解决算法落地问题的所以跟着怹们学习了很多调参经验以及工程经验。我在这里主要做交通领域的项目项目A。公司当时主要有三个项目当时快走的时候就问了问其怹项目组的同事,他们的实现方法以及业务逻辑这样我的简历上就多了两个没做过的项目。

所以我的简历中项目相关一共写了5个项目公司2--3个, 公司1--2个然后我自己做的项目A占了60%的篇幅介绍,项目B,C介绍的比较简单但是技术都是想通的,跟面试官把思路讲清楚提前想好鈳能会问到的细节一般不会出问题。这里得夸下前东家的氛围不同组的同事之间不会藏着掖着,会的都会分享给你

因为工作经验不是特别多,所以能给的建议就是:

1.如果你项目做的不多就把其他组的项目拿过来消化消化变成你做的。基本上大家应该都会这样做但是伱要把没做过的项目细节都问清楚,如果面试的时候细节答不上来基本就露馅了。

2.不要夸大自己在项目中的作用很多面试官都比较有經验,多问几轮就会露馅(我没有夸大所有项目都是写的合作完成人)

3.把项目经验写详细点就好了,其他的不用太花心思面试官也不看,我因为项目比较少简历就一页A4纸,照片也没贴这里推荐大家长得丑的别贴照片,尽量削弱这些我们弱势的长得帅的贴吧,这样hr尛姐姐可能会给你加分面试的时候就看本事了,不会因为长相问题被刷的


这里我就提供我的csdn下载地址了哈赚点积分,下载只需要一分不过分吧应该,没积分的就看文章最后的问题吧我还是贴出来了。。。

面试的公司主要有互联网公司比如优酷,高德地图饿叻吗,今日头条陌陌,拼多多等自动驾驶公司也有一些,斑马网络驭势科技,蔚来汽车还有安防行业的如 清华同方

还有华为2012实验室,以及一些教育视频领域的公司,小公司我没写在文档里太多了很多都忘记了。

大公司的面试官除了技术和代码外最喜欢问的问題就是,你认为你之前做的最成功(最有成就感)的一个项目是解决了什么难题?做了什么贡献

我之前的项目主要都是用目标检测和場景分割,所以所有问题基本都是基于这两个方向的

然后互联网公司最后一关永远都是考数据结构所以面试互联网公司一定要多刷刷Leetcode

我昰裸辞,在家呆了半年所以有很多时间面试如果不想裸辞,推荐准备周期长一点

然后我面试互联网公司的时候数据结构完全没看过,所以都挂了那时候什么 快排我都不会,动态规划图论这些都不了解,然后时间复杂度空间复杂度也不会分析后来买了本算法数看了看,会了点但是也晚了所以如果要去互联网公司,推荐提前学学数据结构推荐一本书,普林斯顿大学的《算法》

自制力真的很重要峩被游戏荼毒太深了,准备面试的时候游戏和学习的时间比例8 2开以后我也不劝别人少喝点酒,少抽点烟了减肥之类的了,我连熬夜游戲都戒不掉还让别人戒什么

最后祝转行的小伙伴都能找到理想的工作!


阿里系的高德地图,优酷斑马,饿了吗

1.segnet原理还知道哪些分割網络?segnet为什么这么设计?相较其它网络有什么优势有其它类似这种对称结构设计的网络吗?

2.ssd的原理其它目标检测网络有了解吗?有做过對比吗ssd为什么快?

3.最新的目标检测网络有了解吗

4.项目中怎么解决误检的问题?实际产品中怎么评价模型注重召回率还是准确率?

5.车牌定位为什么分两步为什么不设计一个检测小目标较好的网络?如果让你设计一个你会怎么做

6.说一下项目中遇到的困难,你是怎么解決的

7.项目中承担的职责是?

8.为什么来北京跳槽为什么这么频繁?

9后期维护这么耗费人力为什么不做成通用模块?

10.code:给一个一维无序数組里面有N个正整数,如何快速找出里面重复的数字给出时间复杂度和空间复杂度。

具体问题忘记了只记得几个

1.dropout原理,能从物理学的角度去解释下吗测试和训练的时候有区别吗?

测试和训练的那个细节区分当时忘记了面试官就直接github上拉了caffe的代码下来让我看,然后给怹讲

2.1卷积实现可以用传统的图像卷积,也可以用im2col

2.2给一个字符数组和一个无限大的buffer,从字符数组中删除 指定模式的字符串要求时间复雜度为O(n)

笔试,1个小时内选4道题做完基本是链表,动态规划等

1.resnet基本结构这种结构的设计思想,优点解决了 深度学习中哪些难题?

3.lstm基本結构怎么做识别的,每个切块怎么决定其属于哪个类别会不会出现一个字符被切了N刀,然后N个结果不同如果会 ,怎么解决

4.segnet的结构?有什么优缺点用的基网络是什么?pspnet多尺度融合具体怎么做的

5.所有项目中认为做过的最好的是?解决了什么问题遇到的最困难的项目是?怎么解决的

6.我们现在做的ADAS,受限于车载芯片,更多用传统算法做能接受吗?有兴趣做吗

7.车牌识别中不同姿态 不同背景 不同长度嘚问题怎么解决?遇到曝光 模糊的问题怎么解决

还问了很多传统图像算法,因为跟上气合作车载硬件资源有限,很多东西要用传统算法做问有没有兴趣做传统图像等等

然后问了问深度学习,机器学习相关知识

原理题都忘记了基本都是针对目标检测网络,代码如下

1)②维矩阵 行列方向 都是递增的 然后判断某个值是否存在

2)字符查找相关的我说用字典,面试官让我自己写个字典我说只记得hashmap原理,自巳设计散列函数不行 忘记了

2.面试官写了一段c风格字符串转化成string的代码 然后让我判断是否有错

3.问了下float class int 等变量在内存中如何分配的,如何排列 能高效利用内存

4.c++多态怎么实现的? 虚表里的指针都存放在哪里类的实例共用虚表吗?

理论问了问机器学习的算法svm,贝叶斯分类,adaboost等等

1.输出二叉树 每一层级节点中的最大值

2.如果我检测自然场景下的文字可能有多方向的,如何修改ssd? defaultbox需要修改吗iou规则计算需要修改吗?

4.写丅IOU计算的代码

2.问了几个外卖机器人 目前遇到的问题比如碰到玻璃了 激光雷达接收不到反射信号 怎么解决 之类的问题。

今日头条—懂车帝業务部门

4.表格识别时如果倾斜了怎么办?如果倾斜90°怎么办?

6.segnet的原理是其他主流的分割网络有哪些?网络结构

7.给你一张图片,一个億级的图片库搜索出最相似的图片,怎么做

8.svm的原理是什么?怎么推到的怎么求解的?高效求解算法

9.防止过拟合的手段?原理是?

10.attention机淛有考虑过在现有的模型中引入attention吗?会有什么益处

给一个二维矩阵,搜索出一条递增的最大路径即每个相邻的元素必须满足,Xt+1=Xt +1.

2.之前┅直做的车辆相关的项目吗

3.之前公司的规模多大?

4.为什么转行都面了哪些公司?

5.选择公司的标准是什么

今日头条AIlab交叉面试(8.3下午)

2.網络有做过什么改进?

4.所有模块显存消耗

5.线程和进程有什么区别?

6.caffe为什么不支持多线程线程锁 用什么加的,用的哪个接口

7.你了解的 排序算法有哪些,时间复杂度多少

写个简单的二分查找,分析时间复杂度

提问阶段问了下招人标准(因为已经放弃了所以随便问了),实际上如果有顶会论文或者网络方面做过创新性改进工作,编程操作系统方面的要求可以放低,但如果没有这些必须过关。。

實际上他们更关注的是模型效率以及解决问题方案的效率,如果效率低下方案是肯定不会被采纳的。

1.关于ocr文字定位的问题:

1.1直线怎么檢测的

1.2 二值化 用的什么方法?知道大津法(ostu)的原理吗?怎么去噪的

1.3如果直线倾斜了,形态学方法失效怎么做

1.4怎么旋转图像的?

1.5 计算旋转矩阵选的基准点是哪里最少选几个?图像旋转的原理

1.6旋转矩阵求出来后,如果新坐标系下坐标不是整数怎么办

1.7插值具体原理?朂近邻的像素点选取规则双线性插值像素点选取规则?

2.知道图像处理中比较有名的特征提取方法的原理吗比如sift ,hog,lbp等?

3.边缘检测用的什么方法

4.人脸特征点用的什么方法?用过什么机器学习方法SVM的原理知道吗?

5.resnet的结构是什么为什么这么设计?

6.SSD做了哪些裁剪以及加速

8.为什么大部分分类网络的图片尺寸为啥是固定的?比如都是224*224或320*320

10.简述翻卷积原理。

12.ssd怎么学习多个aspect_ratio的类别以及offset的不同特征层上 做class分类以及offset回歸用的卷积核大小一样的吗?

13.池化层反传原理

14.推倒卷积层反向传播公式

16.静态变量,全局变量的区别分别存放在哪块内存?类的实例能操控类里的静态变量吗

17.怎么动态开辟2维数组?

18.1知道积分图的原理吗编程实现。

18.2.给定一组字符串以及一个字典,判断该字符串是否能甴字典中包含的key组成字典的key是字符串,value是 数量比如:

有两组数据,每组数据按行排列均有1亿行,每行存放一个图片的url每个url都是64个芓节的大小,现在只有4g内存可以使用如何找出两组数据中相同的url?

1.项目中的主要职业是?

2.ssd的结构对比过其他检测网络吗?

3.最新的目标检測框架有了解吗

4.机器学习有了解吗?逻辑回归决策树,贝叶斯分类器svm,马尔科夫决策有了解吗

1.一个无序数组,找出其中第k大的数 忣索引并 分析时间空间复杂度

2.n阶台阶,每次可以迈一步或两步有多少种走法。

1.人脸识别流程是 你特征点回归用的什么方法? 你级联嘚哪些弱分类器是怎么设计的怎么训练的?用的 什么数据集人脸怎么检测的?


2.ssd 原理等等。。

3.矩阵特征值,特征向量的意义

4.介紹了下拼多多的图像应用场景,比如以图搜图广告检测,图片内容理解违规内容检测等等

面试官2(交叉面试):

1.请用代码流程表示 ssd的方法。

我一脸懵逼然后面试官又给我解释,你就把每层 concat 做NMS时候如何从内存中拿数据 ,XXX 的代码 写一下就行了 我当场表示 没看过 不会写

1.目标检测的原理是什么,数据怎么标注

我讲了然后说听不懂,然后说不懂深度学习让我给他讲明白

2. 给你个二维图像 ,里面都是 0 1 把里媔连通区域都找出来。(就相当于给个二值图里面有1 2 3 4 等数字,然后把这几个数字对应的外接矩形框找出来)

这个就用漫水填充算法就行叻 深搜,找到所有连通分量然后不同连通域上不同色就行, 当时代码忘记了 没写 就说了下原理居然就直接被diss ,说原理我也知道云雲, 我就争辩 造轮子没有意义这玩意opencv都有现成的我没必要 关注这个,然后 就又继续被diss 算法工程师是做什么的 首先是个工程师。

后来想想还是自己编程太弱虽然我现在认为强行记这些算法没啥意义,工程中很少会自己去写这些但是直接跟面试官顶撞还是不好的,所以這个面试官3的细节我放出来只是想告诉大家不要diss面试官

1.介绍下主流的目标检测网络的原理

我先答的 正负样本比例控制的问题,这个原因茬retina-net里有讲

然后 又被问了 除了这个还有别的原因吗

我就随便答了下two-stage boundingbox 回归过两次 修正更精细相当于一个级联的过程 就随便扯了下

3.还问了几个問题 但是 忘记了。。

1.ssd 数据扩充具体是怎么做的

没看过源代码 就说了下论文里提的,回答面试官感觉不是很满意

为了设置几个初值 涵盖仳较多的可能性加速收敛? 更容易像ground-truth靠近忘记怎么答得了

3.caffe多卡训练的时候 数据怎么交互的?如果一张卡数据训练完了 其他卡没训练唍 会怎么样?

没了解过完全懵逼 直接说不知道

5.adaboost 系数权重更新时,指数项 上为啥有个负号

这个看下公式就知道了 指数项上 负号 后面是 预測的lable和 groundtruth的乘积, 预测对了 的话 加上负号相当于削减 正确样本比例, 同样 会扩大误分类样本比例 当时忘记了 没说清楚

6.相似目标 的识别用什么手段区分?(比如 数字“0”和字母“O”)


二.自动驾驶公司汽车相关

驭势科技(自动驾驶):

2.如果图片中目标存在遮挡使用什么方法鈳以提升检测精度?

3.如果把模型改为二值化网络代码需要做什么修改?

4.模型速度如何加速

5.如何解决 场景中 目标大小不一样 带来的尺寸變化问题?


驭势科技(二面7.26下午)

1.如果在git上push代码,发现git上有人在你之前改变了git上最新的代码你怎么做?

2.linux上常用哪些指令

4.车载摄像头凊形,如何判断强光照射雨天以及雨刷器运动遮挡 行车区域?如何设计一个简单鲁棒的算法 检测这些异常情况

5.车辆压线 怎么判断?

6.给伱一个单目摄像头如何估算与前车的距离?可以根据空间坐标信息得出深度吗

8.单聊:为什么从上海来北京?为什么从交通安防领域转箌自动驾驶领域近几年的职业规划?最想在新公司得到哪方面的成长

蔚来汽车(7.30上午)

1.数据怎么获取?怎么标注中间状态怎么处理?

2.车辆改装检测用ssd+segnet会很慢,为什么不segnet直接分

3.训练改装检测 的ssd分了多少类?用了多少数据如果类别样本不均衡,怎么解决

9.目标检测模型一般怎么评价 精度?

11.SSD前向时阈值制定标准是什么?

12.ssd的速度 怎么优化的

写下nms的实现过程 ,

华为2012 实验室(杭州手机端智能拍照部门,7.27下午 电面)

2.网络初始化能全用0吗

4.常用的几种防止过拟合的手段?

6.讲一下常用的目标检测以及场景分割的网络结构

7.讲一下你做项目遇到的問题,然后是如何解决的

8.传统图像处理 算法有了解吗?

9.传统机器学习有了解吗

10.PCA的原理是什么,SVM的原理

12.为什么用交叉熵做分类的loss? 欧式loss,均方差loss 可以用来做分类loss吗

13.如何解决车牌因曝光,或者车牌背景颜色变动 等原因造成定位不准的问题

14.训练的时候 一般学习率 batchsize都怎么调整的?

16.对工作地点有什么考虑

清华同方(7.30下午)

2.传统图像处理了解那些算法,传统机器学习了解哪些算法

5.常用的跟踪算法有哪些?

6.纯虛函数的定义是什么

7.常用的防止过拟合的技术有哪些?

8.解释下drop-out的机理为什么可以防止过拟合?

9.从loss设计角度防止过拟合的手段是

10.从参數数量角度 防止过拟合的手段是?

11.常用的激活函数有哪些优缺点是什么?

12.double 和float哪种显卡计算能力更强哪种单位时间 吞吐量大?

14.矩阵论泛函分析学过没?概率论学过没

15.两年大概训练了多少次网络?c++用多久了python用多久了?

16.一般怎么训练?为什么开始学习率要大一点batchsize为啥开始也要小一点?

17.优化器一般用什么adam的原理是?

18.样本不均衡的分类问题 怎么解决怎么做数据增强? 有从loss层面考虑过吗?了解focal-loss吗

20.训练时的方差 和偏差 有什么区别?

}

我要回帖

更多关于 算法工程师是做什么的 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信