海康威视电话面

这部分内容的情况有些记不太清了,应该是提前批次,电话面试之后,如果通过会邀请去现场面试(现场面试情况后续给出)。

毕业之前,仅做感恩回馈吧,希望能对有需要的人起到一点帮助。
其中的解答部分,是个人在面试之后整理的一些,有疏漏错误之处,大佬们指出更正,避免误导。

面试岗位:AI算法工程师

对于其中有参考和涉及的内容,基本上注明了来源,若有侵犯与不当,请私聊更正或删除。
感谢网友们的无私分享。

一、电话面(2019730日星期二)

1. 介绍个人项目,用到的方法和框架,创新点及结果

答:略。

2. 解释下C++中类的继承?有没有具体项目或实践?


3.        图像处理中的缩放方法有哪些?

3.1 图像缩放算法小结

3.2 图像插值算法之双三次插值


4.        图像模糊方法有哪些?

4.1 数字图像处理—图像高斯模糊运算直观解释

4.2 图像模糊有什么用


5. SoftMax Loss

5.1 卷积神经网络系列之softmaxsoftmax losscross entropy的讲解

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

5.3 Softmax函数与交叉熵


6. 过拟合原因?怎么解决?

6.1 深度学习—过拟合问题

根本原因特征维度过多,模型假设过于复杂,参数过多,训练数据过少,噪声过多,导致拟合的函数完美的预测训练集,但对新数据的测试集预测结果差。过度的拟合了训练数据,而没有考虑到泛化能力。

减少过拟合总结:过拟合主要是有两个原因造成的:数据太少+模型太复杂
(1)获取更多数据 :从数据源头获取更多数据;数据增强(Data Augmentation)
(2)使用合适的模型:减少网络的层数、神经元个数等均可以限制网络的拟合能力;
(3)dropout
(4)正则化,在训练的时候限制权值变大
(5)限制训练时间(提前停止);通过评估测试;
(6)增加噪声 Noise: 输入时+权重上(高斯初始化) ;

(7)BatchNormalization

(8)结合多种模型: Bagging用不同的模型拟合不同部分的训练集;Boosting只使用简单的神经网络;

7. 正则化项的作用?

7.1 深度学习—过拟合问题

正则方法主要有哪些?

(1)L1L2正则:都是针对模型中参数过大的问题引入惩罚项,依据是奥克姆剃刀原理。在深度学习中,L1会趋向于产生少量的特征,而其他的特征都是0增加网络稀疏性;而L2会选择更多的特征,这些特征都会接近于0,防止过拟合。神经网络需要每一层的神经元尽可能的提取出有意义的特征,而这些特征不能是无源之水,因此L2正则用的多一些。

(2)dropout深度学习中最常用的正则化技术是dropout,随机的丢掉一些神经元。

(3)数据增强,比如将原始图像翻转平移拉伸,从而是模型的训练数据集增大。数据增强已经是深度学习的必需步骤了,其对于模型的泛化能力增加普遍有效,但是不必做的太过,将原始数据量通过数据增加增加到2倍可以,但增加十倍百倍就只是增加了训练所需的时间,不会继续增加模型的泛化能力了。

(4)提前停止(early stopping):就是让模型在训练的差不多的时候就停下来,比如继续训练带来提升不大或者连续几轮训练都不带来提升的时候,这样可以避免只是改进了训练集的指标但降低了测试集的指标。

(5)批量正则化(BN):就是将卷积神经网络的每层之间加上将神经元的权重调成标准正态分布的正则化层,这样可以让每一层的训练都从相似的起点出发,而对权重进行拉伸,等价于对特征进行拉伸,在输入层等价于数据增强。注意正则化层是不需要训练。

7.2 深度学习中的正则化方法总结——深度学习第七章

7.3 欠拟合、过拟合与正则化——深度学习花书第五章(二)

欠拟合(underfitting)和就是指模型的训练误差过大,过拟合(overfitting)就是指训练误差和测试误差间距过大。

模型是欠拟合还是过拟合是由模型的容量(capacity)决定的。低容量由于对训练集描述不足造成欠拟合,高容量由于记忆过多训练集信息而不一定对于测试集适用导致过拟合。训练误差,测试误差和模型容量的关系可以由下图表示,在容量较小时我们处在欠拟合区,训练误差和测试误差均较大,随着容量增大,训练误差会逐渐减小,但测试误差与训练误差的间距也会逐渐加大,当模型容量超过最适容量后,测试误差不降反增,进入过拟合区:


7.3 DropOut

1)在神经网络的训练过程中,对于神经单元按一定的概率将其随机从网络中丢弃,从而达到对于每个mini-batch都是在训练不同网络的效果,防止过拟合。

(2)理解dropout


8. 算法题:找出数列中前K个最大的数。

8.1 寻找给定的一个数组中第k大的一个数,或者是寻找前k大个数

思路1这道题是一道常见的面试题,使用二叉堆的思想进行操作。首先取前K个数,构建二叉堆,时间复杂度为K/2 * LogK,并排序(最大/最小堆),时间复杂度为KLogK;

然后依次将剩余的元素,与堆顶进行比较,若符合条件(大于或小于)则采用插值方法进行原地替换,不需要额外开辟空间,最多需要移动比较K次。时间复杂度为K(N-K);

因此总的时间复杂度为K/2 * LogK + KLogK + K(N-K),空间复杂度为K。当N远大于K时,时间复杂度约为O(N);当K接近N时,时间复杂度接近O(N^2);

思路2利用快排的思想,循环找到第k个位置安放正确的元素,此时k的左边是小于k位置元素的元素,右边是大于k位置元素的元素,即前k个元素就是问题答案。时间复杂度O(n)。

——不需要排序

参考链接:

1漫画:什么是堆排序?

2最大K个数问题的Python版解法总结

#海康威视##算法工程师##校招##面经#
全部评论
记录很详细,还有答案,感谢!
1 回复 分享
发布于 2020-05-29 21:56
电话面面了这些问题吗?还是和现场面一起?
点赞 回复 分享
发布于 2020-09-10 21:21
8.1 那道题我在牛客网上为啥通不过啊
点赞 回复 分享
发布于 2020-05-30 11:18

相关推荐

码农索隆:以下是我以我微薄的认知提供的建议: 1.考个教师资格证,去当体育考试。 2.去健身房当健身教练(因为在我印象里面体育生身材都不错)。
点赞 评论 收藏
分享
2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题// 实现一个解析 url 参数的函数function parseUrl(urlStr) {// TODO}parseUrl('*********************************************');// 返回 {a: 1, b: 2, c: 3}追问:在链接里见过什么部分?用 hash 路由的话放在哪第二题// 考虑有一个异步任务要执行,返回 Promise,这个任务可能会失败,请实现 retry 方法,返回新方法,可以在失败后自动重试指定的次数。/*** 异步任务重试* @param task 要执行的异步任务* @param times 需要重试的次数,默认为 3 次*/function retry(task, times = 3) {// TODO: 请实现}// ---------------测试示例 ----------------// 原方法const request = async (data) => {// 模拟失败if (Math.random() < 0.7) {throw new Error('request failed');}const res = await fetch('https://jsonplaceholder.typicode.com/posts', {method: 'POST',body: JSON.stringify(data),});return res.json();}// 新的方法const requestWithRetry = retry(request);// 使用async function run() {const res = await requestWithRetry({ body: 'content' });console.log(res);}run();第三题就是给 retry 函数添加类型注释,用到泛型第四题:在组件库中将 Alert 用 api 的形式实现(应该就是 message 这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
评论
12
101
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务