Java-интервью-сюрприз — базовый поток ввода-вывода в Java

интервью

Освойте систему наследования InputStream, OutputStream, Reader, Writer.

1. Что такое бит (Bit), что такое байт (Byte), что такое символ (Char), какова их длина и в чем отличия

Отвечать

Bit最小的二进制单位 ,是计算机的操作部分 取值0或者1
Byte是计算机操作数据的最小单位由8位bit组成 取值(-128-127)
Char是用户的可读写的最小单位,在Java里面由16位bit组成 取值(0-65535)

Bit 是最小单位 计算机 只能认识 0或者1 

8个字节 是给计算机看的
字符 是看到的东西  一个字符=二个字节

2. Что такое поток, на какие два потока делятся в зависимости от единицы передачи и как называется их родительский класс?Поток относится к передаче данных

Отвечать

字节流,字符流 
字节流:InputStream OutputStream
字符流:Reader Writer

3. На какие два потока можно разделить по направлению передачи и соответственно привести примеры

Отвечать

输入输出相对于程序
输入流InputStream
输出流OutputStream

4. По реализации которых делятся два вида функций, соответственно приведите примеры

Отвечать

节点流,处理流
节点流:OutputStream
处理流:OutputStreamWriter

5. Какой поток принадлежит буферреджеру, к тому, что в основном используется, и в нем есть эти классические методы

Отвечать

属于处理流中的缓冲流,可以将读取的内容存在内存里面,有readLine()方法

6. Что такое поток узла, что такое поток обработки, в чем польза каждого из них и каковы характеристики создания потока обработки.

Отвечать

节点流 直接与数据源相连,用于输入或者输出
处理流:在节点流的基础上对之进行加工,进行一些功能的扩展
处理流的构造器必须要 传入节点流的子类

7. Если я собираюсь много читать с диска в потоке байтов, какой поток мне следует использовать и почему?

Отвечать

BufferedInputStream 使用缓冲流能够减少对硬盘的损伤

8. Если я хочу выводить разные типы данных в источник данных, то наиболее подходящий поток — это именно этот поток, почему

Отвечать

Printwriter 可以打印各种数据类型

9. Как изменить вывод нашей консоли на вывод в файл, как называется эта технология

Отвечать

SetOut(printWriter,printStream)重定向

10. При каких обстоятельствах вы бы использовали сериализацию в своем Java-коде? Как реализовать сериализацию Java?

Отвечать

把一个对象写入数据源或者从一个数据源读出来,使用可序列化,需要实现Serializable接口

11. Как преобразовать выходной поток байтов в выходной поток символов и рассказать о шагах этого

Отвечать

使用 转换处理流OutputStreamWriter 可以将字节流转为字符流
New OutputStreamWriter(new FileOutputStream(File file));

12. Выходные данные и строки, включающие основные типы к источнику данных в порядке или прочитанные из источника данных в порядке, которые обычно используются два потока

Отвечать

DataInputStream DataOutputStream

13. Какие два потока используются для записи объекта в источник данных или чтения его из источника данных

Отвечать

ObjectInputStream ObjectOutputStream

14. Что такое сериализация объектов, что такое десериализация и что нужно сделать, чтобы добиться сериализации объектов

Отвечать

对象序列化,将对象以二进制的形式保存在硬盘上
反序列化;将二进制的文件转化为对象读取
实现serializable接口

不想让字段放在硬盘上就加transient

15. Если вы не хотите сохранять данные поля на жестком диске при сериализации объекта, какое ключевое слово следует использовать?

Отвечать

transient关键字

16. При реализации интерфейса сериализации обычно необходимо генерировать поле serialVersionUID, как оно называется и каково его общее использование?

Отвечать

是版本号,要保持版本号的一致 来进行序列化

为了防止序列化出错

17. Что возвращает функция read() в InputStream, что означает функция read(byte[] data) и какое значение она возвращает

Отвечать

返回的是所读取的字节的int型(范围0-255)
read(byte [ ] data)将读取的字节储存在这个数组
返回的就是传入数组参数个数

Read  字节读取字节  字符读取字符

18. Что означает write() в OutputStream Что означают три параметра в методе write(byte b[], int off, int len)?

Отвечать

write将指定字节传入数据源
Byte b[ ]是byte数组
b[off]是传入的第一个字符
b[off+len-1]是传入的最后的一个字符 
len是实际长度

19.Поток вообще не нужно закрывать.Если он закрыт,то каким методом?Вообще лучше закрывать в том блоке кода.Как закрыть поток обработки и как закрыть если их несколько потоки, вызывающие друг друга и проходящие?

Отвечать

流一旦打开就必须关闭,使用close方法
放入finally语句块中(finally 语句一定会执行)
调用的处理流就关闭处理流
多个流互相调用只关闭最外层的流

20. Все потоки в Java можно разделить на несколько категорий, как они называются и что представляют

Отвечать

分为 字节输入流 InputStream 
字节输出流 OutputStream
字符输入流 Reader
字符输出流 Writer
所有流都是这四个流的子类

21. Расскажите о часто используемых потоках ввода-вывода

Отвечать

InputStream,OutputStream,FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStreamReader,WriterBufferedReader,BufferedWriter

22. Как поток io читает файл?

Отвечать

使用File对象获取文件路径,通过字符流Reader加入文件,使用字符缓存流BufferedReader处理Reader,再定义一个字符串,循环遍历出文件。代码如下:File file = new File("d:/spring.txt");try {Reader reader = new FileReader(file);BufferedReader buffered = new BufferedReader(reader);String data = null;while((data = buffered.readLine())!=null){System.out.println(data);}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

23. Расскажите о своем понимании io stream

Отвечать

Io流主要是用来处理输入输出问题,常用的io流有InputStream,OutputStream,Reader,Writer等

24. Поток ввода-вывода JAVA и метод readLine

Отвечать

Java的io流用来处理输入输出问题,readLine是BufferedReader里的一个方法,用来读取一行。

25. Что используется для динамической записи объекта на диск и какой интерфейс нужно реализовать для записи.

Отвечать

ObjectInputStream,需要实现Serializable接口

26.FileInputStream создать еще, для создания чего не дано, в нем перечислено несколько форм!

Отвечать

FileInputStream是InputStream的子类,通过接口定义,子类实现创建FileInputStream,

Заявление об авторских правах: эта статья является оригинальной статьей блоггера CSDN "Java Fighting the World" и соответствует соглашению об авторских правах CC 4.0 by-sa. Пожалуйста, приложите ссылку на оригинальный источник и это заявление для перепечатки. Оригинальная ссылка:blog.CSDN.net/Baidu_37107…