JAVA网络通信面试(个人学习总结)

网络通信
讲讲OSI七层交换模型,使用的协议和传输的介质(报文/流/…)?

分别解释一下BIO,NIO,AIO的含义?
BIO:在write,read,accept都阻塞
NIO:异步非阻塞IO,多路复用器(epoll轮询,windows只支持select轮询)
AIO:是NIO的升级版本,解决了NIO编程复杂度,取消多路复用机制。

请讲讲多路复用器的含义?
通过轮询机制(select,poll,epoll)找到一个可用的Channel进行IO的读写操作。

请讲讲select,Poll,epoll模型的优缺点(需要讲到Linux底层实现(指令集))?
1)select,poll实现需要自己不断轮询所有fd集合,直到设备就绪,期间可能要睡眠和唤醒多次交替。而epoll其实也需要调用epoll_wait不断轮询就绪链表,期间也可能多次睡眠和唤醒交替,但是它是设备就绪时,调用回调函数,把就绪fd放入就绪链表中,并唤醒在epoll_wait中进入睡眠的进程。虽然都要睡眠和交替,但是select和poll在“醒着”的时候要遍历整个fd集合,而epoll在“醒着”的时候只要判断一下就绪链表是否为空就行了,这节省了大量的CPU时间。这就是回调机制带来的性能提升。
(2)select,poll每次调用都要把fd集合从用户态往内核态拷贝一次,并且要把current往设备等待队列中挂一次,而epoll只要一次拷贝,而且把current往等待队列上挂也只挂一次(在epoll_wait的开始,注意这里的等待队列并不是设备等待队列,只是一个epoll内部定义的等待队列)。这也能节省不少的开销。

什么是零拷贝?
Linux中mmap,sendFile。sendFile函数是真正的零拷贝。
1.减少用户态与内核态间的切换。
2.减少CPU拷贝。sendFile的CPU拷贝只是IO的描述信息等,不会存在整个IO的CPU拷贝。
DMA拷贝,是将文件从磁盘放入内存。

都是基于netty的NIO模型进行编程?
NIO编程太麻烦,而且容易出现BUG,不好修复。Netty修复了NIO的BUG,并且在持续更新。

MINA与NETTY的差别?
MINA效率没有Netty高。

TCP/IP协议的握手过程?
三次握手,四次挥手(有点复杂)。
什么是TCP网络粘包,如何解决(以netty为例)?

JWT中基于Outh2认证的过程?
1)授权码模式(authorization code)
2)隐式授权码模式/简单模式(implicit)
3)密码模式(resource owner password credentials)
4)客户端模式(client credentials)
大概过程:
1.加盐(加一段服务器能识别的类似于UUID的字母串)。
2.加密用户名,密码,描述等信息。
3.并且指定加解密算法。
传输的消息内容大概分三段。

讲讲HTTP协议的无状态表示什么含义?
当此次请求有结果返回了,请求的生命周期就结束了;与下一次请求和上一次请求无关。

RPC与RMI的区别?
RMI(远程方法调用)主要用于JAVA调用。
RPC不仅仅局限与JAVA调用。

dubbo的hessian 协议介绍,原理。
是以序列化后以二进制流的形式进行传输,传输的内容必须实现序列化接口(Serializable)。

RPC调用过程?
1.Provider向注册中心注册一个服务(IP,端口,协议,参数,服务名等)。
2.Consumer向注册中心获取这个服务(IP,端口,协议,参数,服务名等)。
3.通过Netty或者Socket远程连接到服务端发布的服务中。
4.服务端接收到消费端Consumer的请求,并拿到协议,参数,服务名等信息。
5.通过反射机制执行服务端的方法。
6.执行完以后根据协议返回结果。

REST调用过程?
REST接口是以RestFul风格提供的接口,使用HTTP协议。通过不同的URI区分各个REST接口;每个REST接口都提供GET,POST,PUT,DELET,OPTION等方法供用户调用。常见的如SpringMVC,@GetMapping,@PostMapping…
服务提供方:
1.IP+端口+URI
2.我们告知调用方,我们提供了哪些REST接口(Swagger2)。
3.调用方传入参数,调用接口。

网络安全xss,csrf,csro,sql注入,xml注入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值