百度提前批一面凉经
面的部门是ACG,面试官不开摄像头+对面一直有人在说话+感觉对我完全不感兴趣,面试体验不太行。。。
1.一条写请求发送到Raft系统里的流程是什么样的?
2.举个Leader和Follower冲突的例子
3.在Raft中,Leader在确认收到超过半数同步后,但还未提交日志到状态机前,可以执行回复给客户端吗(从这里开始有点晕了)
这里是可以的,大作业里的做法是Start将要存储的数据发送给服务端,然后建立一个对应的管道监听,查看是否同步成功,这个监听如果超过一定时间(设定的是500ms)还没有收到,则超时重发。在大作业里,执行状态机=回复给客户端
4.假如主节点达到半数同步,回复给客户端这条消息后还没来得及给客户端发送自己已经commit的消息就挂了,这个时候集群会发生什么 ? (主节点已经同步到状态机的时候,从节点没收到主节点发来的LastApplied同步)
开始胡言乱语了。
5.Switch Case里面放多个channel,会先去执行哪个Channel?为什么?
随机,不知道为啥。
gpt: 这是 select 语句的一个关键特性,目的是为了防止因为某个 channel 总是优先被选择而导致其他 channel 长期被忽略。每次 select 执行时都会随机化选择顺序,所以你无法预测在多个 channel 同时就绪时具体会选择哪个。
所以是为了保证公平性,避免饥饿现象。
6.Golang的垃圾回收过程。重点说一下Stop The World的时候的过程
只大概讲了一下原理,估计不满意。 后续还是要背一下源码流程
7.Go中有很多Goroutine,怎么管理数据安全
Channel
8.死锁是怎么产生的?
9.写一个死锁的场景
写了个两个channel的阻塞写的场景,但是语法没认真写 百度的垃圾编辑器并没有纠错功能,估计又下头了。。。
10.手撕 leetcode 1338
总结:
- Raft有点细节有点忘了,导致被面试官绕的晕晕的。。
- 以后写代码优先共享屏幕用自己的IDE,这次吃亏了
- 下次问面试官再说不match,就直接逼问到底哪里不行了
- 面试如果面试官问确定吗的时候自信一点