恭喜发现宝藏!微信搜索公众号【TechGuide】回复公司名,解锁更多新鲜好文和互联网大厂的笔经面经。 作者@TechGuide【全网同名】 点赞再看,养成习惯,您动动手指对原创作者意义非凡🤝
时间线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各个阶段的数据拷贝工作是谁来完成的?
面了半小时结束了,没有题目,面完觉得自己凉凉了(很感谢这个面试官,问的问题都需要深入内核源代码去理解,面试结束之后,我去补充了一些这些知识,也让我知道自己在深入方面造诣还不够)