Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

丰巢科技 Java高级笔试面试题 PDF 下载


分享到:
时间:2020-08-14 10:42来源:http://www.java1234.com 作者:小锋  侵权举报
丰巢科技 Java高级笔试面试题 PDF 下载
失效链接处理
丰巢科技 Java高级笔试面试题 PDF 下载


 
本站整理下载:
提取码:cq86 
 
 
相关截图:
 
主要内容:


1.bio与nio的区别
1、bio同步阻塞io:在此种⽅式下,⽤户进程在发起⼀个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,⽤户
进程才能运⾏。JAVA传统的IO模型属于此种⽅式!
2、nio同步⾮阻塞式I/O;java NIO采⽤了双向通道进⾏数据传输,在通道上我们可以注册我们感兴趣的事件:连接事件、读写事件;
NIO主要有三⼤核⼼部分:Channel(通道),Buffer(缓冲区), Selector。传统IO基于字节流和字符流进⾏操作,⽽NIO基于Channel和
Buffer(缓冲区)进⾏操作,数据总是从通道读取到缓冲区中,或者从缓冲区写⼊到通道中。Selector(选择区)⽤于监听多个通道的事件
(⽐如:连接打开,数据到达)。因此,单个线程可以监听多个数据通道。
1. BIO (Blocking I/O):同步阻塞I/O模式,数据的读取写⼊必须阻塞在⼀个线程内等待其完成。这⾥使⽤那个经典的烧开⽔例⼦,
这⾥假设⼀个烧开⽔的场景,有⼀排⽔壶在烧开⽔,BIO的⼯作模式就是, 叫⼀个线程停留在⼀个⽔壶那,直到这个⽔壶烧开,才去
处理下⼀个⽔壶。但是实际上线程在等待⽔壶烧开的时间段什么都没有做。
2. NIO (New I/O):同时⽀持阻塞与⾮阻塞模式,但这⾥我们以其同步⾮阻塞I/O模式来说明,那么什么叫做同步⾮阻塞?如果还拿
烧开⽔来说,NIO的做法是叫⼀个线程不断的轮询每个⽔壶的状态,看看是否有⽔壶的状态发⽣了改变,从⽽进⾏下⼀步的操作。
3. AIO ( Asynchronous I/O):异步⾮阻塞I/O模型。异步⾮阻塞与同步⾮阻塞的区别在哪⾥?异步⾮阻塞⽆需⼀个线程去轮询所有
IO操作的状态改变,在相应的状态改变后,系统会通知对应的线程来处理。对应到烧开⽔中就是,为每个⽔壶上⾯装了⼀个开关,⽔
烧开之后,⽔壶会⾃动通知我⽔烧开了。
2.select与poll的区别
1、io多路复⽤:
1、概念:IO多路复⽤是指内核⼀旦发现进程指定的⼀个或者多个IO条件准备读取,它就通知该进程。
2、优势:与多进程和多线程技术相⽐,I/O多路复⽤技术的最⼤优势是系统开销⼩,系统不必创建进程/线程,也不必维护这些进
程/线程,从⽽⼤⼤减⼩了系统的开销。
3、系统:⽬前⽀持I/O多路复⽤的系统调⽤有 select,pselect,poll,epoll。 2、select:select⽬前⼏乎在所有的平台上⽀持,其良好跨平台⽀持也是它的⼀个优点。select的⼀个缺点在于单个进程能够监视的
⽂件描述符的数量存在最⼤限制,在Linux上⼀般为1024,可以通过修改宏定义甚⾄重新编译内核的⽅式提升这⼀限制,但是这样也
会造成效率的降低。
3、poll:它没有最⼤连接数的限制,原因是它是基于链表来存储的,但是同样有⼀个缺点:
a. ⼤量的fd的数组被整体复制于⽤户态和内核地址空间之间,⽽不管这样的复制是不是有意义。
b. poll还有⼀个特点是“⽔平触发”,如果报告了fd后,没有被处理,那么下次poll时会再次报告该fd。
epoll跟select都能提供多路I/O复⽤的解决⽅案。在现在的Linux内核⾥有都能够⽀持,其中epoll是Linux所特有,⽽select则应该是
POSIX所规定,⼀般操作系统均有实现。
3.zookeeper的⼯作原理
1、定义:zookeeper是⼀种为分布式应⽤所设计的⾼可⽤、⾼性能且⼀致的开源协调服务,它提供了⼀项基本服务:分布式锁服务。
后来摸索出了其他使⽤⽅法:配置维护、组服务、分布式消息队列、分布式通知/协调等。
2、特点:
 1、能够⽤在⼤型分布式系统中;
 2、具有⼀致性、可⽤性、容错性,不会因为⼀个节点的错误⽽崩溃;
3、⽤途:⽤户⼤型分布式系统,作协调服务⻆⾊;
1、分布式锁应⽤:通过对集群进⾏master选举,来解决分布式系统中的单点故障(⼀主n从,主挂全挂)。
2、协调服务;
3、注册中⼼;
4、原理:
 术语:
 数据结构Znode:zookeeper数据采⽤树形层次结构,和标准⽂件系统⾮常相似,树中每个节点被称为Znode;
 通知机制Watcher:zookeeper可以为所有的读操作(exists()、getChilden()及getData())设置watch,watch事件是⼀次
性出发器,当watch的对象状态发⽣改变时,将会触发次对象上watch所对应的事件。watch事件将被异步的发送给客户端,并且zookeeper为
watch机制提供了有序的⼀致性保证。
 基本流程:分布式锁应⽤场景
 1、传统的⼀主n从分布式系统,容易发⽣单点故障,传统解决⽅式是增加⼀个备⽤节点,定期给主节点发送Ping包,主节点回复
ack,但是如果⽹络原因ack丢失,那么会出现两个主节点,造成数据混乱。
 2、zookeeper的引⼊可以管理两个主节点,其中挂了⼀个,会将另外⼀个作为新的主节点,挂的节点回来时担任备⽤节点;
4.cap理论
1、概念:⼀个分布式系统最多只能同时满⾜⼀致性(Consistency)、可⽤性(Availability)和分区容错性(Partition tolerance)这
三项中的两项。
2、⼀致性:更新操作成功并返回客户端完成后,所有节点在同⼀时间的数据完全⼀致,所以,⼀致性,说的就是数据⼀致性。
3、可⽤性:服务⼀直可⽤,⽽且是正常响应时间。
4、分区容错性:分布式系统在遇到某节点或⽹络分区故障的时候,仍然能够对外提供满⾜⼀致性和可⽤性的服务。
5.⼆段式满⾜cap理论的哪两个理论
两阶段提交协议在正常情况下能保证系统的强⼀致性,但是在出现异常情况下,当前处理的操作处于错误状态,需要管理员⼈⼯⼲预
解决,因此可⽤性不够好,这也符合CAP协议的⼀致性和可⽤性不能兼得的原理。
6.线程池的参数配置,为什么java官⽅提供⼯⼚⽅法给线程池
1、线程池简介:
2、核⼼参数:

 

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐