【一面】(微信语音,1h50min)
1.自我介绍。(这是你唯一能把握主动权的3分钟!!!)
上来先自我介绍,我主要从数学建模比赛(本科参加了很多次,岗位对这个比赛是nice to have)、项目、对强化学习的了解(这个部门主要是用强化学习)3个方面进行介绍,我并没有按照简历照本宣科,而是分别拿出3个方面最值得介绍的经历,以讲故事的方式来叙述,并且说完一个经历就会总结一句:我在这个经历中收获最多的是xx(eg:快速学习能力、团队合作意识等)。因为自我介绍是为了让面试官了解你身上具备的优点和潜质,至于你已有的能力,你的简历上已经写得清清楚楚,就不需要浪费这么宝贵的3分钟。
2.比赛、项目提问
面试官会根据自我介绍的内容进行提问,所以自我介绍显得尤为重要,你可以引导面试官接下来会对你提问什么。我在自我介绍时说到比赛中快速自学了元胞自动机模型并得到了应用,两面的面试官关于比赛的问题都问且只问了元胞自动机的相关知识,包括简介、原理、应用场景、有没有对其进行改进。
至于项目,只要把涉及到的整体流程、每个算法的原理&使用的原因、难点搞清楚就差不多了,并没有问到代码具体实现。
3.机器学习
①面试官:你参加那么多数学建模比赛,对机器学习方法应该挺了解,请你说下哪些模型可以用来做回归?
简要:我把回归分析里的方法都讲了,并提到了支持向量回归。
②面试官:请讲下支持向量回归原理。
简要:我说不会,但知道支持向量机
③面试官:支持向量机也差不多类似,那你说下吧。
简要:我从SVM基本问题定义到对偶问题的推导过程,以及核函数、非线性问题、SMO、KKT条件都说了。
4.深度学习
①面试官:讲下BN。
简要:这个是常考的,一定要会。我从背景、原理、方法、训练和测试的差异、意义,各方面都详细说了。
②面试官:你刚说到BN要重构,请问为什么?
简要:我之前看过博客,说是如果不做的话会破坏浅层的特征,结果面试官说不重构也可以学习到特征呀。然后又继续反问我为什么要重构。我想不出来。最后他告诉我是因为归一化后会降低表征能力。
③面试官:你做过深度学习,那你说说卷积吧。
简要:我把卷积的整个过程详细讲了一遍。
④面试官:pooling有什么意义
简要:我从降维减少参数量和减少卷积后的冗余两方面回答。结果面试官补充说pooling可以增大深层卷积的感受野。
⑤面试官:刚才说到感受野,那谈谈你对感受野的理解吧。
简要:这个我之前没准备,就真的是凭自己的理解,结果也答的不好。面试官告诉我是一个卷积核可以映射原始输入图的区域大小。
⑥面试官:讲下激活函数的意义
简要:讲了常用的几个的激活函数及意义
⑦面试官:为什么要用relu而不用sigmoid?
简要:从饱和区间、敏感区间和梯度三个方面来回答。
⑧面试官:有了解过GAN吗?
简要:没有。(当时这个回答太快了,其实我是略有所闻,至少把自己知道的讲几句,直接回答没有,其实不太好)
5.强化学习
①面试官:讲下q-learning。
简要:一步一步介绍了模型。
②面试官:有了解过DDPG吗?讲一下原理。
简要:我说是属于Policy Gradient系列的,就从PG->Actor Critic->DDPG一路详细地讲了模型的流程和特点。
6.语言
①面试官:讲下python的staticmethod和staticclass
简要:没听过,但面试官谈到了装饰器,我就介绍了装饰器相关的。
②面试官:讲下python的匿名函数和意义
简要:讲了lambda的形式和意义
③面试官:对浅拷贝和深拷贝有了解吗,讲一下。
简要:很清晰地介绍了它们的特点和区别。
7.框架
①面试官:讲下tensorflow搭建网络和训练的流程。
简要:从定义占位符开始一步一步说下来,可能说的很顺畅,说到一半面试官就说不用了,下一个问题。
②面试官:有没有学过pytorch
简要:我没学过,但我说知道现在很流行,如果以后工作需要用这个框架,那我可以快速学习,因为框架之间应该都差不多,况且pytorch还更简洁简便。
8.算法题
面试官发了一个腾讯文档,可以实时看到我敲的代码。然后问我有没有刷过算法题,我说这学期刚开始刷,刷了一些。他就说那我们先来一题简单的。就现场从leetcode搜了一题easy的。然后给3分钟思考,思考完跟他讲思路,讲完就让我在文档写代码,按leetcode的那种形式,给10分钟。看我很快想出来并很快写完,他就说那再来一题。结果出了一题medium。恰好我做过原题,前两天还复习了,所以秒解,用哈希集合+快慢指针,并且面试官问了我时间复杂度,因为快慢指针各遍历一次,所以是O(n)。以下是题目:
①原地删除排序后的数组中重复的数字。(要求空间复杂度为O(1))
②给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
9.开放性问题(都跟他们的温室挑战赛有关)
开放性问题是本来已经结束了,都已经在提问反转环节了,说到一半他突然说问我一个开放性问题。
①面试官:如何设计一个算法来实现自动控制温室种植,假设数据都已经收集好。
简要:我说了用强化学习,并给了几种现有算法。
②面试官:那如果不用强化学习,你觉得可以用什么方法做。
简要:想了半天想不出。。
10.其他
①面试官:有没有学过搜索算法?
简要:这学期刚好学了相关课程,就都说了。然后实现过一些,比如启发式搜索算法:GA、SA等,都自己用代码写过,也在数学建模比赛中用过。
11.提问反转环节
①我问在腾讯我要怎么能得到系统性的成长?
②我问在腾讯的工作强度是怎么样的?
一面结束,面试官气场很温和,他一开口说话我就不紧张了,就跟聊天一样,还会在我回答不出的时候告诉我正确答案,人很好。在最后的时候,面试官说:今天的面试,我觉得你基础挺好的,我挺满意的,研一就这样很优秀【我就当补药吃了吧哈哈,给自己添点信心】。面试完自我感觉还是挺不错的,毕竟第一次,并且也只准备了一个多月,很满意自己了。
面试感受:★★★★★
面试难度:★★★
【二面】(电话,1h40min)
1.自我介绍
和一面一样,不过面试官遇到感兴趣的内容会直接打断来问你。
2.比赛、项目提问
这次项目问了很多算法实现的步骤,以及项目中遇到的难点,但都能回答的很顺畅。
3.机器学习
①面试官:为什么会发生过拟合?
简要:我讲了先前总结过的几种情况。
②面试官:那如何降低过拟合?
简要:讲了几种降低过拟合的方法,这个面试官一直问:还有吗?强行憋出了6个。(降低模型复杂度、增大数据集、dropout、正则化、集成模型、BN)
③面试官:讲下正则化
简要:讲了L0\L1\L2,L1和L2的具体形式和反向传播的时梯度的推导公式、以及它们如何降低过拟合都详细说了。
④面试官:泛化误差如何产生,有哪些方法可以减小?
简要:讲了泛化误差的展开式,分别说了从bias、var和噪声三个方面减小,并说了相关的方式,以及如何平衡bias和var。
⑤面试官:讲下dropout原理。
简要:从背景、原理、实现详细介绍。
⑥面试官:dropout训练和测试有什么区别吗?
简要:从期望的角度,说明了训练时要除以概率p,或者测试时乘概率p。
4.强化学习
①面试官:on-policy 和off-polic的区别
简要:先从蒙特卡洛强化学习的同策略和异策略模型来说明;再根据q-learning和sarsa的区别来说明。
②面试官:贪心策略和确定性策略区别
简要:从选择action的概率的角度,介绍了区别,并介绍了两种贪心策略:epsilon和softmax
③面试官:有一些真实例子,还有一个模拟器,如何训练一个强化学习模型?(这个就是他们目前面临的问题)
简要:讲了可以先用直接模仿学习和逆强化学习,然后再用一个强化学习的模型。
④面试官:直接模仿学习和逆强化学习具体说下
简要:就按《机器学习》(西瓜书)中学到的详细说了。但逆强化学习没说太清楚。
⑤面试官:强化学习的baseline
简要:我懵了,因为我项目是用深度学习做多目标跟踪的,对于强化学习只学了一些基本框架和基本的理论知识,但是还没时间去看过强化学习的论文,所以不懂啊。然后面试官最后告诉我说就是采用一个随机选择action的策略。
5.算法题
①求二维矩阵的人脸个数
简要:和leetcode的求岛屿数量那题非常像,算是medium的,刚好复习过,就秒解了,大概40行左右的代码,很顺地解下来。面试官看完说没问题。
6.开放性问题
①面试官:如何对一段python代码做加速,可以自己假设代码的应用场景
简要:这个问题又榨干我了,我一开始说了5种方式(优化算法从而减少循环次数、调整if elif语句的顺序、核心模块用cython、多线程多进程、生成器减少内存占用量)
②面试官:追问了多线程和多进程是什么?
简要:详细说了区别,以及python中的实现,并说python没办法利用多线程,因为有GIL,面试官说他没听过,问我是不是真的,然后让我讲一下GIL,我也详细讲了GIL的流程。
③面试官:还有什么办法可以加速python代码吗?提示说可以假设是一个训练神经网络的场景。
简要:我补充说可以用GPU、batchsize。然后面试官继续追问还有没有,最后他说了cpu加载数据和gpu训练数据的差异,如果只用cpu加载,那发挥不出gpu的优势,可以用异步来加速,即先加载一部分数据到缓存。【我有一种醍醐灌顶的感觉】
④面试官:GPU如何加速?
简要:不懂。。
7.提问反转环节
①我问他们部门的工作机制是怎么样的?
②我问通过今天的面试,觉得我哪些方面需要加强?
面试官说觉得我基础挺不错的,但是缺乏经验,如果过去实习的话,需要适应一段时间他们的节奏。(当时我感觉凉了,没想到过了两天给我发了offer)
面试感受:★★★
面试难度:★★★★★
我是字节跳动算法工程师,在求职过程中处处碰壁,通过大量刷面经成功拿到大厂offer!需要我整理的大厂面试经验可以关注公众号【面经熊】回复面经可以获取,无偿分享,有一千多篇【一面】(微信语音,1h50min)
1.自我介绍。(这是你唯一能把握主动权的3分钟!!!)
上来先自我介绍,我主要从数学建模比赛(本科参加了很多次,岗位对这个比赛是nice to have)、项目、对强化学习的了解(这个部门主要是用强化学习)3个方面进行介绍,我并没有按照简历照本宣科,而是分别拿出3个方面最值得介绍的经历,以讲故事的方式来叙述,并且说完一个经历就会总结一句:我在这个经历中收获最多的是xx(eg:快速学习能力、团队合作意识等)。因为自我介绍是为了让面试官了解你身上具备的优点和潜质,至于你已有的能力,你的简历上已经写得清清楚楚,就不需要浪费这么宝贵的3分钟。
2.比赛、项目提问
面试官会根据自我介绍的内容进行提问,所以自我介绍显得尤为重要,你可以引导面试官接下来会对你提问什么。我在自我介绍时说到比赛中快速自学了元胞自动机模型并得到了应用,两面的面试官关于比赛的问题都问且只问了元胞自动机的相关知识,包括简介、原理、应用场景、有没有对其进行改进。
至于项目,只要把涉及到的整体流程、每个算法的原理&使用的原因、难点搞清楚就差不多了,并没有问到代码具体实现。
3.机器学习
①面试官:你参加那么多数学建模比赛,对机器学习方法应该挺了解,请你说下哪些模型可以用来做回归?
简要:我把回归分析里的方法都讲了,并提到了支持向量回归。
②面试官:请讲下支持向量回归原理。
简要:我说不会,但知道支持向量机
③面试官:支持向量机也差不多类似,那你说下吧。
简要:我从SVM基本问题定义到对偶问题的推导过程,以及核函数、非线性问题、SMO、KKT条件都说了。
4.深度学习
①面试官:讲下BN。
简要:这个是常考的,一定要会。我从背景、原理、方法、训练和测试的差异、意义,各方面都详细说了。
②面试官:你刚说到BN要重构,请问为什么?
简要:我之前看过博客,说是如果不做的话会破坏浅层的特征,结果面试官说不重构也可以学习到特征呀。然后又继续反问我为什么要重构。我想不出来。最后他告诉我是因为归一化后会降低表征能力。
③面试官:你做过深度学习,那你说说卷积吧。
简要:我把卷积的整个过程详细讲了一遍。
④面试官:pooling有什么意义
简要:我从降维减少参数量和减少卷积后的冗余两方面回答。结果面试官补充说pooling可以增大深层卷积的感受野。
⑤面试官:刚才说到感受野,那谈谈你对感受野的理解吧。
简要:这个我之前没准备,就真的是凭自己的理解,结果也答的不好。面试官告诉我是一个卷积核可以映射原始输入图的区域大小。
⑥面试官:讲下激活函数的意义
简要:讲了常用的几个的激活函数及意义
⑦面试官:为什么要用relu而不用sigmoid?
简要:从饱和区间、敏感区间和梯度三个方面来回答。
⑧面试官:有了解过GAN吗?
简要:没有。(当时这个回答太快了,其实我是略有所闻,至少把自己知道的讲几句,直接回答没有,其实不太好)
5.强化学习
①面试官:讲下q-learning。
简要:一步一步介绍了模型。
②面试官:有了解过DDPG吗?讲一下原理。
简要:我说是属于Policy Gradient系列的,就从PG->Actor Critic->DDPG一路详细地讲了模型的流程和特点。
6.语言
①面试官:讲下python的staticmethod和staticclass
简要:没听过,但面试官谈到了装饰器,我就介绍了装饰器相关的。
②面试官:讲下python的匿名函数和意义
简要:讲了lambda的形式和意义
③面试官:对浅拷贝和深拷贝有了解吗,讲一下。
简要:很清晰地介绍了它们的特点和区别。
7.框架
①面试官:讲下tensorflow搭建网络和训练的流程。
简要:从定义占位符开始一步一步说下来,可能说的很顺畅,说到一半面试官就说不用了,下一个问题。
②面试官:有没有学过pytorch
简要:我没学过,但我说知道现在很流行,如果以后工作需要用这个框架,那我可以快速学习,因为框架之间应该都差不多,况且pytorch还更简洁简便。
8.算法题
面试官发了一个腾讯文档,可以实时看到我敲的代码。然后问我有没有刷过算法题,我说这学期刚开始刷,刷了一些。他就说那我们先来一题简单的。就现场从leetcode搜了一题easy的。然后给3分钟思考,思考完跟他讲思路,讲完就让我在文档写代码,按leetcode的那种形式,给10分钟。看我很快想出来并很快写完,他就说那再来一题。结果出了一题medium。恰好我做过原题,前两天还复习了,所以秒解,用哈希集合+快慢指针,并且面试官问了我时间复杂度,因为快慢指针各遍历一次,所以是O(n)。以下是题目:
①原地删除排序后的数组中重复的数字。(要求空间复杂度为O(1))
②给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
9.开放性问题(都跟他们的温室挑战赛有关)
开放性问题是本来已经结束了,都已经在提问反转环节了,说到一半他突然说问我一个开放性问题。
①面试官:如何设计一个算法来实现自动控制温室种植,假设数据都已经收集好。
简要:我说了用强化学习,并给了几种现有算法。
②面试官:那如果不用强化学习,你觉得可以用什么方法做。
简要:想了半天想不出。。
10.其他
①面试官:有没有学过搜索算法?
简要:这学期刚好学了相关课程,就都说了。然后实现过一些,比如启发式搜索算法:GA、SA等,都自己用代码写过,也在数学建模比赛中用过。
11.提问反转环节
①我问在腾讯我要怎么能得到系统性的成长?
②我问在腾讯的工作强度是怎么样的?
一面结束,面试官气场很温和,他一开口说话我就不紧张了,就跟聊天一样,还会在我回答不出的时候告诉我正确答案,人很好。在最后的时候,面试官说:今天的面试,我觉得你基础挺好的,我挺满意的,研一就这样很优秀【我就当补药吃了吧哈哈,给自己添点信心】。面试完自我感觉还是挺不错的,毕竟第一次,并且也只准备了一个多月,很满意自己了。
面试感受:★★★★★
面试难度:★★★
【二面】(电话,1h40min)
1.自我介绍
和一面一样,不过面试官遇到感兴趣的内容会直接打断来问你。
2.比赛、项目提问
这次项目问了很多算法实现的步骤,以及项目中遇到的难点,但都能回答的很顺畅。
3.机器学习
①面试官:为什么会发生过拟合?
简要:我讲了先前总结过的几种情况。
②面试官:那如何降低过拟合?
简要:讲了几种降低过拟合的方法,这个面试官一直问:还有吗?强行憋出了6个。(降低模型复杂度、增大数据集、dropout、正则化、集成模型、BN)
③面试官:讲下正则化
简要:讲了L0\L1\L2,L1和L2的具体形式和反向传播的时梯度的推导公式、以及它们如何降低过拟合都详细说了。
④面试官:泛化误差如何产生,有哪些方法可以减小?
简要:讲了泛化误差的展开式,分别说了从bias、var和噪声三个方面减小,并说了相关的方式,以及如何平衡bias和var。
⑤面试官:讲下dropout原理。
简要:从背景、原理、实现详细介绍。
⑥面试官:dropout训练和测试有什么区别吗?
简要:从期望的角度,说明了训练时要除以概率p,或者测试时乘概率p。
4.强化学习
①面试官:on-policy 和off-polic的区别
简要:先从蒙特卡洛强化学习的同策略和异策略模型来说明;再根据q-learning和sarsa的区别来说明。
②面试官:贪心策略和确定性策略区别
简要:从选择action的概率的角度,介绍了区别,并介绍了两种贪心策略:epsilon和softmax
③面试官:有一些真实例子,还有一个模拟器,如何训练一个强化学习模型?(这个就是他们目前面临的问题)
简要:讲了可以先用直接模仿学习和逆强化学习,然后再用一个强化学习的模型。
④面试官:直接模仿学习和逆强化学习具体说下
简要:就按《机器学习》(西瓜书)中学到的详细说了。但逆强化学习没说太清楚。
⑤面试官:强化学习的baseline
简要:我懵了,因为我项目是用深度学习做多目标跟踪的,对于强化学习只学了一些基本框架和基本的理论知识,但是还没时间去看过强化学习的论文,所以不懂啊。然后面试官最后告诉我说就是采用一个随机选择action的策略。
5.算法题
①求二维矩阵的人脸个数
简要:和leetcode的求岛屿数量那题非常像,算是medium的,刚好复习过,就秒解了,大概40行左右的代码,很顺地解下来。面试官看完说没问题。
6.开放性问题
①面试官:如何对一段python代码做加速,可以自己假设代码的应用场景
简要:这个问题又榨干我了,我一开始说了5种方式(优化算法从而减少循环次数、调整if elif语句的顺序、核心模块用cython、多线程多进程、生成器减少内存占用量)
②面试官:追问了多线程和多进程是什么?
简要:详细说了区别,以及python中的实现,并说python没办法利用多线程,因为有GIL,面试官说他没听过,问我是不是真的,然后让我讲一下GIL,我也详细讲了GIL的流程。
③面试官:还有什么办法可以加速python代码吗?提示说可以假设是一个训练神经网络的场景。
简要:我补充说可以用GPU、batchsize。然后面试官继续追问还有没有,最后他说了cpu加载数据和gpu训练数据的差异,如果只用cpu加载,那发挥不出gpu的优势,可以用异步来加速,即先加载一部分数据到缓存。【我有一种醍醐灌顶的感觉】
④面试官:GPU如何加速?
简要:不懂。。
7.提问反转环节
①我问他们部门的工作机制是怎么样的?
②我问通过今天的面试,觉得我哪些方面需要加强?
面试官说觉得我基础挺不错的,但是缺乏经验,如果过去实习的话,需要适应一段时间他们的节奏。(当时我感觉凉了,没想到过了两天给我发了offer)
面试感受:★★★
面试难度:★★★★★
我是字节跳动算法工程师,在求职过程中处处碰壁,最后通过大量刷面经拿到大厂offer。我在求职过程中整理了很多互联网大厂面试经验,可以无偿分享,需要的同学关注我创立的公众号【面经熊】回复面经就可以获取,一千多篇大厂面试经验足够应对面试,希望大家都能找到合适的工作~
更多互联网大厂技术岗面试经验戳链接https://mp.weixin.qq.com/s/cHWtErbwnrmtB3Gg3Isv2Q