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

server/2024/9/25 2:31:41/

目录

  • 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.ppmy.cn/server/34666.html

相关文章

震撼来袭!AI创新燃爆2024中关村论坛,唯迈医疗破解心脑血管“命门”危机

4月29日,备受瞩目的2024中关村论坛圆满闭幕。国内领先的介入诊疗全流程解决方案企业——唯迈医疗,携新一代Taikon太空 DSA和介入手术机器人惊艳亮相,以AI赋能介入诊疗,为心脑血管疾病治疗带来了革命性的突破,引发党央媒…

一款自研的热门 AI 产品招募开发者和运营伙伴

🚀 产品介绍 「帝阅」🌟🌟🌟 是一款个人专属知识管理与创造的 AI Native 产品 为用户打造一位专属的侍读助理,帮助提升用户获取知识效率和发挥创造力 让用户更好地去积累知识、管理知识、运用知识 详情见产品手册&am…

沃伦·巴菲特将AI比做原子弹:“瓶中精灵”使诈骗成为最快增长产业|TodayAI

在伯克希尔哈撒韦公司的年度股东大会上,投资大师沃伦巴菲特对人工智能的未来提出了严重警告。巴菲特对这项可以模拟现实并产生误导性内容的技术表示担忧,他认为这将成为史上增长最快的行业之一。 巴菲特在会上说:“当你思考诈骗人们的潜力时…

C++ 类模板

一、类模板的定义 类模板是C中一种特殊的模板,用于创建通用的类。通过类模板,我们可以定义一个通用的类,这个类可以接受不同类型的数据作为其成员或参数。在使用类模板时,我们需要指定具体的数据类型,编译器会根据指定…

【小行星数据预处理py-】

#数据的导入 import pandas as pd import numpy as np#导入EXCEL表格数据;na_values指定了将Excel文件中的空单元格转换为NaN df_excelpd.read_excel(C:/Users/galax/Desktop/MBA小行星数据/4000.xls,na_values0) #定义0为缺失值 see_datadf_excel #统计每一列的缺失值个数 pri…

Python深度学习基于Tensorflow(1)Numpy基础

numpy的重要性不言而喻,一般不涉及到GPU/TPU计算,都是用numpy,常见的np就是这个玩意。其特点就是快!其实如果不涉及到深度学习,还有一个库是很重要的,scipy,集成了很多的东西。 安装和导入如下…

Linux CentOS7部署ASP.NET Core应用程序,并配置Nginx反向代理服务器和Supervisor守护服务

前言: 本篇文章主要讲解的是如何在Linux CentOS7操作系统搭建.NET Core运行环境并发布ASP.NET Core应用程序,以及配置Nginx反向代理服务器。因为公司的项目一直都是托管在Window服务器IIS上,对于Linux服务器上托管.NET Core项目十分好奇。因为…

你认识edge吗,edge是做什么的

简介 Microsoft Edge(研发代号为Project Spartan,又译作微软边缘浏览器,Edge浏览器)是一个由微软研发的基于Chromium开源项目及其他开源软件的网页浏览器,于2015年1月21日公布,2015年3月30日公开发布第一个…