本文主要是介绍Horizon提前批面试凉经,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一面:1h
0.自我介绍
1.两个项目介绍(难点,学到了什么。量化算法三步骤,定点浮点的问题,静态图与动态图)
(1)还是NNIE项目中的三个坑:malloc动态分配内存的时候对于string类型需要memset初始化,不然的话会产生内存不对齐的情况,发生段错误;还有运行mobilenetv1/v2的时候,因为原始的代码中输出FC层的维度是W,结果用imagenet数据集出来只有1维,而不是1000维,这里原因是mobilenet的结构,先进行spatial维度WH的卷积,之后是在C通道维度上进行操作输出,所以改成C通道输出,发现还是对不上,因为上面的数据时4字节对齐的,所以需要乘上4才能得到正确的特征向量输出。
(2)量化三步骤:1.模拟定点的浮点量化,ste操作只有前向,ste不进行反向传播,浮点数乘以128,即移位,四舍五入到整数,在int8的数据范围之内,clip,最后再乘以128,这样就可以精确地使用浮点来模拟定点。此时的BN虽然说不对他进行量化操作,但是在第一步的时候还是有在conv层计算,只不过又要把BN还原回来而已;2.吸收BN,BN和weight,bias之间没有线性的关系,如果我们把BN作为浮点的时候(第一步)的参数估计出来,然后把BN吸收到最近邻的conv层中,我们进行一个偏移值估计,再进行finetune,得到的模型还是有ste这个op,还是模拟定点的浮点;3.最后我们需要把ste全部给并到weight当中去,实现完全的定点,再改变layout操作,就能送去编译器编译成能部署上板的模型。
2.知道哪些常见的排序,快排的时间空间复杂度,什么时候会有最坏的时间复杂度。
nlogn, 最坏时间复杂度O(n^2),当需要排序的数组已经是一个有序数组的时候,eg:1,3,5,6,8。我们选择最后一个作为pivot的时候,那么每次分区得到的两个区间都是不均等的,我们需要大约n次分区的操作,每次分区平均要扫描n/2个元素,就变成了O(n ^2)
4.用c/c++实现python中的list列表
5.二叉树的中序遍历
二面:1h15min
0.自我介绍
1.无人机项目
2.二叉树后序遍历
3.LRU缓存,查找,插入,删除,链表和哈希表实现
4.量化训练项目tricks原理,为什么要用?warmup,mixup原理
5.softmax原理,为什么是类别的后验概率(贝叶斯准则,最大似然估计)推导公式
6.数据增强和正则化的关系,为什么数据增强可以达到正则化的效果。
总结:刷题刷题刷题,基础基础基础!算法题和数学推导都没做好,一定得花功夫去补算法题
这篇关于Horizon提前批面试凉经的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!