一面
1、询问项目相关
2、线程池及其参数作用。
3、redis的持久化方式
4、过期键的删除策略。
5、rocketmq用在什么场景?
6、CMS。
7、如果一个固定的堆内存,当创建线程数很多的时候,JVM参数怎么配置?
8、、如果消费者组A下面有两个消费者组A1,A2,问消费者A1和A2能否消费不同的主题?
9、rocketmq如何保证的事务?
10、四次挥手;
(1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
(2)服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
(3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
(4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
(4)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。
(5)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。
二面
1、询问项目经历
2、redis的常用数据结构,hash的指令有哪些?
3、redis的过期策略;
(1)Redis 中数据过期策略采用定期删除+惰性删除策略:
①定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。这种策略可以保证过期的 key 最终都会被删除,但是也存在严重的缺点:每次都遍历内存中所有的数据,非常消耗 CPU 资源,并且当 key 已过期,但是定时器还处于未唤起状态,这段时间内 key 仍然可以用。
②惰性删除策略:在获取 key 时,先判断 key 是否过期,如果过期则删除。这种方式存在一个缺点:如果这个 key 一直未被使用,那么它一直在内存中,其实它已经过期了,会浪费大量的空间。 这两种策略天然的互补,结合起来之后,定时删除策略就发生了一些改变,不在是每次扫描全部的 key 了,而是随机抽取一部分 key 进行检查,这样就降低了对 CPU 资源的损耗,惰性删除策略互补了为检查到的key,基本上满足了所有要求。
4、春天的云与dubbo的区别?
5、分库分表如何做的,发展中国家常用的数据库中间件有什么。
6、分散事务
7、dubbo调用模式
8、dubbo的spi
9、dubbo协议有什么?具体有哪些不同
10、JVM的最大堆内存和最小堆内村你们项目中是如何配置的,为什么配置成替代的模式。
11、类加载机制,如果我想自己控制类加载的时机怎么办?
12、https请求流程,如何获取最初的证书。
13、算法题,这道牛客题霸上有原题,可以去看看:NC28 最小覆盖子串
14、sql优化
15、rocketmq的消费模式
16、工作中什么场景用到了多线程,如何创建的多线程,线程池的参数有什么?核心线程数,最大线程数,串联的先后顺序时怎样的。
全部评论
(8) 回帖