面试题百日百刷-java基础篇(九)

news2024/12/23 17:35:09

锁屏面试题百日百刷,每个工作日坚持更新面试题。请看到最后就能获取你想要的,接下来的是今日的面试题:

1.Java 中IO 流分为几种?

按照流的流向分,可以分为输入流和输出流;

按照操作单元划分,可以划分为字节流和字符流;

按照流的角色划分为节点流和处理流。

Java Io 流共涉及 40 多个类,这些类看上去很杂乱,但实际上很有规则,而且彼此之间存在非常紧密的

联系, Java I0 流的 40 多个类都是从如下 4 个抽象类基类中派生出来的。

InputStream/Reader: 所有的输入流的基类,前者是字节输入流,后者是字符输入流。

OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。

按操作方式分类结构图:

2.既然有了字节流,为什么还要有字符流?

问题本质想问:不管是文件读写还是网络发送接收,信息的最小存储单元都是字节,那为什么 I/O 流操作要分为字节流操作和字符流操作呢?

回答:字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好。

3.BIO,NIO,AIO 有什么区别?

BIO (Blocking I/O): 同步阻塞 I/O 模式,数据的读取写入必须阻塞在一个线程内等待其完成。在活动连接数不是特别高(小于单机 1000)的情况下,这种模型是比较不错的,可以让每一个连接专注于自己的 I/O 并且编程模型简单,也不用过多考虑系统的过载、限流等问题。线程池本身就是一个天然的漏斗,可以缓冲一些系统处理不了的连接或请求。但是,当面对十万甚至百万级连接的时候,传统的 BIO 模型是无能为力的。因此,我们需要一种更高效的 I/O 处理模型来应对更高的并发量。

NIO (Non-blocking/New I/O): NIO 是一种同步非阻塞的 I/O 模型,在 Java 1.4 中引入了 NIO 框架,对应 java.nio 包,提供了 Channel , Selector,Buffer 等抽象。NIO 中的 N 可以理解为 Nonblocking,不单纯是 New。它支持面向缓冲的,基于通道的 I/O 操作方法。NIO 提供了与传统BIO 模型中的 Socket 和 ServerSocket 相对应的 SocketChannel 和ServerSocketChannel两种不同的套接字通道实现,两种通道都支持阻塞和非阻塞两种模式。阻塞模式使用就像传统中的支持一样,比较简单,但是性能和可靠性都不好;非阻塞模式正好与之相反。对于低负载、低并发的应用程序,可以使用同步阻塞 I/O 来提升开发速率和更好的维护性;对于高负载、高并发的(网络)应用,应使用 NIO 的非阻塞模式来开发

AIO (Asynchronous I/O): AIO 也就是 NIO 2。在 Java 7 中引入了 NIO 的改进版 NIO 2,它是异步非阻塞的 IO 模型。异步 IO 是基于事件和回调机制实现的,也就是应用操作之后会直接返回,不会堵塞在那里,当后台处理完成,操作系统会通知相应的线程进行后续的操作。AIO 是异步 IO 的缩写,虽然 NIO 在网络操作中,提供了非阻塞的方法,但是 NIO 的 IO 行为还是同步的。对于NIO 来说,我们的业务线程是在 IO 操作准备好时,得到通知,接着就由这个线程自行进行 IO 操作,IO 操作本身是同步的。查阅网上相关资料,我发现就目前来说 AIO 的应用还不是很广泛,Netty 之前也尝试使用过 AIO,不过又放弃了。

全部内容在[git](https://gitee.com/zjlalaforgit/interview)上,了解更多请点我头像或到我的主页去获得,谢谢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/570591.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

BGP 基础知识学习笔记

今天海翎光电的小编为大家介绍一下BGP的相关基础知识,文章浅显易懂,适合对BGP完全没有了解的同学。 BGP(边界网关协议)是将互联网联合在一起的路由协议,海翎光电的小编将解释在哪些情况下我们需要 BGP 以及它是如何工作…

为什么你工作很努力却没有晋升?分析晋升的关键点!

见字如面,我是军哥! 昨天有一位二线大厂的程序员读者和我吐槽,说马上公司一波人晋升,可是晋升名额并么有他,但是他在这家公司已经干了三年了,工作也很努力,996 更是家常便饭,难道是大…

C语言小游戏的实现——扫雷(使用C语言基础语法)

前言 结合前边我们所学的C语言知识,本期我们将使用C语言实现一个简单的小游戏——扫雷 目录 前言 总体框架设计 多文件分装程序 各功能模块化实现 初始化棋盘 棋盘打印 埋雷 判赢与排雷 游戏逻辑安排 总结 总体框架设计 和三子棋相同,游戏开始时…

109.(cesium篇)cesium椎体上下跳动+旋转

地图之家总目录(订阅之前请先查看该博客) 地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍 文章末尾处提供保证可运行完整代码包,运行如有问题,可“私信”博主。 效果如下所示: 下面献上完整代码,代码重要位置会做相应解释 <html lang="en…

python+django高校疫情防控管理系统vue

随着信息化时代的到来&#xff0c;管理系统都趋向于智能化、系统化&#xff0c;高校疫情防控管理系统也不例外&#xff0c;但目前国内的有些学校仍都使用人工管理&#xff0c;学校规模越来越大&#xff0c;同时信息量也越来越庞大&#xff0c;人工管理显然已无法应对时代的变化…

屏幕挂灯是不是智商税?明基ScreenBar Halo屏幕挂灯初体验

目录 一、屏幕挂灯是不是智商税&#xff1f;二、文心一言眼里的屏幕挂灯1、明基ScreenBar Halo屏幕挂灯2、屏幕挂灯和普通台灯哪个好&#xff1f; 三、屏幕挂灯初体验四、使用体验五、无线控制器六、专业角度分析1、屏幕工作照明&#xff0c;不是随便一盏灯就可以2、引导光线照…

记录--超长溢出头部省略打点,坑这么大,技巧这么多?

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 在业务中&#xff0c;有这么一种场景&#xff0c;表格下的某一列 ID 值&#xff0c;文本超长了&#xff0c;正常而言会是这样&#xff1a; 通常&#xff0c;这种情况都需要超长省略溢出打点&#xff0…

2023网络安全工程师面试宝典(附答案)

2023年即将过去一半&#xff0c;先来灵魂三连问&#xff1a; 年初定的目标完成多少了&#xff1f;薪资涨了吗&#xff1f;女朋友找到了吗&#xff1f; ​好了&#xff0c;不扎大家的心了&#xff0c;接下来进入正文。 1、SQL注入的原理是什么&#xff1f; SQL注入攻击是通过将…

1722_PolySpace Bug Finder的几种启动方式

全部学习汇总&#xff1a; GreyZhang/g_matlab: MATLAB once used to be my daily tool. After many years when I go back and read my old learning notes I felt maybe I still need it in the future. So, start this repo to keep some of my old learning notes servral …

【算法】使用数位算法生成0至某个数之间的整数(for循环之外的另一种实现方式,蛮长见识的)

导入&#xff1a; 对某个整数进行遍历&#xff0c;按常规的编程思维都是 for(int i0;i<number;i){} 但是如果这个数比较大&#xff0c;大到无法的话&#xff0c;可能使用普通for循环方式进行遍历就有些吃力了。 那么针对这个问题&#xff0c;可以考虑深度搜索算法dfs来辅助完…

Linux--ServerProgramming--(1)TCP\IP协议族

1.TCP/IP 协议族 1.1 TCP/IP协议族及主要协议 TCP/IP 协议族是一个四层协议系统。自上而下为&#xff08;如下图所示&#xff09;&#xff1a;应用层传输层网络层数据链路层 应用层负责处理应用程序逻辑&#xff0c;在用户空间实现。&#xff08;少数服务器程序在内核中实现。…

快速上手kettle(一)壶之简介

Linux核心命令系列文章目录 快速上手kettle&#xff08;一&#xff09;&#xff1a;壶之简介 快速上手kettle&#xff08;二&#xff09;&#xff1a;Kettle初体验&#xff08;博主正在玩命更新中&#xff09; 快速上手kettle&#xff08;三&#xff09;&#xff1a;Kettle转换…

艾迪普发布新一代国产化“3D引擎+工具+平台”,加速释放数字内容生产力

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 艾迪普的2023新产品发布会在5月20日在北京隆重举行&#xff0c;该发布会以"向新出发 智见未来"为主题&#xff0c;艾迪普重磅推出了新一代实时三维图形图像引擎IDP Engine 4.0、iVis无代码编程数字孪生应用开发工…

谷歌云开启GPU算力狂飙,驱动AIGC时代加速到来

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 随着人工智能的飞速发展&#xff0c;尤其是大型AI模型、AIGC的崛起&#xff0c;对AI算力产生了巨大的需求。以GPU为核心的算力供给&#xff0c;已经成为大模型、AIGC乃至整个智能产业发展的关键基础设施。因此&#xff0c;对…

springboot+vue基于java的用户行为的个性化新闻推荐系统

使用个性化新闻服务平台相对传统个性化新闻服务方式具备很多优点&#xff1a;首先可以大幅提高个性化新闻服务信息检索&#xff0c;只需输入新闻相关信息就能在数秒内反馈想要的结果&#xff1b;其次可存储大量的个性化新闻服务信息&#xff0c;同时个性化新闻服务安全性有更高…

Java内存模型 JMM

并发编程模型的两个关键问题 线程之间如何通信及线程之间如何同步。 线程之间如何通信&#xff1a;共享内存&#xff0c;消息传递线程之间如何同步通信是指线程之间以何种机制来 交换信息同步是指程序中用于控制不同线程间 操作发生相对顺序 的机制在共享内存的并发模型里&a…

案例21:Java农产品供求信息系统设计与实现开题报告

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

腾讯、头条 | 算法岗详细面经

作者 | 常青czq 整理 | NewBeeNLP 面试锦囊之面经分享系列&#xff0c;持续更新中 赶紧后台回复"面试"加入讨论组交流吧 写在前面 本硕华南某985&#xff0c;有过两段实习经历&#xff0c;一段是大厂的算法实习&#xff0c;另一段是招行Fintech实习&#xff0c;虽然…

如何在Linux桌面上创建快捷方式?

以下内容源于网络资源的学习与整理&#xff0c;如有侵权请告知删除。 一般而言&#xff0c;Linux环境下在命令行上通过软件包管理工具安装软件&#xff0c;或者从网站直接下载已经编译好的二进制软件包&#xff0c;软件安装好之后不会在桌面上创建快捷方式。接下来如果想要在桌…

iOS推送播放语音播报更新

接上篇如何让iOS推送播放语音&#xff0c;之前的结论是iOS如果需要送审商店只能播放本地的mp3文件&#xff0c;这里更新一下&#xff1a; 更新 语音的播放&#xff0c;最终调用的方法是UNNotificationSound(named: xxx)&#xff0c;而这个方法官方文档注释如下&#xff1a; // …