• 【面试篇】地平线深度学习模型算法开发一面


    前言

    刚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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    一层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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    不用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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    ActiveMQ-架构设计
    算法题:分别用c++/python/java实现回文数
    AWS SAA-C03 #208
    【Python学习笔记】Python中的heapq
    振弦传感器计算公式推导及测量原理
    java基于ssm的汽车维修工时费快速估价系统
    Linux 安装 cuda
    C#/.NET该如何自学入门?
    leetcode713. 乘积小于 K 的子数组
    计算机毕业设计项目选题推荐(免费领源码)java+mysql二手校园交易平台67613
  • 原文地址:https://blog.csdn.net/qq_38253797/article/details/126707695