快手 Java应用研发
1.自我介绍
2.介绍项目,拷打了一下
3.nacos单点扛不住怎么办
4.nacos集群数据一致性让我设计怎么设计
5.rocketmq的工作流程
6.消费者怎么消费消息,一亿条消息他怎么拉取,是每次从头开始拉取吗?
7.偏移值broker怎么存的?怎么根据偏移值定位消息的物理位置?
8. rocketmq的底层源码有去看过吗?
9.redis和数据库的数据一致性怎么做的?说了写后删。
10.有没有别的方法?我说后台线程binlog异步去做。
一个请求过来写了数据并删除了缓存,但是另一条请求读到了旧数据,刷新到了缓存上怎么做?我说删一次后隔个100毫秒再删除一次,面试官问再删一次谁去做?说了用后台线程去做。
11.redis的ha怎么做的,然后问了redis主节点选举,
12.哨兵有主节点吗,哨兵怎么选举?哨兵选举的原理是什么?
13. Cpu多级缓存的数据一致性是怎么做的?
14.操作系统为什么要设置内核态呢?用户态和内核态怎么切换?
15.什么是多路复用?
16. Select epoll的原理是什么?
17. Tcp挥手的close wait是用来干嘛的?
18. Close wait的状态是客户端和服务端都有吗?
18.1 什么情况会出现大量closewait状态
19. Java有哪些锁
20. Reentrantlock和 sychronized的区别
21.链表k个一组翻转。(10分钟就写好了,但是需要自己初始化链表调试。最后讲了下思路。
22.面试官说有实习和没实习差距还是挺大的
23.反问业务,说是非常偏底层的,我知道肯定挂了,涉及源码的是真一点不会。
让我多学习,多思考,有空多看看源码。
总共面了68分钟。感觉自己答的还可以,两小时后已挂。