背景:
社招(我估摸着校招聘一样会问,主要方向:自动驾驶);祝愿每一个求职者都可以顺利;谢谢大家的支持。
我刷题的思路就是repeat repeat repeat,背, 背, 背,背着背着就懂了;刷的dp,二叉树目前一题没考,好苦。
地平线1面:
- 自我介绍
- mobilenet整合时候的处理(1*1进行通道变化)
- 手撸depthwise和普通卷积的计算量(吴恩达Mobilenet视频里有讲解, 1/9 + 1/c_out)(https://www.bilibili.com/video/BV1Rf4y1b7NP?p=21)
- 处理项目时遇到哪些问题,如何处理的(从backbone, neck, taskhead, loss(iou loss, giou, eiou, focal loss等), augmentation,lr, optimizer等进行回答)
- 如何优化模型,如题3(从backbone, neck, taskhead, loss, augmentation,lr, optimizer)
- yolo的解码方式
- mAP代表什么(mean average precision)
- 目前看过最新的论文有哪些(注意力机制等)
- 代码:手撸IOU
地平线3面:
代码:
- 不等概率制作等概率生成器(麻了)
import numpy as np
def random1(p):
x1 = np.random.choice([0, 1], p=[p, 1-p])
print(x1)
x2 = np.random.choice([0, 1], p=[p, 1-p])
if x1 == 0 and x2 == 1:
return 1
if x1 == 1 and x2 == 0:
return 0
else:
return random1(p)
res = []
for i in range(100):
res.append(random1(0.1))
print(res.count(0))
-附带rand7()实现rand10():
def rand10():
while True:
row = rand7()
col = rand7()
res = (row -1)*7 + col
if res <= 40:
return 1+(res-1)%10
字节跳动以前考过
赢撤1面
- 自我介绍
- 遇到问题,如何优化
- 小目标检测的解决方案
https://zhuanlan.zhihu.com/p/426047353 - 代码:反转字符串(给出左边位置, 右边位置)leetcode 922
赢撤2面:
c++
- c++的特点
- c++的11后有什么更改
- 面向对象的特点(封装,继承,多态)
- 什么是封装, 什么是继承,什么是多态
- 指针和引用什么区别
- 智能指针是什么(share_ptr, unique_ptr, weak_ptr
- share_ptr的计数方式如何实现的
- container(容器)有什么了解吗?排序机制
- 左值, 右值(a = b+ c) a是左值(可引用), (b+c)是右值(不可引用)细节自己再搜搜
- 代码:
- 合并区间(leetcode 56)
- 手撸nms(必备考试题目)
商汤一面
- 手撸Nms(其他的忘了)
- 目前目标检测的趋势
- 目前目标检测相对成熟,它的发展趋势有哪些,哪些研究方向:transformer, 小目标,无监督,半监督,fewshot,zeroshot等方向;
- 小目标检测的解决方案: 这篇总结的不错
https://zhuanlan.zhihu.com/p/426047353
MMLAB 1面:
- focal loss的公式
- 小目标如何解决
- 目标检测的发展历史
- 手撸Nms
- 手撸mobilenet inverted residual block
MMLAB 2面:
代码:
16. 手撸Nms
17. 实现resnet residualblock
18. 开放题,两批数据x1,x2输入,如何能预测x1,x2是否匹配,设计forward 和 loss 函数;
MMLAB 3面:
代码:
16. 介绍你自己
17. centernet延伸
18. 手撸BN(不会,…)
19. 实现moduel: 多个输入, 每个输入都进行3*3卷积,输出进行concat的
理想(一面):
- focal loss
- 项目遇到的问题
- 数据量
coding: - 2个栈实现队列
class Queue:
def __init__(self):
self.stockA=[]
self.stockB=[]
def push(self, node):
self.stockA.append(node)
def pop(self):
if self.stockB==[]:
if self.stockA==[]:
return None
else:
for i in range(len(self.stockA)):
self.stockB.append(self.stockA.pop())
return self.stockB.pop()
- 岛屿数量(非dfs)
我只会dfs, 哭唧唧
bfs(不用深度优先搜索)
当时应该自信点,这个我也会耶…诶
class Solution:
def numIslands(self, grid: [[str]]) -> int:
def bfs(grid, i, j):
queue = [[i, j]]
while queue:
[i, j] = queue.pop(0)
if 0 <= i < len(grid) and 0 <= j < len(grid[0]) and grid[i][j] == '1':
grid[i][j] = '0'
queue += [[i + 1, j], [i - 1, j], [i, j - 1], [i, j + 1]]
count = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == '0': continue
bfs(grid, i, j)
count += 1
return count
理想(二面):
项目经历
遇到的问题,如何解决
希望大家找到心仪的公司,希望大家顺利!
如果都需要答案的(留言),或者一些奇怪题目分享的,可以留言,我可以加进去;