一面:
1.说一下RPC项目
2.什么是NIO
3.什么是非阻塞IO
4.非阻塞IO怎么判断数据是否准备好(我说通过设备控制器可以看,他说是轮询吗,我说中断或者DMA) 5.select、poll和epoll
6.为什么select要把文件描述符拷贝到内核,在用户空间内核不能轮询吗 7.用户态和内核态
8.epoll水平触发和边缘触发
9.边缘触发是怎么实现只通知一次的 10.epoll是将就绪的socket拷贝到就绪事件列表吗(我说是其实不是) 11.PRC框架请求包里面有什么东西,服务端是怎么处理请求的
12.服务端除了使用反射,还有别的办法调方法吗(我说if else他说可以动态生成class)
13.说一下一致性哈希算法
14.说一下项目中是怎么实现一致性哈希算法的
15.Redis持久化(AOF、RDB和混合持久化)
16.AOF重写
17.RDB持久化中子进程是怎么共享主进程的地址空间的(我说页表拷贝,他问进程间不是隔离的吗怎么能共享呢,共享内存) 18.Redis主从复制(从库能不能写?)
19.Redis主从复制从库挂了怎么办
算法题:最小覆盖子串
二面:
1.RPC项目的框架
2.怎么找到要调用的方法
3.注册一个服务需要写入哪些数据
4.服务怎么保活
5.用的什么序列化协议
6.kryo序列化相对于json或者其他序列化有什么优点
7.jdk动态代理和cglib动态代理有什么区别,原理是什么
8.怎么处理秒杀的并发量,秒杀是怎么完成的
9.怎么保证商品正好能卖出
10.下单后没有支付会把订单锁住吗(15分钟)
11.怎么保证redis和mysql的库存一致性
12.rabbitmq的整体架构
13.怎么保证消息的顺序性(同一个订单号的消息放到一个队列里面)
14.怎么保证同一个订单号的消息放到一个队列里面(绑定规则)
15.rabbitmq的延时消息,如果让你来设计会怎么设计(参考DelayQueue)
16.如果有大量的延时消息不是需要创建很多线程去等待吗
17.等待的效率不高,有没有更好的做法
18.了解过事务消息吗
19.怎么实现事务消息(两阶段提交)
算法题:132模式
二面答得一般,不一定能过