首页 > oppo社招Java面试经历分享
头像
派了大星丶
发布于 2020-12-20 14:14
+ 关注

oppo社招Java面试经历分享

一面

1、询问项目相关

2、线程池及其参数作用。

3、redis的持久化方式

4、过期键的删除策略。

5、rocketmq用在什么场景?

6、CMS

7、如果一个固定的堆内存,当创建线程数很多的时候,JVM参数怎么配置?

8、、如果消费者组A下面有两个消费者组A1A2,问消费者A1A2能否消费不同的主题?

9、rocketmq如何保证的事务?

10、四次挥手;

1)客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。

2)服务器收到连接释放报文,发出确认报文,ACK=1ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。

3)客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。

4)服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。

4)客户端收到服务器的连接释放报文后,必须发出确认,ACK=1ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过2∗∗MSL(最长报文段寿命)的时间后,当客户端撤销相应的TCB后,才进入CLOSED状态。

5)服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

 

二面

1、询问项目经历

2、redis的常用数据结构,hash的指令有哪些?

3、redis的过期策略;

1Redis 中数据过期策略采用定期删除+惰性删除策略:

    ①定期删除策略:Redis 启用一个定时器定时监视所有的 key,判断key是否过期,过期的话就删除。这种策略可以保证过期的 key 最终都会被删除,但是也存在严重的缺点:每次都遍历内存中所有的数据,非常消耗 CPU 资源,并且当 key 已过期,但是定时器还处于未唤起状态,这段时间内 key 仍然可以用。

    ②惰性删除策略:在获取 key 时,先判断 key 是否过期,如果过期则删除。这种方式存在一个缺点:如果这个 key 一直未被使用,那么它一直在内存中,其实它已经过期了,会浪费大量的空间。 这两种策略天然的互补,结合起来之后,定时删除策略就发生了一些改变,不在是每次扫描全部的 key 了,而是随机抽取一部分 key 进行检查,这样就降低了对 CPU 资源的损耗,惰性删除策略互补了为检查到的key,基本上满足了所有要求。

 

4、春天的云与dubbo的区别?

5、分库分表如何做的,发展中国家常用的数据库中间件有什么。

6、分散事务

7、dubbo调用模式

8、dubbospi

9、dubbo协议有什么?具体有哪些不同

10、JVM的最大堆内存和最小堆内村你们项目中是如何配置的,为什么配置成替代的模式。

11、类加载机制,如果我想自己控制类加载的时机怎么办?

12、https请求流程,如何获取最初的证书。

13、算法题,这道牛客题霸上有原题,可以去看看:NC28 最小覆盖子串

14、sql优化

15、rocketmq的消费模式

16、工作中什么场景用到了多线程,如何创建的多线程,线程池的参数有什么?核心线程数,最大线程数,串联的先后顺序时怎样的。

更多模拟面试

全部评论

(8) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐