海康威视算法面经秘籍

《AI未来星球》陪伴成长的人工智能社群,价值过万的各种内部资源及活动,限时特惠中,点击查看。

求职跳槽福利:为了便于大家求职、跳槽的准备,大白将45家大厂的面经,按照知识框架,整理成700多页的《人工智能算法岗江湖武林秘籍》,限时开放下载,点击查看下载。


面经整理历程:经过一年多的努力,大白整理了超过3500篇,各类大厂的算法面经资料。

并将涉及到的知识点,按照知识框架,分类汇总,每个公司整理成一篇,比如本文的海康威视面经

大家对照面经,可以了解心仪的公司,会根据你的简历,问哪些知识点?便于大家对掌握的知识,进行回顾梳理。

希望为大家在求职或者跳槽的道路上,提供一些帮助,为大家取得心仪的offer助力。

面经整理心得:大白也将整理所有面经的心得,写成了一篇文章,点击查看心得

其他大厂面经:国内其他大厂的面经汇总,点击查看目录

海康威视面经整理:江大白

1 海康威视面经汇总资料

1.1 面经汇总参考资料

① 参考资料:

(1)牛客网:海康威视面经-64篇,网页链接

(2)知乎面经:点击进入查看

(3)面试圈:点击进入查看

面经框架及参考答案:

(1)面经知识框架:点击进入查看

(2)面经参考答案:点击进入查看

1.2 面经涉及招聘岗位

(1)全职岗位类

【大数据算法工程师】、【图像算法工程师】、【数据挖掘工程师】、【自动驾驶算法工程师】、【AI算法工程师】、【视频编码算法工程师】、【杭州研究院大数据算法工程师】、【智能传感算法工程师】、【AI算法加速工程师】

1.3 面试流程时间安排

PS以上流程为大白总结归纳所得,以供参考。

其他注意点:

● 两面+HR面+后面可能会加一面,比如大boss或者技术大佬面,可能会给SP级别

加面全程扣项目细节,面试官如果是数学大佬,一直深挖项目里数学公式的推理证明。其中按照经验值设定的常数,会问你经验值是怎么推导出来的,类似这种,问的很细。

● 有的人在第一面技术面之前,会加电话面,可能是简历初步筛选

1.4 海康威视面试心得汇总

★ 感觉海康不是那么看重相关经历,主要考察你的逻辑思维能力和解决实际问题的能力,应该是看重你的潜力吧。

★ 一面就是一定要对自己的项目非常非常熟悉,遇到了哪些困难,怎么解决问题的,有哪些创新等等

★ 二面面试官应该是个leader,更关注宏观上的东西,如果在学习的时候只关注自己领域的具体细节,对其他相关领域不关注,可能容易问到知识盲区。讲话逻辑清晰,而且没有一句废话,从项目开始,一点点深挖,比如项目中用到这个方法,是谁提出来的,如果让你用别的方法你会怎么做,如果没有这些数据你会怎么搞,如果这个方法不行了你会怎么处理,都是很抽象的考察。但是细节的地方也会追问,讲完了还会帮你一起用一两句话总结。

★ 感觉HR面,不像是纯人力资源的面试官,他们好像都懂些技术,或者是对接技术岗的HR

★ 海康面试过程中,中间的battle过程,主要还是看你如何把话语主动权尽可能多拉到自己这边,记得扬长避短,面试官双商都很高,一定不要胆怯被问到语塞,要直面问题并迅速抓取他感兴趣的点,尽可能的把自己的优点在不同问题中展现。

2 海康威视面经涉及基础知识点

2.1 图像处理基础

● 怎么理解图像的频率?

● 介绍一下双边滤波?

● 边缘检测算法,膨胀腐蚀的原理介绍一下?

● HOG特征,如何进行计算?

● 立体匹配方面,给外行讲一下角点检测和立体匹配?

答:角点检测:角点是具有一定特征的点,具体包括在角点处一阶导数最大,二阶导数为0,其指示了物体边沿变化的方向。根据这些特征,我们可以对图像中的物体进行定位。比如,构造已知具有一定距离的角点物体,通过拍摄获取物体的图像信息,对图像中角点信息的提取,搭建起图像和现时的比例映射关系。其比较经典的应用在于,标定。

立体匹配:对于两张或者多张图片,若图像中存在同一个物体的像点,则找到同一个像点在不同图像中的位置差异,即为立体匹配的过程。

● 图像缩放算法有哪些?

● 图像插值算法之双三次插值的原理讲一下?

● 空间域处理-空间滤波-平滑空间滤波器了解吗?

● 图像高斯模糊运算直观解释一下?

● 把一个图像旋转一定角度,要怎么做(关键是插值这个点)

2.2 深度学习:CNN卷积神经网络方面

2.2.1 讲解相关原理

2.2.1.1 卷积方面

● 可变形卷积在实际部署上有什么问题?

● 卷积提取的信息是什么?

2.2.1.2 网络结构方面

● Resnet相比于之前的卷积神经网络模型中,最大的改进点是什么?

● Resnet之后有哪些新的基础网络,介绍一下?(resnext, SENet, DenseNet等)

● InceptionV2、V3的区别了解吗?

2.2.1.3 其他方面

● 感受野是如何计算的?

● BN的原理和作用?

● Batchnormalization在训练和测试的时候有什么不同(项目介绍提到过)?

2.2.2 激活函数类

● 讲一下softmax?

● 详解softmax函数以及相关求导过程?

2.3 深度学习:RNN递归神经网络方面

2.3.1 讲解相关原理

● LSTM网络参数数量计算公式的推导?

2.4 深度学习:CNN&RNN通用的问题

2.4.1 基础知识点

● 问了一些对于CNN现在强势抢占RNN应用场景(机器翻译,语音合成等)背后的insight?

● 正负样本不均衡时的解决方案?

2.4.2 模型评价

● 模型如何进行评价?分类:P-R图,F1值

● 样本不均衡,只对大样本有兴趣,怎么评价?

● F1值的原理讲一下?

● 准确性、精确率、召回率的指标是如何判断的?

● 准确性、精确性、召回率是不是随着置信度的大小而改变,你们是怎么设置这个置信度的,有没有试过别的阈值?

2.5 传统机器学习方面

2.5.1 讲解相关原理

2.5.1.1 数据准备

● 数据清洗:异常值怎么判断?箱型图:上界怎么定义?极端异常值怎么判断?

2.5.1.2 特征工程

① 特征降维

● PCA理论过程?

● 简单介绍一下PCA?

● PCA+SAE和SAE+PCA有什么不同,分别做过对比吗?

② 特征选择

2.5.1.3 有监督学习-分类和回归方面

① 分类回归树

● 随机森林的随机是什么,是样本随机采样还是特征随机采样?

● GBDT和XGBoost的区别,XGBoost都调过哪些参数,这些参数有什么用,效果怎么样?

● XGBoost 和 lightGBM区别,各自优势,调参心得?

● GBDT原理、在处理onehot属性时,当1或者0的数量很多的时候是否会发生问题?既然GBDT处理onehot属性时存在问题,为什么你们还要这么做?

● gbdt、xgb、lgb的区别和具体推导?

● xgb的一些问题

(1)对gbdt的改进?

(2)用了什么提高速度的方法,怎么并行化的?

(3)为什么用了泰勒二阶展开而不是三阶四阶?

(4)xgb里面怎么处理缺失值?

(5)xgb直方图算法怎么做的?

② SVM

● SVM的原理?什么样的函数是核函数,如何去选择核函数,线性,高斯核函数。

③ 决策树(DT)

● 决策树的分割点的选择方法有哪些?

2.5.1.4 无监督学习-聚类方面

● kmeans 算法,em算法,推导kmeans算法收敛的条件?

● 简单介绍一下Kmeans,K值选取的方法,初始中心怎么优化?

2.6 深度学习&机器学习面经通用知识点

2.6.1 损失函数方面

● 常见的Loss,回归的,分类的?

● 如何通俗的解释交叉熵与相对熵?

● 交叉熵公式推导?

2.6.2 激活函数方面

● 怎么理解Relu函数的作用?

● 写了sigmod 及其导数,还有他的值域?

2.6.3 网络优化梯度下降方面

● Adam和任意一个变种的推导式?

2.6.4 正则化方面

● 有哪些正则化方法?

● 正则化项的功能作用?

● 写一下L1、L2的数学表达式

2.6.5 压缩&剪枝&量化&加速

● 优化模型容量的方法,先排除说简化batch,优化模型结构和压缩模型,使用半精度或者多gpu这些外,还问还有啥技巧?

● 围绕项目,讲int8模型量化和卷积加速的多种方式(fft,winograd, im2col+sgemm)

2.6.6 过拟合&欠拟合方面

● 什么是过拟合?防止过拟合有哪些操作?

● 如果发生过拟合怎么办?改善过拟合的办法?

● L2正则化和dropout为什么可以防止过拟合?

● 介绍模型压缩,模型蒸馏(分类与目标检测两个方向)

3 海康威视面经涉及项目知识点

3.1 深度学习:CNN卷积神经网络方面

3.1.1 目标检测方面

3.1.1.1 讲解原理

● 目标检测的几个主流深度算法以及优势?

● 给两个bbox怎么求iou?多边形IOU计算为什么不均匀撒点?

● 说一下faster-rcnn的整个从输入到输出的框架流程、说一下rpn的原理?

● 目标检测中针对小目标的解决措施

● 如何解决类内的检测?

● Two-stage的检测和One-stage的区别?

● RCNN, Fast-RCNN, Faster-RCNN的发展历史?针对Faster R-cnn的问题,如何解决后面FC过多的情况?

● 检测的框角度偏移了45度,这种情况怎么处理?

● 说一下anchor-free模型FCOS的原理和损失函数?

● FPN以及SSD算法

● 介绍anchor与anchor free的优缺点

3.1.1.2 损失函数

● Focal loss具体怎么操作的、说下focal loss中两个参数的含义,以及它存在的风险?(风险这块商汤面试的时候也问了,我似乎都没答全,准备去补一补)

3.1.2 图像分割

● 现在最好的分割模型是什么,我答了deeplab v3+,面试官接着问,deeplab v3+相比于deeplab v2的区别在于什么?

答:deeplab v2也是基于encoder和decoder架构的,但是后面有连接CRF条件随机场,而deeplab v3+没有了条件随机场,deeplab v3+的亮点之处在于引入了ASPP空洞卷积模块和同步的BN。

● 分割出来的结果通常会有不连续的情况,怎么处理?

3.1.3 超分辨

● 解释一下什么是超分辨率?(跟个人研究课题有关)

3.2 深度学习:RNN递归神经网络方面

3.3 强化学习

● 强化学习从dp到蒙特卡洛方法、TD差分法到最后的DQN各个阶段的原理和trick都介绍一遍?(期间会打断问一些比如off policy和 on policy区别之类的问题)

● 强化学习未来的发展路线,和图像、语音这些如何结合?

● PPO相对于TRPO的改进?

● 什么情况下使用重要性采样?

● 直观上来说,AC方法是on-policy还是off-policy?既然是on-policy的方法,A3C没有使用重要性采样的情况下,直接取之前策略的数据会不会有问题?

● DP方法和TD方法区别在哪里?面试官说这个涉及到本质问题。

● 为什么要采用优势函数?

3.4 机器学习方面

4 数据结构与算法分析相关知识点

4.1 数据结构与算法分析

4.1.1 线性表

4.1.1.1 数组

● 寻找乱序数组中第K大的数?

● 一组乱序数组,一直给进输入新的数,求整体数组的中位数,时间复杂度?

4.1.1.2 链表

● 两个有序链表排序,k个有序链表排序,时间复杂度?

● 2个有序链表的合并到多个有序链表的合并?PS:给出最优解法、并非暴力法

4.1.1.3 字符串

● 字符串翻转(abcdef -> efabcd)?

● 手撕代码(123->321)

● 给定一个字符串,找出最长的回文子串(只会判断是否为回文子串的我,只说了暴力解法思路,代码都没写)

4.1.2 树

● 二叉树路径和?

● 二叉搜索树中寻找给定值?(每个节点的val不一样) 就是和本节点值比较,然后决定是否找到/分到左子树还是右子树。

4.1.3 排序

● 冒泡和快排、问了如何优化?冒泡就是加个计数器,为0就break循环,快排就是随机选取pivot。

● 快排和堆排的优缺点和应用场景?

● n个数取topk?

● 给一个数组排序,不限排序方法,写了快排,问平均时间复杂度,然后问有没有更快的排序方法?

4.2 算法思想实战及智力题

4.2.1 算法思想实战

● 青蛙跳台阶

4.2.2 智力题

● 买n个苹果,6个一袋,8个一袋,求最少买几袋?

● 一个公司的员工X人,平均年龄Y岁,每年离职率N,新员工都是21岁,每年都会补到X人,求P年后公司的平均年龄?

● 一根绳子对折n次,从中间剪一刀,共分成几段?

4.3 其他方面

4.3.1 数论

● 三个整数a,b,c,怎么找到中间值?

● 给定一个正整数n,问n最少可用多少个整数的平方和表示?(四平方和定理,故只需要考虑n是否可以用1、2、3个整数的平方和表示。当时没有想出判定n是否可用2、3个整数平方和表示的数学解法,直接使用的O(n)的暴力解法。但也可使用更优化的方法)

4.3.2 概率分析

● 从一副52张扑克牌中随机抽两种,颜色相等的概率?

● 一根筷子掰两次,组成三角形的概率?

● 一根绳子随意砍两刀,得到三段,组成三角形的概率?

4.3.3 矩阵运算

● 给两个矩阵的左上角顶点和两个矩形的变长,判断矩形是否相交?

4.3.4 其他

● 斐波那契数列,写出空间复杂度为1的求法?

● 从左上角到右小角最短路径?

● 堆与栈的区别

4.4 Leetcode&剑指offer原题

● Leetcode72:字符串编辑距离 有没有比动态规划更好的方法?

● 剑指Offer15 :求一个数二进制表示中1的个数,问了负数怎么处理

5 编程高频问题:Python&C/C++方面

5.1 python方面

5.1.1 网络框架方面

5.1.1.1 Pytorch相关

● Pytorch的model流程讲一下?

5.1.1.2 Caffe相关

● 对caffe中blob的理解?(项目中使用到的)

caffe中的blob跟tensorflow中的tensor一样是一种存储数据的矩阵,在网络中的数据的传递和计算就是用的blob,一般对于做图像相关领域来说blob是4维的。

5.1.2 基础知识

5.1.2.1 区别比较

● python里面的浅拷贝和深拷贝

5.1.2.2 讲解原理

● Python类的私有变量怎么设?

● python里的迭代器了解吗?

5.1.3 手写代码相关

● 现在有一个list,怎么把它排序?(sorted函数)

5.2 C/C++方面

5.2.1 基础知识

5.2.1.1 内存相关

● python的深拷贝和浅拷贝

5.2.1.2 区别比较

● 结构体和联合体的区别是什么?

● 引用和指针的区别?

5.2.1.3 讲解原理

● 虚函数、多态的意义?

● C++熟悉吗?解释下C++的面向对象的思想

● 有几种类型转换的方法?(隐式转换,显式转换)

● C++ 继承?

6 操作系统高频问题:数据库&线程&常用命令等

6.1 数据库方面

6.2 操作系统方面

6.2.1 常用命令

● Linux常用命令熟悉吗?--面试官会先问是否熟悉,如果不熟悉的话,就不会再问。如果熟悉,就会相应地问一些内容。据面试官讲,并不要求全都会,重点看潜力吧。

● Linux系统下查看CPU使用情况?

● 计算文件中所有jpg图片的数量的命令?

7 技术&产品&开放性问题

本文由 大白智能 作者:凯哲 发表,其版权均为 大白智能 所有,文章内容系作者个人观点,不代表 大白智能 对观点赞同或支持。如需转载,请注明文章来源。

发表评论

This site is protected by wp-copyrightpro.com