【面经】字节三面面经

4月14日更新,呜呜呜谢谢收留……接下来好好学习计网、操统!多多实践!再整理整理我的Github……门面还是需要捯饬的!

======

希望我在之后能不用再说这句了:很后悔本科没有学计算机网络和操作系统,更没有网络实习和操统实习,缺少代码的训练和知识的锤炼,现在就被压在地上狠锤。

2020年暑期实习,投的是字节跳动教育业务后端开发。

一面和二面是连着的,一面过了才会通知二面。从一面到三面都很注重项目经历,因为我的实习经历并不match这个职位,所以就没有细讲……

因为时隔太久,很多问题我都忘了,以下记录一些我还能回忆起来的内容。

一面:

MySQL的底层数据结构(B+树),为什么不用B树、红黑树。

做了两道题,一题是判断是否是二叉搜索树(前序遍历就可以了),一题是股票买卖(一次买卖和无限次买卖,如果要做k次买卖我也不虚,但是会让人头皮发麻就是了……)

二面:

linux系统有了解吗(并不非常了解,而且我这个人经常犯蠢,知道概念,但是和名词对应不上……)

TCP和UDP的区别

HTTP状态码

(这一位面试官狠抓计网和操统,使我下决心在之后要迭代式快速学习,每次都过一遍大纲,然后对那些自己没有记下来的内容狠狠再背一遍)

做了一道题,判断是否是完全二叉树。(是的,傻瓜就是我了,记不得完全二叉树的定义,光知道长啥样了,临时问了面试官,面试官很nice地解释了)

三面:

boss面真的不太一样……这是我的感受

看你C++是熟练,那么重写和重载的区别是什么。说说模板,再回来说说重写和重载。(是的,我把重写和重载说反了,面试官试图挽救我,让我说说模板,然而我还是说反了……override和overload的区别,从名字上看也很明显。面完就感觉有点凉

虚函数的作用是什么。纯虚函数。

内核态和用户态。为什么要有这样的区分。

中断是什么。

TCP的连接过程,为什么不能是二次握手。

死锁的四个必要条件,如何预防处理死锁(我说了预防、控制、检测、处理,但其实我感觉面试官应该想让我说的是银行家算法……)。

做了一道题:在一维数组里找两个数,加和为特定值,问有几个这样的数对。一开始是先sort,再双指针。改进是空间换时间,用个map/unorder_map。然后遍历,查看加和为特定值的另一个值是否在map中。如果有,就加上这个乘积,并且把这两个map值置0,否则就过。不置0也可以,最后把加和除以2就可以了,但是最好不要,谁知道会不会溢出……还有一点比较重要,在两个做法里都要注意的是,当这个值刚好为特定值的一半的时候,需要用组合数,而不是直接相乘。毕竟自己和自己不能组成一对。

最近在学什么,看什么书(我真的是嘴笨,其实面试之前是有想过这个问题的,但是面试的时候就嘴瓢了,乱说一通)。能准确地表达自己的意思真的是一件不容易的事。

最重要的一句话:面经总归是别人的体验,自己面试的时候会被问到什么问题都是不确定的。有规律可循,字节的面试官很注重基础,也会根据你的简历调整询问的方向。所以好好写简历非常重要。比如我缺少开发经验,而我在三面之前临时抱佛脚看了软工,花了大工夫在背记创建型、结构型、行为型三种设计模式,但是三面的时候并没有问这些_(:3」∠)_大部分时间花在了如何优化系统上,一听就很假大空,所以大概率已进备胎池,不知道啥时候凉,毕竟公司都是宁缺毋滥……

我只能是心怀期盼了。整个面试流程下来,我对我自己的评价是:缺少实战,只知其然不知其所以然(都是书本知识,但是没有实战验证)。还是要练习。尽管有点凉,还是给字节打个广告吧!面试流程体验绝佳,面试官很会把握问问题的深度,不会一上来就问很难的问题,问的都是你自己说出来的东西,这种抛砖引玉的问法还是需要适应一下,但是对于双方都是一个很好的了解机会。

Anyway,加油!

原文地址:https://www.cnblogs.com/zhouys96/p/12690613.html