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

   日期:2020-09-10     浏览:196    评论:0    
核心提示:一面7.26 70min个人介绍3min针对项目提问20min先问我哪项了解多点,我说计算机网络,然后面试官说那先问一下简单的操作系统吧(-_-进程线程协程区别A进程可以访问B进程的空间吗(不能那怎么能访问呢(IPC共享内存咋实现的(直接把物理地址映射到另一个进程的地址空间里面去为啥共享内存快(省略了用户态到内核态的开销,追问还有吗,回答其他的不了解了)TCP三次握手,服务端如果不调用accept会咋样(客户端发完第三次的ack包后就认为自己建立连接,而服务端不认为

一面

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说我的面试评价不一致,还需要再讨论,感觉就是进入备胎池了

 

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服