腾讯云面经

1.为什么要使用rpc而不是http?

rpc是一种框架,http是一种协议。
rpc底层可以使用多种协议实现。
rpc提供了服务发现功能。
定制化程度高一些,性能会好一些。
比如dubbo底层使用的socket,openFeign使用的http性能差一些。

2.netty为什么性能高?

线程模型是reactor模型,使用了i/o多路复用模型,不用进行线程/进程的切换,也避免了锁的竞争。

3.spring bean的初始化顺序如何指定?

构造方法依赖;@DependsOn注解。

@Order注解不能指定bean的加载顺序,它适用于AOP的优先级,以及将多个Bean注入到集合时,这些bean在集合中的顺序。

4.循环依赖如何解决?

@lazy注解使得spring boot可以先传入一个代理对象,从而解决循环依赖的问题。

5.cpu到了100%,如何定位排查?

jps + jstack

6.threadLocal的原理?

看其他的经

7.java文件到生成对象的过程

编译



构造函数赋值

8.如何解决数据库幻读

针对快照读(普通 select 语句),是通过 MVCC 方式解决了幻读,因为可重复读隔离级别下,事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,即使中途有其他事务插入了一条数据,是查询不出来这条数据的,所以就很好了避免幻读问题。
针对当前读(select ... for update 等语句),是通过 next-key lock(记录锁+间隙锁)方式解决了幻读,因为当执行 select ... for update 语句的时候,会加上 next-key lock,如果有其他事务在 next-key lock 锁范围内插入了一条记录,那么这个插入语句就会被阻塞,无法成功插入,所以就很好了避免幻读问题。

9.为什么要用中间件?

中间件是一种独立的系统软件或服务程序,分布式应用借助这种软件通信和共享资源
mq 进行业务的解耦。
tomcat 使的开发人员不用面对操作系统底层复杂的细节,专注于业务的编写。

10.为什么要使用Redis?

redis可以用作缓存和分布式锁。
性能高,单线程,具有很多高效的数据结构。

11.redis的底层实现原理?

可以说五大数据结构的实现原理


image.png

12.Java线程池的原理

13.线程池怎么调度线程的?

14.如何文件重命名

mv

15.如何查看文件后三行,如何查看文件里包含“abc”字段的内容?

tail-n 5 file.txt
cat | grep

16.如何看cpu 内存的使用呢?

查看cpu的使用用top命令
查看内存的使用使用free命令

17.内存里的buffer和cache讲一下?

buffer是为了提高内存和磁盘的交换效率。
cache是为了提高cpu和内存的交换效率。

18.怎么看进程信息,如何看进程pid

ps -ef -aux

19.讲一下三次握手,两次行不行?


20.讲一下time_wait状态


21.假设又两台服务器,怎么确定这两台服务器是否网络可通(不能用ping)

traceroute命令

22.那假设A服务器开了8080端口,B服务器用什么命令去访问?

telnet 是访问网络端口用的,它可以判断出远程服务器端口是否可以被当前服务器访问,前提是远程服务器的端口必须被监听。
Netcat 来让某个端口处于监听状态。

23.了解滑动窗口吗?

image.png

24.讲一下拥塞控制的方法?

image.png

25.讲一下事务的四大特性

image.png

26.讲一下隔离级别

image.png

27.幻读 脏读 不可重复读是什么?

image.png

28.事务的特性使怎么实现的?

image.png

29.redlog介绍?



30.如何实现redis两个操作变成一个事务性操作?


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容