字节跳动高质量面经(偏难)

一面

7.26 70min

个人介绍3min

针对项目提问20min

先问我哪项了解多点,我说计算机网络,然后面试官说那先问一下简单的操作系统吧(-_-


进程线程协程区别

A进程可以访问B进程的空间吗(不能

那怎么能访问呢(IPC

共享内存咋实现的(直接把物理地址映射到另一个进程的地址空间里面去

为啥共享内存快(省略了用户态到内核态的开销,追问还有吗,回答其他的不了解了)


TCP三次握手,服务端如果不调用accept会咋样(客户端发完第三次的ack包后就认为自己建立连接,而服务端不认为

那为什么会有这种状态不一致呢(拜占庭问题

TCP是可靠的,三次握手能解决什么问题呢,用你的观点来说好像不是可靠的?(建立连接的确可能出现这种问题,但是客户端第一次发包的时候,服务端认为连接不存在,返回一个RST包,这样客户端就知道连接不存在了

那我换个问题,TCP双方确立连接后正常发送数据,如果服务端突然崩了,那会咋样(客户端认为连接还在,服务端认为不存在,返回RST包提醒客户端

假设服务端进程core了,或者机器坏掉了,这两种有区别吗(第一种是返回RST包,第二种不会有任何响应,客户端会重试几次,然后认为连接失效

RST包是谁发起(服务端

是指这个进程还是这个机器呢(应该是这台机器吧,因为这个进程已经core掉了

那你知道这个包的协议是什么,就是它在哪一层(RST包就是TCP包吧,那不就是在传输层?

连接都断了,为什么还有这个包发送呢(我回答的是Linux TCP协议栈可以处理这种问题,我没有这个连接,莫名其妙接收到了这个连接的包,所以会回一个RST包

你意思说这还是一个TCP包是吧(对

面试官沉默ing,这让我产生了怀疑,RST包不是TCP包嘛?


共识算法了解哪些呢(paxos、raft、gossip,前面稍微连接一点

raft大概是咋样的逻辑(更好实现更好理解,leader、follower、candidate,相比于paxos,选主和日志复制分离,模块化,paxos的proposer和acceptor把选主和日志复制糅合在一起了

你知道它是怎么解决网络分区的问题(脑裂的问题,一半以上的支持才会确认自己leader,好像是通过item的index来决定谁的leader程度更高,另一个就自动退化为follower


C++虚函数说一下

如何取到子类的函数地址(虚函数表其实是个数组,对虚指针解引用,然后用中括号


MySQL索引(B树、B+树

为啥用B+树(减少磁盘IO次数,区间遍历

写性能相比于读性能(要差,因为要分裂和合并分支,来维持m阶的特性


 


下面的输出

复制代码

1

2

3

4

5

6

7

8

9

10

11

12

class C {

        public:

            // int a;

            void func(void) {

                printf("hello %d", a);

            }

    };

    int main() {

            C *c = NULL;

            c->func();

        return 0;

    }

我首先说是会报member access null类似的错,然后面试官让我跑一下,啪啪打脸。。

再分析一下?(想了一会,推断说func是非虚的成员方法,所以可以直接访问

那怎么找到func的地址,或者说这个函数是放在哪里的(代码段

如果加上一个int a成员变量,会输出什么?(先想了一会,开玩笑说对自己的答案不是很自信,我首先说会输出0,然后再改口说会报错,原因是func调用了成员变量,成员变量需要访问类的对象,而c没有new出来,所以会报错,大概是对的


 

有一个无序整型数组:[3, 7, 2, 0, -1, 9, 8 ...],长度1000w左右,要求设计一个算法,找到数组中位数

先说了大小堆的联机解法,然后面试官说想要小于O(nlogn)时间复杂度的排序,对数组元素没要求,也不需要额外空间

这里我们的沟通出现了问题,我以为面试官是想要完全排序,然后说了桶排序什么的,但他原意是找到中位数就行,害,那就直接进入主题:快速选择


 

elk、日志的难点,采集日志的进程挂了咋办,日志rotate后咋办(不是很会

c++内存模型(高字节到低字节整了个遍

malloc的底层实现(brk与mmap

虚拟内存

io复用

tcp拥塞控制

题目:二维数组的地图中,搜索指定字符串是否存在

同力扣79,力扣79还加了限制条件,已经走过的单元格不能再走,得用visited数组记录

题目:给定m个字符 [a, b, c, d],字符可能重复,以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。

输入 [a, b, c, d] + tbcacbdata -> 3

输入 [a, b, c, c] + tbcacbdata -> 1

输入 [a, b, c, d] + abctbcdata -> 4

同力扣438

三面

这里相当于就是主管了,看得出来,面试官是个大佬,说话云淡风轻,问的东西都很深入

70min

Raft的Leader挂了咋办

Paxos原理

科研方向,软件定义网络是什么

实习经历

异步队列用的是什么(MQ),你对MQ的原理熟悉吗(还没深入了解,实习时间不久,先把组内架构摸清楚,还没深入了解中间件


A与B轮流从 1000 个棋子里取棋子,规定每次最多取 7 个,最少取 1 个,谁最后取完剩下的棋子谁获胜,A先取,有没有必胜的策略?

刚开始算错了,1000除以8的余数是4。。。

其实是0,后来再思考了一会,给出了答案:如果B足够聪明,A必输


有一个很大很大的输入流,大到没有存储器可以将其存储下来,也不知道到底有多大,而且只输入一次,如何从这个输入流中随机取得 7 个记录。

蓄水池算法


 

给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T ,输出子串 T 长度。

示例 1:
输入: s = "eceba", k = 2
输出: 3
解释: 则 T 为 "ece",所以长度为 3。

示例 2:
输入: s = "aa", k = 1
输出: 2
解释: 则 T 为 "aa",所以长度为 2


 

8.23 50min

阿里转正了吗,怎么看字节和阿里

前面四轮技术面都问了很多了,就问你一个简历上的东西吧

quic为什么可以队头不阻塞(各流独立blabla,答的不算特别完整

概率题:一种流行病患病概率是1%,有一种检测试纸,检测的准确率是99%,我现在试纸检测阳性了,请问我患病的概率有多大?(数学题,条件概率,贝叶斯公式

逻辑题:

  1. 给你一个天平,32个重量不一样的石头,要比较多少次才能找到最重的石头(31次
  2. 基于问题1,你已经找到最重的石头了,如何找到第二重的石头,还需要比较吗,还需要比较多少次?(类似于欧冠32强,画一个冠军的晋级路线图,实力最强的肯定是冠军,但亚军不一定是实力第二强的,总之:冠军这一路上碰到的队伍都有可能是实力第二强的队伍,所以五支队伍中选出最强的,需要4次)
  3. 给你一个最多可称8块石头的设备,可以知道总重量,32块重量不一样的石头,如何找到最重的三块石头(没时间思考了,随便说了下就结束面试了

五面整体感觉就是考察我这个人聪不聪明,问一堆智力题


五面完之后就陷入了漫长的等待,期间有联系内推人,问hr说我的面试评价不一致,还需要再讨论,感觉就是进入备胎池了

猜你喜欢

转载自blog.csdn.net/wwxy1995/article/details/108485410
今日推荐