菜的找实习找不到,而且其实也没时间去,上学就得做导师项目。本来打算收手了,打算开学直接投暑期,在Boss上被hr要简历了,然后直接排了面试,这君要臣面臣不得不面啊…但是其实根本不抱任何希望,就当是去体验一下流程,攒个面经。
然后就开始疯狂准备八股。把简历里的yolo,1-5恶补了一下,cpp的八股也是,还有简历里的本科毕设里用的算法(surf啥的)都挖坟出来背。
面试官人很好,氛围很轻松,不那么紧绷,挺好的。
硬核的八股一个都没问…跟想象中不一样,之前面某家,上来就问一堆。
问的都是比较宽泛的问题。
一面:(括号里是回答
自我介绍
项目介绍
你用了哪些加速推理的手段?(trt的图融合,半精度)
还有哪些可以加速推理的方法?(答了前后处理用gpu、剪枝)
做项目时候遇到了什么问题,怎么解决的
IoU的定义?
为什么python转C++了有什么考虑(速度、业界经验)
实时系统和一般的系统相比有什么特点?
如何评估一个算法的性能(举目标检测的例子说指标、耗时、内存消耗、资源消耗)
不是科班有学过计算机相关内容吗,数据结构操作系统等(自学过一些
用过git?rebase和merge的区别(忘了,没答上来
有没有遇到过内存泄漏,怎么解决(答了一个虚析构函数的例子
算法题:
实现循环缓冲队列CircularBuffer,四个函数 push pop front back
其实简单,但是我没见过,不太自信以为很难所以写的很迟疑。
用的queue,加上一个值保存back。
额外的让写一个print函数打印当前队列的遍历,不然不好看输出
但是queue只能访问头尾,不会弄(当时脑子傻了,其实新建一个queue就好了)
延申的问题:
front和back应该有为空保护(我不知道怎么写异常处理所以没写保护,只有返回void的写了(泪
然后面试官说加一个条件,-1为无效值。就好了。
如果多线程访问这个怎么办?(加锁,我就写了个头文件mutex,然后就说可以用说的)
哪几个函数需要加锁?(我最开始答的push pop,其实是都需要,后来自己也发现了不对)
时空复杂度?(空On 时O1)
这个会有内存泄漏的风险吗?(没有,没用动态分配)
反问:
1.用新算法多还是用传统的多(都有)
2.岗位需要什么技术(有很多方向,根据候选人特点)
后续更新:二面感觉彻底凉凉,但还是来更一下面筋
二面:
项目:
如何划分数据集?
指标怎么样?
如何解决标签不明确的数据?
都有哪些加速模型的方法?(量化、图融合、gpu、剪枝
模型剪枝是什么原理(没用过,对面说不了解也正常
滤波算法了解吗?粒子滤波?卡尔曼滤波?
讲一下你的这个图像拼接项目(特征点提取、匹配、筛选、融合
如何匹配特征点?(向量的距离
特征点描述子是什么?(surf的描述子,加上方向信息(开始胡说八道
RANSAC和一般的最小二乘有什么区别?(可以排除离群点的影响
C++:
值传递和引用传递的区别?(引用传递改变原变量,值传递是复制
什么时候用引用传递?(答了一个在函数里避免返回值返回结果的复制构造浪费
析构函数能不能用虚函数?(老生常谈,略
构造函数能不能用虚函数?(老生常谈,略
C++的八股挺简单的问的倒是,可能不是面试官的主力语言。
算法题:
二叉树的最大直径,用自己的IDE写,包括了手写树的结构体和构造测试用例。
我的思路是算一个节点左右的最大直径相加,面试官说了一个,我没听懂和我的有什么区别。
最后没写出来结果,写了一半,递归脑子尬住了,也不会构造一棵树啊啊(我是菜b
本人建议大家,平常多用acm模式,链表和树什么的都自己写写,不要被oj惯坏了!