0%

面试记录

Aibee(2020.03.09)

一面(电话面):

项目介绍

二面(视频面):

1)介绍论文
论文研究的方向是基于骨骼关键点的人体行为识别,现在的算法采用分层图卷积网络聚集关节更宽范围内邻域的特征,这会减弱局部邻域的信息,针对这种现象首先提出一个残差图卷积操作增强节点的局部领域信息,接着利用密集连接重用不同模块间的上下文时空特征来增加节点的全局和局部特征。在重用特征的过程中会带来冗余信息的干扰,利用通道注意模块计算不同通道间的特征相关性,增强有用特征,抑制无关信息。同时在行为中,并不是所有的帧和关节都对行为识别有用,冗余的帧信息会带来识别的干扰,因此进一步采用注意模块来增强关键帧和关键节点的特征。
2)什么是图卷积网络
卷积是通过计算中心像素点以及相邻像素点的加权和来构成feature map实现空间特征提取。
3)反向传播了解吗,代入L2正则化
4)算法题
找到数组中第k大的数
两个有序数组找中位数

快手(2020.03.11)

一面

1) 最熟悉的项目,重点介绍算法模块
为什么采用openpose?动作分类的评价指标是什么?动作的相似度是怎么判断的?
2) 论文介绍
残差图操作是什么?注意模块怎么实现?邻接矩阵是什么?
3) 基础题
防止网络过拟合的方法有哪些?
BN层原理?具体是怎么实现的?优缺点?
网络压缩中Depthwise卷积核正常卷积差别,减少多少计算量。
SVD和PCA原理
4) 算法题
最大连续子序列和

二面

1) 比较深入和有创新的项目?
动态时间规划在项目中怎么实现
关键点的相似度是怎么计算的?
2) 论文
3) 基础题
分类网络能用mse吗?为什么
4) 算法题
股票问题,只能买卖一次

头条

一面

算法题
1)找到字符串的最长无重复字符子串
2)整数对查找
请设计一个高效算法,找出数组中两数之和为指定值的所有整数对。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class FindPair:
def countPairs(self, A, n, tsum):
# write code here
from collections import defaultdict
if not A or len(A)==1:
return 0
dic = defaultdict(int)
ans = 0
setA = list(set(A))
setA.sort()
left, right = 0, len(setA)-1
for num in A:
dic[num] += 1
while left<right:
if setA[left]+setA[right]<tsum:
left += 1
elif setA[left]+setA[right]>tsum:
right -= 1
else:
ans += dic[setA[left]]*dic[setA[right]]
left += 1
right -= 1
if setA[left]*2==tsum:
ans += dic[setA[left]]*(dic[setA[left]]-1)//2
return ans

基础题
知道set和字典的低层实现吗?
在Python中,字典是通过散列表(哈希表)实现的。字典也叫哈希数组或关联数组,所以其本质是数组(如下图),每个 bucket 有两部分:一个是键对象的引用,一个是值对象的引用。
了解哈希表吗?哈希冲突是怎么解决的
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
解决哈希冲突的方法一般有:开放定址法、链地址法(拉链法)、再哈希法、建立公共溢出区等方法。
开放定址法:从发生冲突的那个单元起,按照一定的次序,从哈希表中找到一个空闲的单元。然后把发生冲突的元素存入到该单元的一种方法。开放定址法需要的表长度要大于等于所需要存放的元素。
在开放定址法中解决冲突的方法有:线行探查法、平方探查法、双散列函数探查法。
链接地址法的思路是将哈希值相同的元素构成一个同义词的单链表,并将单链表的头指针存放在哈希表的第i个单元中,查找、插入和删除主要在同义词链表中进行。链表法适用于经常进行插入和删除的情况。
再哈希法,同时构造多个不同的哈希函数:Hi = RHi(key) i= 1,2,3 … k;当H1 = RH1(key) 发生冲突时,再用H2 = RH2(key) 进行计算,直到冲突不再产生,这种方法不易产生聚集,但是增加了计算时间。
建立公共溢出区:将哈希表分为公共表和溢出表,当溢出发生时,将所有溢出数据统一放到溢出区。
项目介绍
你能介绍一下注意机制吗?
你能介绍一下ResNet机制吗?
梯度消失是什么原因?如何解决梯度消失?
激活函数relu为什么可以解决梯度消失?

阿里

一面 20200408

项目介绍
算法的评估模块是如何实现的?
每一帧的相似度是如何计算的?采用的欧式距离是计算哪些对象的空间距离?
不同的姿态和不同的角度是如何处理的?
不同远近,不同角度、大人和小孩等进行测试的时候出现什么具体的问题,如何解决的,问题的指标是哪些?
用户的动作时间不匹配是如何解决的?
通信机制的设计和解决方案的目的是什么,为什么这么设计?
消息中间件还有哪些?其功能是什么?
服务器的系统架构是怎样的?分布式系统要如何部署?多服务器多人同时在线该如何解决?
hashset的原理及内部实现的细节?
HashSet实现自set接口,set集合中元素无序且不能重复。
因为HashSet底层是基于HashMap实现的,当你new一个HashSet时候,实际上是new了一个map,执行add方法时,实际上调用map的put方法,value始终是PRESENT,所以根据HashMap的一个特性: 将一个key-value对放入HashMap中时,首先根据key的hashCode()返回值决定该Entry的存储位置,如果两个key的hash值相同,那么它们的存储位置相同。如果这个两个key的equalus比较返回true。那么新添加的Entry的value会覆盖原来的Entry的value,key不会覆盖。因此,如果向HashSet中添加一个已经存在的元素,新添加的集合元素不会覆盖原来已有的集合元素。

二面

一个1亿行的文本文件(文件内容为人民日报真实语料),每行有大约100个汉字。计算如下:
1)计算每个汉字出现次数
2)计算出现频率最高的连续10个字符(包含标点符号)
限制:
1)使用多线程实现
2)系统资源:4core,8g内存
3)指标1需要完整代码,指标2计算为开放性问题,伪代码描述思路即可。
4)使用Java实现

腾讯优图

一面

算法题:快排、最长公共子序列、c++创建和删除二维数组
常见的激活函数?
ResNet和DenseNet的区别?
过拟合解决的方法?
Dropout的原理?
R-CNN的实现原理?
Softmax反向传播的推导?
项目介绍。

微软

一面

项目介绍
你知道哪些距离计算方法?为什么采用欧式距离来评估?
比赛的评价指标是什么?是比赛的mAP?mAP是如何计算的?其原理是什么?
什么是NMS?什么是softer NMS?
算法题:
第K大的数?时间复杂度是多少?
两个很大的文件,每一行是url地址,找到一个url地址既在A文件又在B文件中?
在操作系统中,进程和线程的区别?
在python语言中,什么时候会用多进程,什么时候会用多线程?