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。

4.cap理论
1、概念:⼀个分布式系统最多只能同时满⾜⼀致性(Consistency)、可⽤性(Availability)和分区容错性(Partition tolerance)这
三项中的两项。
2、⼀致性:更新操作成功并返回客户端完成后,所有节点在同⼀时间的数据完全⼀致,所以,⼀致性,说的就是数据⼀致性。
3、可⽤性:服务⼀直可⽤,⽽且是正常响应时间。
4、分区容错性:分布式系统在遇到某节点或⽹络分区故障的时候,仍然能够对外提供满⾜⼀致性和可⽤性的服务。
5.⼆段式满⾜cap理论的哪两个理论
两阶段提交协议在正常情况下能保证系统的强⼀致性,但是在出现异常情况下,当前处理的操作处于错误状态,需要管理员⼈⼯⼲预
解决,因此可⽤性不够好,这也符合CAP协议的⼀致性和可⽤性不能兼得的原理。

8.七个垃圾回收器之间如何搭配使⽤
1. Serial New收集器是针对新⽣代的收集器,采⽤的是复制算法;
2. Parallel New(并⾏)收集器,新⽣代采⽤复制算法,⽼年代采⽤标记整理;
3. Parallel Scavenge(并⾏)收集器,针对新⽣代,采⽤复制收集算法;
4. Serial Old(串⾏)收集器,新⽣代采⽤复制,⽼年代采⽤标记清理;
5. Parallel Old(并⾏)收集器,针对⽼年代,标记整理;
6. CMS收集器,基于标记清理;
7. G1收集器(JDK):整体上是基于标记清理,局部采⽤复制;
综上:新⽣代基本采⽤复制算法,⽼年代采⽤标记整理算法。 cms采⽤标记清理;

11.解决map的并发问题⽅案
HashMap不是线程安全的; Hashtable线程安全,但效率低,因为是Hashtable是使⽤synchronized的,所有线程竞争同⼀把锁;⽽
ConcurrentHashMap不仅线程安全⽽且效率⾼,因为它包含⼀个segment数组,将数据分段存储,给每⼀段数据配⼀把锁,也就是所谓的锁分段技
术。

13.lru cache 使⽤hash map 的实现(算法)
1、概念:其实解释起来很简单, LRU就是Least Recently Used的缩写,翻译过来就是“最近最少使⽤ ”。也就是说LRU算法会将最近
最少⽤的缓存移除,让给最新使⽤的缓存。⽽往往最常读取的,也就是读取次数最多的,所以利⽤好LRU算法,我们能够提供对热点
数据的缓存效率,能够提⾼缓存服务的内存使⽤率。
2、实现:
1、思路:
i. 限制缓存⼤⼩
ii. 查询出最近最晚⽤的缓存
iii. 给最近最少⽤的缓存做⼀个标识
2、代码

丰巢科技-Java高级相关推荐

  1. 盒子科技笔试Java_丰巢科技 Java高级笔试面试题 PDF 下载

    1.bio与nio的区别 1.bio同步阻塞io:在此种⽅式下,⽤户进程在发起⼀个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,⽤户 进程才能运⾏.JAVA传统的IO模型属于此种 ...

  2. 2019年丰巢科技Java面试题

    1.bio与nio的区别 1.bio同步阻塞io:在此种⽅式下,⽤户进程在发起⼀个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,⽤户 进程才能运⾏.JAVA传统的IO模型属于此种 ...

  3. 三年经验前端社招——丰巢科技

    大家好,我是若川.最近组织了源码共读活动<1个月,200+人,一起读了4周源码>,已经有超50+人提交了笔记,群里已经有超1200人,感兴趣的可以点此链接扫码加我微信 ruochuan12 ...

  4. 丰巢科技面试题(2019年JAVA)

    1.bio与nio的区别 1.bio同步阻塞io:在此种⽅式下,⽤户进程在发起⼀个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,⽤户 进程才能运⾏.JAVA传统的IO模型属于此种 ...

  5. 用友java面试题_用友网络科技Java高级开发面试题(2019)

    面试岗位:Java高级开发 面试形式:电话面试 这些天在boss上逛了下,看见北京Java开发工资比较诱人,便萌生了去北京的想法,做一名北漂的程序猿.约了几家面试,由于是异地,当然优先电话面了.本篇记 ...

  6. 被约谈后,丰巢道歉并让步了......

    丰巢推会员制一事,引起各界关注与讨论,也让杭州.上海等多地多个小区加入到抵制停用的行列. 丰巢收费一事影响继续扩大,相关部门对丰巢进行了约谈. 5月15日,国家邮政局微信公众号发布消息,针对近期丰巢公 ...

  7. 丰巢拒绝放弃超时收费:不想用,可以别用

    丰巢被用户封巢. 从免费到收费,丰巢快递启动会员制服务一事,将丰巢推到了风口浪尖. 用户.媒体.丰巢高管发言人们.法律人士,相关方面讨论发言了一轮又一轮,此事仍然没有平息. 自5月5日,杭州硬核小区发 ...

  8. 任正非解读华为“狼文化”;丰巢高管:不会放弃超时收费;Debian 10.4 发布 | 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦 ...

  9. 丰巢“羊毛”,出在快递身上,让用户买单!

    点击"技术领导力"关注∆  每天早上8:30推送 作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 4月30日,丰巢宣布,普通会员超 ...

最新文章

  1. DAY74-Django框架(五)
  2. UVA11437 Triangle Fun(相似三角形,做辅助线求解相似比例)
  3. 梯度累加策略对准确率的影响
  4. 24-Thief小偷-Crime犯罪
  5. 造句简单_造句游戏的心理投射:被现代心理学摒弃的网红心理游戏
  6. 【Recat 应用】之 React 脚手架
  7. POJ-2078 Matrix,暴力枚举!
  8. Idea 工具在java文件中怎么避免 import .*包
  9. 在Python27中运行pip install dlib装载库dlib所引起的问题解决
  10. nvidia控制面板点了没反应win7_n卡控制面板没有显示选项修复方法_win7系统nvidia控制面板没有显示选项最佳设置...
  11. 2019最新大数据分析智能BI Tableau教程视频(18章节)
  12. 慧科技:要做小池塘里最大的鱼
  13. Python视频制作 MoviePy框架音频处理模块
  14. 2021年浙大考研计算机专业录取分数线,浙江大学2021年计算机考研拟录取数据分析...
  15. IO与文件读写---使用Apache commons io包提高读写效率
  16. PS学习-锐化和修饰照片(一)--高反差锐化并提升立体感
  17. 元宵佳节,戴铭老师亲自带你分析iOS行业动态!
  18. 如何进行内测分发?蒲公英内测托管平台使用教程
  19. 极速pdf文件打印时此计算机未连接到网络,极速PDF阅读器常见问题及解决方法
  20. 线性代数【初等变换】

热门文章

  1. 【附源码】计算机毕业设计SSM天气预报系统
  2. 服务器里面增加单页网站,单页网站:搜索引擎的最爱
  3. 匹兹堡大学计算机系世界排名,匹兹堡大学计算机排名
  4. ERROR o.s.a.r.l.SimpleMessageListenerContainer : Failed to check/redeclare auto-delete queue(s).
  5. 全志 V85x E907 RISC-V小核开发与使用
  6. Oracle特殊语句
  7. 学习笔记:全局变量定义“无须”初始化,局部变量必须初始化
  8. 打小都说我聪明,自从学了Linux,我才如梦初醒
  9. 动网论坛php源码无法安装,轻松搞定动网论坛与网站的整合
  10. 三角形的决策表优化问题