一面
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 |
|
我首先说是会报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%,我现在试纸检测阳性了,请问我患病的概率有多大?(数学题,条件概率,贝叶斯公式
逻辑题:
- 给你一个天平,32个重量不一样的石头,要比较多少次才能找到最重的石头(31次
- 基于问题1,你已经找到最重的石头了,如何找到第二重的石头,还需要比较吗,还需要比较多少次?(类似于欧冠32强,画一个冠军的晋级路线图,实力最强的肯定是冠军,但亚军不一定是实力第二强的,总之:冠军这一路上碰到的队伍都有可能是实力第二强的队伍,所以五支队伍中选出最强的,需要4次)
- 给你一个最多可称8块石头的设备,可以知道总重量,32块重量不一样的石头,如何找到最重的三块石头(没时间思考了,随便说了下就结束面试了
五面整体感觉就是考察我这个人聪不聪明,问一堆智力题
五面完之后就陷入了漫长的等待,期间有联系内推人,问hr说我的面试评价不一致,还需要再讨论,感觉就是进入备胎池了