字节抖音一二三面 面经
转发 zuozhe :淇妙小屋
7.18 一面
7.20 二面
7.21 三面
7.29 通知三面通过,估计是横向对比
8.3 hr面
一面
-
Java的中断了解吗
-
Java中断是怎么实现的
-
一些系统调用是否可以中断(例如网络IO),如果能中断,底层是怎么实现的
-
线程池如何取消一个任务,如果让你实现你会怎么做
-
系统设计题,现在有一个微信群,然后微信群最多只能由500人,数据库如何设计才能防止加入微信群的人数不超过500人(超卖问题的变形)
-
上述问题用Redis如何实现(我说了在Redis中维护一个键值对,key为group id,value为微信群可以加入的人员数目,每次收到加群请求时,先将value-1,如果value-1后>=0就可以执行真正的加群逻辑),然后面试官问我如何保证在上述操作时原子性的,我说用Lua脚本,然后面试官问我,在Redis Cluster下,Lua脚本如何会涉及到多个键值对,那么该Lua脚本的执行是否还是原子性的(我说不一定,看这些键值对是否位于同一个node上)
-
判断图中有环
-
LFU
-
实现一个具有衰减机制的LFU
二面
-
Raft相关,介绍下Raft,我将Raft paper中的内容介绍了一遍
-
详细问Raft选举,Raft日志复制
-
Raft如何处理写请求,如果处理读请求
-
Raft不允许日志空洞,你知道有哪些Multi Paxos算法允许日志空洞吗?
-
k8s相关,k8s组件介绍,组件交互逻辑
-
k8s调度原理
leetcode 1004
三面
leader面,问的问题很难,基本都不太会
-
平时怎么学习的?看过那些书?对你影响最大的书是哪一本,怎么影响你的?
-
网络IO的详细流程,以及每个流程是由哪个线程处理的
-
epoll下数据到达时的详细处理流程,我讲了个大概,面试官让我从源码层面去讲,具体到哪个线程来处理,执行什么逻辑
-
问我看过Redis源代码吗?我说没有
-
Redis响应请求时,主线程如何写数据的
-
IO多路复用是谁在监听Socket?
-
阻塞IO各个阶段的数据拷贝工作是谁来完成的?
面了半小时结束了,没有题目,面完觉得自己凉凉了(很感谢这个面试官,问的问题都需要深入内核源代码去理解,面试结束之后,我去补充了一些这些知识,也让我知道自己在深入方面造诣还不够)
7.29号,通知我三面过了,也不知道为什么