字节跳动面经(已收到offer)

情况说明

本人系非985非211渣硕,目前研一,学分修够,想找一个日常实习。在牛客网上投了很多简历,也面试很多的公司,最终选择了字节跳动。

面试情况

阿里巴巴

阿里巴巴面试的是达摩院,做命名实体识别,面试方式是电话面试。这个工作对我来说特别吸引人,因为我之前就是做命名实体识别的。但是,达摩院那么要求我至少实习一年,所以只能遗憾了。阿里巴巴感觉很重视过往的实习经验,会针对你做的项目深度挖掘:为什么这样做,为什么不那样做。所以如果你有实习经验,一定要把你自己的实习内容搞清楚,这样面试的时候才会游刃有余。编程问题则问了一道LeetCode原题,难度高等的:求两个排序数组的中位数。这个题很经典,网上有很多解答,可以自行去找(这个题目还可以扩展为“求两个排序数组的第K大的数”)。

百度

百度面试的则是知识图谱部门,直接去公司面试,一面结束之后过了直接二面,二面接三面(当时直接杀到三面,大概面了四个多小时),另外百度员工挺好的,二面结束后还请我吃了一顿饭,然后带我去找总监做三面。百度的面试也、侧重实习经验、基本算法和经典机器学习算法。对于实习经验,二面面试官(一个漂亮的小姐姐)一直问我你写的项目的模块有哪些,请大致复现一下。当时没有理解她的意思,现在想想大概是让我把命名实体识别的流程写一下吧,然后还问了我一些BERT的相关内容,不了解BERT的可以看这里https://blog.csdn.net/cpluss/article/details/88418176。对于经典的机器学习,则问了一些传统的逻辑回归算法啊,常用的损失函数啊(交叉熵损失及原理,hinge loss等),正则化算法以及原理,另外还有优化算法,包括momentum,adam这些公式。面试内容挺细致的,涉及的方面很广。对于基本算法,一面问了一道,一个是动态规划。动态规划的直接做法就是递归,但是面试官说用递归会不会有什么问题。我回答可能递归栈太深,浪费空间。最后在他的提示下,用动态数组做出。三面则问了一道大数据的处理:现在有十亿个数字,找出其中重复出现的数字。这个题目还是蛮难,当时想了排序,遍历等各种想法,但是这个数量级的数据肯定特别耗时。面试官提醒我用bitmap的方法:十亿个数全都不重复的话,需要十亿个bit,总共是大约0.125GB的内存就够了。百度的面试情况大概如此,除了三面的bitmap没有做出来,其他的感觉都挺好。面试完之后,总监给了口头offer,可把我激动坏了。可是天有不测风云,谁知道年后出了新冠肺炎,导致我无法入职,然后无缘百度。。。

联想

联想面试的是联想研究院,做问答系统,偏研究方向,直接去联想公司面试。联想的面试还是很简单的,除了你做过什么,还会问一些开拓性思维的问题:比如你如何设计问答系统?怎么改进?基本算法则问了一道:如何判断一棵二叉树是否为对称二叉树,leetcode原题。面试完第二天直接发了offer,但是同样又是特么的新冠肺炎。。。

腾讯

腾讯面试的是腾讯云部门,方式是电话面试。同样是实习经历,讲的非常非常详细,然后出了一道题,求二叉树指定数值的路径和,同样是leetcode原题。但是要求不能用递归,则只能用遍历算法的非递归实现了。腾讯的面试感觉难度中等吧,但是不知道为啥就给我挂了(我问了面试官,面试官说这边暂时不推进了,说话好委婉啊)。。。

字节跳动

字节跳动面试的是后端开发(其实我投错部门了)。说起来,字节跳动总共面了三次,前两次都是一面就挂了,被面试官按在地上摩擦羞辱。然后下定决心刷leetcode,找个机会羞辱面试官,然后通过了不去云云(当然都是我意淫的哈哈哈,字节跳动面试官还是很好的,都是我自己太菜,面试过了肯定要去啊,真香)。字节跳动是三面,都是视频面试,现场撸代码。对于字节跳动,我只能说基础算法高于一切,即使你不会相关领域的知识(比如我,本来专业是自然语言处理,结果投到了后端开发)。一面:一面面试官首先让我自我介绍,然后轻声低估了一句,这专业不对口啊。。。然后让我介绍了一下我的项目,然后直接撸代码了。代码和联想的一样,判断一个二叉树是否是对称的,很简单。然后问我了一些操作系统和网络方面的知识,这方面的东西都是大一大二学的,早忘了,我就直接说不会。不过面试官还是给我过了,说我算法还行,就是这些基础知识需要补一补,来这边不但要会算法,还要工程方面的东西。之后两天,就进行了二面,二面看了一面的评价后说,哦,不懂操作系统啊,那我也不问了,就问两个简单的算法吧。。。二面面试官还是给压力的,每次出问题之前都说:“我问你个简单的问题吧”,这个“简单”让我压力倍增。两个问题:一个是带参数的修饰器写法;另一个是对于一个链表,每K个倒序,例如对于12345678,每三个倒序的结果则是32165478。同样是leetcode原题,很简单。然后三面,三面上来就说,不会工程啊。。。然后直接出了一个算法题,对于一个n*n的矩阵,每个点代表楼的高度,现在已知,从左向右看和从下向上看的高度,求此楼层的最大体积。例如对于3*3的矩阵,高度为

5,6,7

6,8,1

3,5,4

则从左向右看的结果是,7,8,5;从下向上看的结果是6,8,7。这道题我目前还没在leetcode找到,当时想了想,要想满足题意,每个点都应该不能大于交叉的最小值。例如,假设上述矩阵为A,对于A[0][0],则不能查过7和6的最小值,就是最大为6。对于A[1][0],则不能超过8和6的最小值,则最大为6,同理可以求出其他点的最大值。这样做的时间复杂度是o(n^2)。面试官说,思路是对的,但是复杂度太高了,想想有没有办法把复杂度降下来。方法则是:对于观察到的数值进行排序,则到的5,7,8和6,7,8。找到最小的,是5,则5所在的那一行都应该不超过5,最大是5,然后把这一行去掉,重复上述步骤,这样时间复杂度为O(n+n)。之后面试官还问了我一个问题,此楼层的最小体积是多少,由于时间问题,让我下去思考。最后HR面,HR面就很简单了,你实习的目的是什么?想学到什么?以往实习遇到了什么困难等等。

总结

面试了这么多公司,有两点需要注意:1、过往的项目一定要彻彻底底搞懂,否则会被怀疑没做过 2、多刷leetcode,多刷leetcode,多刷leetcode。现在正在办理入职手续,各位加油!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读