字节抖音一二三面 面经 这是什么鬼难度

853 阅读3分钟

字节抖音一二三面 面经

转发 zuozhe :淇妙小屋

7.18 一面

7.20 二面

7.21 三面

7.29 通知三面通过,估计是横向对比

8.3 hr面

一面

  1. Java的中断了解吗

  2. Java中断是怎么实现的

  3. 一些系统调用是否可以中断(例如网络IO),如果能中断,底层是怎么实现的

  4. 线程池如何取消一个任务,如果让你实现你会怎么做

  5. 系统设计题,现在有一个微信群,然后微信群最多只能由500人,数据库如何设计才能防止加入微信群的人数不超过500人(超卖问题的变形)

  6. 上述问题用Redis如何实现(我说了在Redis中维护一个键值对,key为group id,value为微信群可以加入的人员数目,每次收到加群请求时,先将value-1,如果value-1后>=0就可以执行真正的加群逻辑),然后面试官问我如何保证在上述操作时原子性的,我说用Lua脚本,然后面试官问我,在Redis Cluster下,Lua脚本如何会涉及到多个键值对,那么该Lua脚本的执行是否还是原子性的(我说不一定,看这些键值对是否位于同一个node上)

算法

  1. 判断图中有环

  2. LFU

  3. 实现一个具有衰减机制的LFU

二面

  1. Raft相关,介绍下Raft,我将Raft paper中的内容介绍了一遍

  2. 详细问Raft选举,Raft日志复制

  3. Raft如何处理写请求,如果处理读请求

  4. Raft不允许日志空洞,你知道有哪些Multi Paxos算法允许日志空洞吗?

  5. k8s相关,k8s组件介绍,组件交互逻辑

  6. k8s调度原理

算法

leetcode 1004

三面

leader面,问的问题很难,基本都不太会

  1. 平时怎么学习的?看过那些书?对你影响最大的书是哪一本,怎么影响你的?

  2. 网络IO的详细流程,以及每个流程是由哪个线程处理的

  3. epoll下数据到达时的详细处理流程,我讲了个大概,面试官让我从源码层面去讲,具体到哪个线程来处理,执行什么逻辑

  4. 问我看过Redis源代码吗?我说没有

  5. Redis响应请求时,主线程如何写数据的

  6. IO多路复用是谁在监听Socket?

  7. 阻塞IO各个阶段的数据拷贝工作是谁来完成的?

面了半小时结束了,没有题目,面完觉得自己凉凉了(很感谢这个面试官,问的问题都需要深入内核源代码去理解,面试结束之后,我去补充了一些这些知识,也让我知道自己在深入方面造诣还不够)

7.29号,通知我三面过了,也不知道为什么