海康威视算法面经秘籍
《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 技术&产品&开放性问题
无
本文由 大白智能 作者:凯哲 发表,其版权均为 大白智能 所有,文章内容系作者个人观点,不代表 大白智能 对观点赞同或支持。如需转载,请注明文章来源。