刚2点-3点面完地平线一面,面完才发现面试的时候忘记记录一下了,这里能想多少就想多少吧。
总的情况,问我的项目问题,算法问题基本都答出来的,手撕了两道题,第一天nms没有什么问题,第二题优化没有什么思路,但是有一个致命的问题:语言类的问题没怎么准备,Python、C++的一些基础不过关,需要加强!!!
体验感很好,面试官很nice,会慢慢的引导你到正确答案去,感觉面试官很强
不知道这个能不能进二面…,最晚明天会出结果
已收到感谢信,应该是无了,作为人生中第一个工作面试吧,还是很nice的,和面试官探讨学到很多东西,继续加油吧!
全程一个小时
1、自我介绍
2、你是怎么用shufflenetv2对yolov5进行轻量化设计的,包括shufflenetv2的原理,四条轻量化网络设计的准则?
3、设计完之后的精度、计算量、FPS分别都是多少?(这个指标一定要知道,会根据这个判断这个项目是不是你做的?)
4、部署在哪里的?
5、介绍下yolo的整个系列的发展历程(v1-v3),它是从哪些方面进行改进的?anchor,grid cell,模型结构,loss等等…
6、再说下yolov5相对与yolov3又有什么改进的地方?我说了网络结构重点说了C3模块,强大的正负样本匹配策略,loss,其实还可以再说下它的边界框回归的公式改进的(这里面试官还想让我结合FCOS一起讨论一下目标检测的改进方向之类的问题的,但是我不太会FCOS,让我给绕过去了…)
7、mAP怎么计算的?这个没答好
8、mobilenet的参数量比普通卷积怎么样?为什么这个参数量这么少?怎么计算的?
9、介绍了一个比赛?我用的swim Transformer,然后基于此又展开了
10、介绍了swin transformer的改进?我介绍了一下ViT,它的缺点,然后接着将swin是怎么改进的?
11、然后面试官还问我位置编码的作用,我又把问题岔了,Transformer我学的不是很深,这里还需要再加强一下…
12、手撕代码:nms,随便什么语言,我用的numpy写的
13、手撕代码:求两个矩阵的欧式距离,我用的两层for循环写的,这里面试官希望我优化一下,没想出来
14、语言python:Python 装饰器、Python进程和线程的区别 num_works的作用,num_works为什么用进程不用线程?、ddp和dp的区别?
15、语言c++,第二个问题面试官想让我用c++写第二个手撕代码的,我C++用的不是很熟…
还有一些记不得了,印象深刻的就这些
语言这方面真没怎么准备,说实话还是很想进地平线的
明天还有一个自动驾驶的面试,赶紧准备准备语言类八股问题去
1、C++和python的基础概念、重点知识赶紧补,之前一直以为面试不太问这个的,所以没怎么准备,现在看来这个基础还是很重要的;
2、mAP、Swin Transformer相关的知识补补
用矩阵操作代替for循环
双层for循环解法
def compute_distance(A, B):
m = A.shape[0]
n = B.shape[0]
dists = np.zeros((m, n))
for i in range(m):`在这里插入代码片`
for j in range(n):
dists[i][j] = np.sqrt(np.sum(np.square(A[i] - B[j])))
return dists
一层for循环
def compute_distance(self, B):
n = B.shape[0]
m = self.A.shape[0]
dists = np.zeros((m, n))
for i in range(n):
dists[i] = np.sqrt(np.sum(np.square(self.A - B[i]), axis = 1))
return dists
不用for循环
def compute_distance(self, B):
n = B.shape[0]
m = self.A.shape[0]
dists = np.zeros((m, n))
dists = np.sqrt(-2*np.dot(X, self.X_train.T) + np.sum(np.square(self.X_train), axis = 1) + np.transpose([np.sum(np.square(X), axis = 1)]))
return dists