字节跳动算法实习生面试
字节跳动算法实习生面试(2019年)
一、初面(11月18日,10:30AM,牛客视频面试系统)
1. 自我介绍(讲了个人信息以及超分辨率重建项目,没有讲竞赛)
2. 说一下自编码这个网络结构(因为项目介绍的时候提到了这点)
3. 超分辨率用的什么损失函数?(MSE, RMSE,感知损失等)
4. 图像分类一般用什么损失函数?(回答交叉熵)
5. 那说一下交叉熵的形式吧?可以写下来,讲一讲怎么来的?
举了逻辑回归中的交叉熵损失,然后讲了公式变换以及对数似然等;
6. 如果数据集有20%的噪声数据,会有什么影响?可以按照上面写的损失函数来想?
感谢面试官提示,刚开始挺懵的,没太懂面试官考察的点。略微思考了下,回答的时候感觉逻辑上出了问题,所以停下来向面试官要了一些时间重新思考(面试官很友善地同意了,感谢)。经过一番梳理,定性地解释了模型对于噪声的表现及反映出的问题,仅此而已,其他的实在是get不到了(菜鸡)。
7. 对图像分类网络的发展历程和进展有了解过吗?比如resnet, inception这些。
仅就个人使用和了解的网络结构向面试官说明了下,按照竞赛和项目时间分别说了ResNet,Inception(由大卷积核到小卷积核,再到不对称卷积核),
8. ResNet V1到V2的改进有了解吗?
这个真没注意区分过,基本上都是按着resnet的思想,自己写res-block模块。
9. 那ResNet的下采样过程是怎么样的?
讲了res-block的跳跃连接,以及连接前后的shape保持(通过padding保持shape不变)
10. 卷积操作的参数怎么计算?参数量呢?
这是两个问题,不过是连着问的,所以放在了一起。这一块算是常规题了,笔试遇到过多次,依着个人理解,讲解了下。不过感觉表达上可能还有些逻辑混乱。(后面提问环节就这个问题跟面试官提了下,面试官说是有规定,不能当面评价)
11. 下面是算法题。
给定N种不同颜色的球以及每种颜色的球的数量,把它们放进一个容器里面,随机抓取。要求写程序实现该功能,并且要按照每种颜色球的概率返回对应的球的编号。
比如,有A, B, C 3种颜色的球,数量分别是1,2,3。然后把它们统一放入盒子里,随机抓取(使用random随机生成(0, 1)之间的小数),要求按照它们各自的频数返回对应的颜色的球。
解答思路;
正巧研究了下k-means++的算法原理,按照这个思路,比较简单快捷地实现了下。尴尬的是,中间有其他开会的人误闯进来(幸好我是在他们前面预定的会议室),然后敲代码的过程中又忽然间断线了(第一次面字节的时候网络卡到爆,这次用自己的流量开热点还掉线,简直哭晕在厕所,幸好提前把思路提纲写在了代码编辑区域)。
import random def calc(N, CS): """ :param N: 表示小球的颜色数量 :param CS: 表示每一种颜色的小球数量 :return: 随机抓取的小球颜色编号 """ # 计算小球总数 dsum = sum(CS) # 存储每种颜色的小球的概率 ps = [0] for i in range(N): ps.append(CS[i]/dsum) # 按照概率划分区间 dct = {} tmp = 0 for i in range(N): ps[i+1] += ps[i] dct[(ps[i], ps[i+1])] = i tn = random.random() print('random int: ', tn) rst = 0 for ky in dct.keys(): if ky[0] <= tn < ky[1]: break rst += 1 print('number of colors: ', rst) return rst pass
#字节跳动##实习##算法工程师##面经#