秋招后端开发面试题 - Java IO


目录

  • Java IO
    • 前言
    • 面试题
      • Java IO 流?
      • 字节流 vs 字符流区别?
      • 字节缓冲流 vs 字符缓冲流?
      • 打印流?
      • System.out.println() 是什么?
      • 随机访问流?
      • 管道流?
      • 讲讲 Filter 流?
      • 常见的 IO 模型?


Java IO

前言

已经找到工作了,分享秋招时的笔记。祝大家都能顺利找到自己心仪的工作。


面试题

Java IO 流?

  • Java 的 IO 流是用于程序和外部资源 (文件、网络连接等) 间传输数据的机制
  • IO 流分为字节流字符流,分别用来处理二进制数据和文本数据

字节流 vs 字符流区别?

  • 字节流
    • 主要用于处理原始的二进制数据
    • 字节为单位进行读写
    • 适用于处理图像、音频和视频等非文本数据
    • 常见的字节流有 InputStreamOutputStream
  • 字符流
    • 主要处理文本数据
    • 字符为单位进行读写
    • 在读写文本数据时会自动进行字符编码转换
    • 适用于处理各种文本文件
    • 常见的字符流有 ReaderWriter

字节缓冲流 vs 字符缓冲流?

  • 字节缓冲流:
    • 字节缓冲流是字节流的增强版本,用于提高读写效率
    • 字节缓冲流内部维护了一个缓冲区,避免频繁的读写磁盘操作
    • 常见的字节缓冲流包括 BufferedInputStreamBufferedOutputStram
  • 字符缓冲流
    • 字符缓冲流是字符流的增强版本,也用于提高读写效率
    • 字符缓冲流和字节缓冲流类似,但字符缓冲流用于处理字符数据,在读写文本数据时会自动进行字符编码转换

打印流?

打印流能够处理数据的格式化,并自动将数据转换为字符串并输出到目标位置
Java 中有两种类型的打印流:字节打印流 PrintStream 和字符打印流 PrintWriter

  • PrintStream
    • 字节打印流
    • OutputStream 的子类
    • 通常用于将数据输出到标准输出流
  • PrintWriter
    • 字符打印流
    • Writer 的子类
    • 通常用于输出文本数据到文件或控制台
    • 可以进行字符编码的转换

System.out.println() 是什么?

  • System.out 是 Java 标准库的静态对象,是 PrintStream 类的实例,是标准输出流,用于向控制台输出文本信息
  • println() 方法是 PrintStream 类的方法,用于输出一行文本并换行

随机访问流?

  • 随机访问流是一种 IO 流,支持在数据流中的任意位置进行读取和写入操作,不用按照顺序进行
  • 相比于顺序访问流,随机访问流允许以随机的方式访问数据,不需要一次性读取整个文件或数据流
  • 典型的随机访问流包括:随机访问文件流、随机访问网络流

管道流?

  • Java 管道流是一种 IO 流类,用于在两个线程之间创建一个通道,使得一个线程中的输出可以被传递到另一个线程中的输入
  • 通过管道流可以在不同线程之间传递数据,实现线程之间的通信

讲讲 Filter 流?

  • Filter 流是装饰者设计模式的实际应用
  • 用于提供额外的功能或转换数据的能力
  • Filter 流基于底层流,在数据的读取或者写入过程中进行额外的处理,例如数据过滤、数据加密

常见的 IO 模型?

  • BIO(Blocking I/O):
    • 堵塞 IO
    • 每当一个线程进行 IO 操作时,会被阻塞,直到 IO 操作完成
  • NIO(Non-blocking I/O):
    • 非堵塞 IO
    • 线程可以在 IO 操作进行的同时,继续执行其他任务,不用一直等待 IO 操作的完成
  • AIO(Asynchronous I/O):
    • 异步非阻塞 IO
    • 在 IO 操作完成后,通知线程处理接收到的数据,而不需要线程一直轮询等待 IO 操作完成

le 使用数组 + 链表

  • 实现线程的方式
    • HashTable 使用 sychronized 来保证线程安全,效率偏低
    • JDK1.7 的 ConcurrentHashMap 使用分段锁技术,将整个 HashMap 分成若干个段,并为每个段分配一个独立的锁
    • JDK1.8 的 ConcurrentHashMap 使用 CAS 和 synchronized 技术保证线程安全,避免了锁的竞争,提高了并发的性能

秋招后端开发面试题系列目录
一、Java
1.1 Java基础上
1.2 Java基础下
1.3 Java集合
1.4 JavaIO
1.5 Java多线程上
1.6Java多线程下
二、JVM
2.1 JVM底层原理
2.2 垃圾回收器
2.3 垃圾回收算法
2.4 类加载机制
2.5 运行时数据区
三、MySQL
3.1 MySQL基础
3.2 事务
3.3 索引
3.4 锁机制
3.5 MVCC
四、Redis
4.1 Redis基础
4.2 缓存原理
五、中间件
5.1 RabbitMQ
六、Spring开源框架
6.1 Spring
6.2 Spring MVC
6.3 Spring Boot
6.4 MyBatis
七、操作系统
八、计算机网络
九、设计模式
十、微服务架构
十一、Spring Cloud分布式
11.1 分布式基础
11.2 Spring Cloud
11.3 GateWay
11.4 Nacos
11.5 OpenFeign
11.6 Ribbon
十二、算法
十三、项目

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

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

相关文章

【前端】6. JavaScript(WebAPI)

WebAPI 背景知识 什么是 WebAPI 前面学习的 JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 EC…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

手动在Ubuntu22.04上部署LAMP环境

简介 LAMP环境是常用的Web开发环境之一,其中LAMP分别代表Linux、Apache、MySQL和PHP。本文介绍如何在Ubuntu操作系统的ECS实例内部署LAMP环境。 准备工作 该实例必须满足以下条件: 实例已分配公网IP地址或绑定弹性公网IP(EIP)。…

关于Dockerfile镜像实例

文章目录 Dockerfile镜像实例一、构建SSH镜像1、建立工作目录2、生成镜像3、启动容器并修改root密码 二、构建systemd镜像1、建立工作目录2、生成镜像3、运行镜像容器4、测试容器systemd 三、构建Nginx镜像1、建立工作目录2、编写Dockerfile脚本3、编写run.sh启动脚本4、生成镜…

源代码加密

企业到底该如何正确选择源代码加密产品? 源代码加密的方法和重点到底是怎样的? 源代码开发环境复杂,涉及的开发软件、文件类型庞杂多变,究竟有什么源代码加密软件能够适应众多开发软件而不影响原有的工作效率? 相信…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头(买回来感觉画质很低,没有描述的4k,不过也够用于学习了),想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头,从而才能够对它进行一系列后续操作,诸如实…

有趣的 CSS 图标整合技术!sprites精灵图,css贴图定位

你好,我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生,一枚程序媛,感谢关注。回复 “前端基础题”,可免费获得前端基础 100 题汇总,回复 “前端工具”,可获取 Web 开发工具合…

vue3.0(三) Vite文件目录结构及SFC语法

文章目录 Vite介绍Vite文件目录结构SFC语法SFC 语法定义bug解决 Vite介绍 为什么使用Vite? 表现 与Vite的ESbuild预绑定使其比使用任何其他JS绑定器都快10到100倍。这是因为它有助于提高页面速度并将CommonJS/UMD模块转换为ESM。 基于Vite文件,“预绑定…

npm详解

npm,全称Node Package Manager 是**随Node.js一起安装的包管理器** 1. **包管理**:允许用户通过命令行安装、更新、删除和管理JavaScript包,这些包是Node.js应用程序的构建块。 2. **依赖管理**:自动处理项目所需的所有依赖项&am…

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域,无论是初级开发者还是资深工程师,都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术,并提供实际调试方法的指导,包括Linux环境下的eBPF和strace,内存泄漏问题的处理,Kubernete…

RocketMq详解:一、RocketMQ 介绍及基本概念

文章目录 前言1.RocketMQ简介2.RocketMQ 特点3.核心特性4.应用场景5.RocketMQ 优势6.RocketMQ 四大核心组件6.1 NameServer1.NameServer作用2.NameServer被设计为无状态的原因3.和NameServer和Zookeeper的区别4.NameServer的高可用保障 6.2 Broker1.Broker部署方式2.高可用与负…

[Algorithm][分治 - 归并排序][排序数组][交易逆序对的总数][计算右侧小于当前元素的个数][翻转对]详细讲解

目录 0.原理讲解1.排序数组1.题目链接2.代码实现 2.交易逆序对的总数1.题目链接2.算法原理详解3.代码实现 3.计算右侧小于当前元素的个数1.题目链接2.算法原理详解3.代码实现 4.翻转对1.题目链接2.算法原理详解3.代码实现 0.原理讲解 归并排序的流程充分的体现了**「分⽽治之」…

监控易:灵活布局与直观展示,重塑网络监控体验

在数字化时代,网络监控的重要性日益凸显。为了更好地满足用户对网络监控的个性化需求,监控易产品不断创新,特别是在布局与展示方面,为用户提供了前所未有的灵活性和直观性。 灵活的布局选择 监控易深知每个用户的管理需求和习惯都…

利用RunnerGo数据大屏强化测试管理与决策

测试平台中的数据大屏在提供实时监控、统计分析、效率提升、制定策略和促进沟通等方面具有重要的意义。它为测试团队提供更全面、更直观的数据支持,有助于提高测试质量和效率,减少风险,并加强团队协作和沟通。 数据大屏也是RunnerGo的核心特…

k8s:精通 Pod 操作的关键命令

在Kubernetes(K8s)中,Pod是最基本的部署单元,包含了运行应用所需要的容器、存储、网络等资源。精通Pod操作的关键命令对于有效地管理和维护Kubernetes集群至关重要。以下是一些关键的Pod操作命令: 查看Pod列表&#x…

用python写单链表

目录 链表的数据结构单链表操作头插入尾插入中间插入 删除查找 总结 链表的数据结构 链表是什么呢,来看下 链表,是一种数据结构。相对于数组而言,是不连续的一块内存空间。不仅如此,而且链表有多种,包括:…

Spring Security OAuth2 统一登录

介绍 Spring Security OAuth2 是一个在 Spring Security 框架基础上构建的 OAuth2 授权服务器和资源服务器的扩展库。它提供了一套功能强大的工具和组件,用于实现 OAuth2 协议中的授权流程、令牌管理和访问控制。 Git地址:yunfeng-boot3-sercurity: Sp…

Java 集合中获取数据的前驱和后继元素

目录 1. NavigableSet 和 NavigableMap 2. ListIterator 3. ConcurrentSkipListSet 和 ConcurrentSkipListMap 4.示列 1. NavigableSet 和 NavigableMap 特性: NavigableSet 和 NavigableMap 接口提供了丰富的方法来获取给定元素的前驱和后继元素。higher(E e) 方法返回比给…

火力发电厂超低排放标准?

目录: 引言火力发电厂超低排放的背景与意义火力发电厂超低排放环保指标解析环保验收要求超低排放的重要性环保验收的流程与要点超低排放技术措施与应用火力发电厂超低排放的监测与评估环保验收中常见问题及解决方案案例分析:成功实现超低排放的火力发电…

uniapp分包,以及通过uni-simple-router进行分包

先说一下uniapp的直接分包方式,很简单: 配置分包信息 打开manifest.json源码视图,添加 “optimization”:{“subPackages”:true} 开启分包优化 我们在根目录下创建一个pagesA文件夹,用来放置需要分包的页面 然后配置路由 运行到…