字节跳动杭州基础架构面经

字节跳动杭州基础架构

字节的面试果然严,相比之下华为的面试简直太水了

连着三轮面试,每轮面试都现场写代码

一面和三面都是对内核非常懂的人

我面试的是内核工程师

最后挂在了主管面上,哎,说到底还是自己实力不够

一面

上午HR说面试官时间冲突,所以改到了四点

但是我没仔细看,以为还是第二天的四点

下午四点二十突然来电话,为啥不来面试, 面试官等你20分钟了

我:?????

当时正在图书馆,拿着电脑跑到了图书馆的走廊

坐在地上面试。。。。

面试官:不着急,别紧张,你先缓缓。

页错误有哪几种(写,权限,存在)

页基址是什么

讲讲你写的内核

页表寻址几次

讲讲你写的文件系统

讲讲进程调度

讲讲cache和buffer(不会,不知道这两个词分别对应的什么东西)

fork做了什么事

fork时页表拷贝有哪几种方式

讲讲exec

软连接和硬链接有什么不同,分别对应的inode

内核申请64M内存以上该怎么做

操作系统的内存分布

写个题:IP的那个题,dfs

有什么问题吗

让你学一门语言学多久

rust知道吗,最近一周可以看看(??)

k8s了解吗

他让我最近一周看看什么意思,我还以为他看我的能力,觉得我这三面稳了



二面

二面就温柔很多,而且似乎工作和内核的关系不大

讲讲你的内核

每个子系统所需要完成的功能

内核时如何boot的,初始化所做的事

你不是计算机系的啊,那你计算机网络学过吗?没。。。

c++会吗?(学过,但忘了

一个struct int short long,所占的内存(和编译选项有关)

讲讲操作系统启动的时候做的事情

会写shell吗,讲讲你写过的shell脚本

讲讲熟悉的gcc选项

gdb了解吗,有时候gdb行号不对,是为什么

你在华为实习的时候做了什么

qemu配置的时候遇到了什么问题(我说没遇到啥问题,我讲了讲最近拉多核遇到的问题)

O1,O2,O3有什么区别,分别优化了那些?(?????这我哪知道

算法题:链表找入口

有什么问题吗

我暗示的问了面试结果怎样?

面试官:面试结果不能告诉你

不过后边面试官无意中说了一句,三面面试官最近有事。(?????

这个部门在哪里

上海杭州北京,我看你投的杭州,你就来杭州吧

面到这里依然觉得字节的面试八成稳了,前两面面的很爽



三面(挂)

三面一般是主管面

面试官迟到了10分钟,大概实在是太忙了吧

一上来气场和前两面完全不同

感觉发量也不太健康

他就像一个毫无情感的机器人,我的回答对与错完全不予评价,等我不说了就问下一题

讲讲内核

你在华为所做的事情?

为什么不继续在华为实习(想感受下不同公司环境氛围,正好看到了字节招聘信息)

讲讲cpu从上电所做的事情(实地址模式,保护模式。。。

讲讲buddy system

buddy system 所引发的内存碎片?

计算机网络会吗,讲讲tcp三次握手

spinlock的适用场景(这里我答错了,我并不理解他所说的适用场景让我答什么,我回答的自旋锁不可递归,有时候需要关中断,他没有任何反馈)

hash表是什么?

冒泡排序时间复杂度,空间复杂度,最好情况下复杂度

怎么解决哈希冲突(这里也答错了,我一直从来没有解决过hash冲突,只学过竞赛中用的指针往后加,后边搜了下这个问题在计算机系中有很多的术语)

C语言 volitile 关键字(这里我是理解的,但是感觉嘴笨,没有回答的很好)

讲讲gcc编译的过程,链接过程中所做的事情。

写个memmove代码



一直有疑问,为什么只问最简单的自旋锁,不问读写锁,不问rcu,不问顺序锁,不问mutex,是因为我自旋锁没回答好,导致他根本不会浪费时间继续问。。。。。。

那么多种排序,为什么只问最脑残的冒泡排序就不问了,不过我冒泡排序回答的也没问题呀。。。。。

他的面试就像一个程序,每次对你的回答予以评价,并决定会不会继续问下去

完全不会对你的回答的对错做任何的反馈

以至于我面试完了还自我良好,感觉应该稳了。



三面的面试官才像是一位大师,外表看起来说话虚虚的,其实是在想这个脑残是怎么过前两面的。



说到底还是自己太菜了


更新,他们今天告诉我,三面是过了的
明天HR面
开心
#面经##校招##基础架构工程师##字节跳动#
全部评论
没给通知很有可能过了,别灰心
1
送花
回复 分享
发布于 2021-03-21 21:16
软性页缺失指页缺失发生时,相关的页已经被加载进内存,但是没有向MMU注册的情况。操作系统只需要在MMU中注册相关页对应的物理地址即可。发生这种情况的可能性之一,是一块物理内存被两个或多个程序共享,操作系统已经为其中的一个装载并注册了相应的页,但是没有为另一个程序注册。 可能性之二,是该页已被从CPU的工作集中移除,但是尚未被交换到磁盘上。比如OpenVMS这样的使用次级页缓存的系统,就有可能会在工作集过大的情况下,将某页从工作集中去除,但是不写入硬盘也不擦除(比如说这一页被读出硬盘后没被修改过),只是放入空闲页表。除非有其他程序需要,导致这一页被分配出去了,不然这一页的内容不会被修改。当原程序再次需要该页内的数据时,如果这一页确实没有被分配出去,那么系统只需要重新为该页在MMU内注册映射即可。 硬性 与软性页缺失相反,硬性页缺失是指相关的页在页缺失发生时未被加载进内存的情况。这时操作系统需要: 寻找到一个空闲的页。或者把另外一个使用中的页写到磁盘上(如果其在最后一次写入后发生了变化的话),并注销在MMU内的记录; 将数据读入被选定的页; 向MMU注册该页。 无效 当程序访问的虚拟地址是不存在于虚拟地址空间内的时候,则发生无效页缺失。一般来说这是个软件问题,但是也不排除硬件可能,比如因为内存故障而损坏了一个正确的指针。 具体动作与所使用的操作系统有关,比如Windows会使用异常机制向程序报告,而类Unix系统则会使用信号机制。如果程序未处理相关问题,那么操作系统会执行默认处理方式,通常是转储内存、终止相关的程序,然后向用户报告。
1
送花
回复 分享
发布于 2021-04-04 16:59
国泰君安
校招火热招聘中
官网直投
硬链接:新建的文件是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用.   软链接:也称为符号链接,新建的文件以“路径”的形式来表示另一个文件,和Windows的快捷方式十分相似,新建的软链接可以指向不存在的文件.   下面详细介绍一下硬链接和软连接之间的区别.   1.硬链接和原来的文件没有什么区别,而且共享一个 inode 号(文件在文件系统上的唯一标识);而软链接不共享 inode,也可以说是个特殊的 inode,所以和原来的 inode 有区别。   2.若原文件删除了,则该软连接则不可以访问,而硬连接则是可以的。   3.由于符号链接的特性,导致其可以跨越磁盘分区,但硬链接不具备这个特性.
1
送花
回复 分享
发布于 2021-04-04 16:57
是通知你挂了吗
点赞
送花
回复 分享
发布于 2021-03-20 15:29
老哥,什么时候收到hr面通知的?
点赞
送花
回复 分享
发布于 2021-03-23 16:33

相关推荐

3 61 评论
分享
牛客网
牛客企业服务