java IO流面试总结
1.什么是比特(Bit),什么是字節(jié)(Byte),什么是字符(Char),它們長(zhǎng)度是多少,各有什么區(qū)別
答案
Bit最小的二進(jìn)制單位 ,是計(jì)算機(jī)的操作部分 取值0或者1
Byte是計(jì)算機(jī)操作數(shù)據(jù)的最小單位由8位bit組成 取值(-128-127)
Char是用戶的可讀寫(xiě)的最小單位,在Java里面由16位bit組成 取值(0-65535)
Bit 是最小單位 計(jì)算機(jī) 只能認(rèn)識(shí) 0或者1?
8個(gè)字節(jié) 是給計(jì)算機(jī)看的
字符 是看到的東西? 一個(gè)字符=二個(gè)字節(jié)
?2.什么是流,按照傳輸?shù)膯挝?分成哪兩種流,并且他們的父類叫什么流是指數(shù)據(jù)的傳輸
答案
字節(jié)流,字符流?
字節(jié)流:InputStream OutputStream
字符流:Reader Writer
3.流按照傳輸?shù)姆较蚩梢苑譃槟膬煞N,分別舉例說(shuō)明
答案
輸入輸出相對(duì)于程序
輸入流InputStream
,輸出流OutputStream
4.按照實(shí)現(xiàn)功能分為哪兩種,分別舉例說(shuō)明
答案
節(jié)點(diǎn)流,處理流
節(jié)點(diǎn)流:OutputStream
處理流: OutputStreamWriter
??5.BufferedReader屬于哪種流,它主要是用來(lái)做什么的,它里面有那些經(jīng)典的方法
答案
屬于處理流中的緩沖流,可以將讀取的內(nèi)容存在內(nèi)存里面,有readLine()方法
??6.什么是節(jié)點(diǎn)流,什么是處理流,它們各有什么用處,處理流的創(chuàng)建有什么特征
答案
節(jié)點(diǎn)流 直接與數(shù)據(jù)源相連,用于輸入或者輸出
處理流:在節(jié)點(diǎn)流的基礎(chǔ)上對(duì)之進(jìn)行加工,進(jìn)行一些功能的擴(kuò)展
處理流的構(gòu)造器必須要 傳入節(jié)點(diǎn)流的子類
??7.如果我要對(duì)字節(jié)流進(jìn)行大量的從硬盤(pán)讀取,要用那個(gè)流,為什么
答案
BufferedInputStream?使用緩沖流能夠減少對(duì)硬盤(pán)的損傷
??8.如果我要打印出不同類型的數(shù)據(jù)到數(shù)據(jù)源,那么最適合的流是那個(gè)流,為什么
答案
Printwriter?可以打印各種數(shù)據(jù)類型
??9.怎么樣把我們控制臺(tái)的輸出改成輸出到一個(gè)文件里面,這個(gè)技術(shù)叫什么
答案
SetOut(printWriter,printStream)重定向
??11.怎么樣把輸出字節(jié)流轉(zhuǎn)換成輸出字符流,說(shuō)出它的步驟
答案
使用?轉(zhuǎn)換處理流OutputStreamWriter?可以將字節(jié)流轉(zhuǎn)為字符流
New OutputStreamWriter(new FileOutputStream(File file));
??12.把包括基本類型在內(nèi)的數(shù)據(jù)和字符串按順序輸出到數(shù)據(jù)源,或者按照順序從數(shù)據(jù)源讀入,一般用哪兩個(gè)流
答案
DataInputStream DataOutputStream
??13.把一個(gè)對(duì)象寫(xiě)入數(shù)據(jù)源或者從一個(gè)數(shù)據(jù)源讀出來(lái),用哪兩個(gè)流
答案
ObjectInputStream ObjectOutputStream
???14.什么叫對(duì)象序列化,什么是反序列化,實(shí)現(xiàn)對(duì)象序列化需要做哪些工作
答案
對(duì)象序列化,將對(duì)象以二進(jìn)制的形式保存在硬盤(pán)上
反序列化;將二進(jìn)制的文件轉(zhuǎn)化為對(duì)象讀取
實(shí)現(xiàn)serializable接口
不想讓字段放在硬盤(pán)上就加transient
??15.如果在對(duì)象序列化的時(shí)候不想給一個(gè)字段的數(shù)據(jù)保存在硬盤(pán)上面,采用那個(gè)關(guān)鍵字?
答案
transient關(guān)鍵字
??16.在實(shí)現(xiàn)序列化接口是時(shí)候一般要生成一個(gè)serialVersionUID字段,它叫做什么,一般有什么用
答案
是版本號(hào),要保持版本號(hào)的一致?來(lái)進(jìn)行序列化
為了防止序列化出錯(cuò)
17.InputStream里的read()返回的是什么,read(byte[] data)是什么意思,返回的是什么值
答案
返回的是所讀取的字節(jié)的int型(范圍0-255)
read(byte [ ] data)將讀取的字節(jié)儲(chǔ)存在這個(gè)數(shù)組
返回的就是傳入數(shù)組參數(shù)個(gè)數(shù)
Read??字節(jié)讀取字節(jié)??字符讀取字符
??18.OutputStream里面的write()是什么意思,write(byte b[], int off, int len)這個(gè)方法里面的三個(gè)參數(shù)分別是什么意思
答案
write將指定字節(jié)傳入數(shù)據(jù)源
Byte b[ ]是byte數(shù)組
b[off]是傳入的第一個(gè)字符
b[off+len-1]是傳入的最后的一個(gè)字符?
len是實(shí)際長(zhǎng)度
??19.流一般需要不需要關(guān)閉,如果關(guān)閉的話在用什么方法,一般要在那個(gè)代碼塊里面關(guān)閉比較好,處理流是怎么關(guān)閉的,如果有多個(gè)流互相調(diào)用傳入是怎么關(guān)閉的?
答案
流一旦打開(kāi)就必須關(guān)閉,使用close方法
放入finally語(yǔ)句塊中(finally?語(yǔ)句一定會(huì)執(zhí)行)
調(diào)用的處理流就關(guān)閉處理流
多個(gè)流互相調(diào)用只關(guān)閉最外層的流
??20.Java中的所有的流可以分為幾大類,它們的名字是什么,各代表什么
答案
分為?字節(jié)輸入流?InputStream?
字節(jié)輸出流?OutputStream
字符輸入流?Reader
字符輸出流?Writer
所有流都是這四個(gè)流的子類
說(shuō)下常用的io流
FileInputStream,FileOutputStream,
BufferedInputStream,BufferedOutputStream
Reader,Writer
BufferedReader,BufferedWriter
21 寫(xiě)一段代碼讀取一個(gè)序列化的對(duì)象一般使用哪種Stream?
22 io流怎樣讀取文件的?
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 說(shuō)說(shuō)你對(duì)io流的理解
24 JAVA的IO流和readLine方法
25 用什么把對(duì)象動(dòng)態(tài)的寫(xiě)入磁盤(pán)中,寫(xiě)入要實(shí)現(xiàn)什么接口。
26 ?FileInputStream 創(chuàng)建詳情,就是怎樣的創(chuàng)建不報(bào)錯(cuò),它列出了幾種形式!
FileInputStream是InputStream的子類,通過(guò)接口定義,子類實(shí)現(xiàn)創(chuàng)建FileInputStream,
27 用io流中的技術(shù),指定一個(gè)文件夾的目錄,獲取此目錄下的所有子文件夾路徑?
28 請(qǐng)問(wèn)你在什么情況下會(huì)在你得java代碼中使用可序列化? 如何實(shí)現(xiàn)java序列化?
28 PrintStream、BufferedWriter、PrintWriter的比較??
PrintStream類的輸出功能非常強(qiáng)大,通常如果需要輸出文本內(nèi)容,都應(yīng)該將輸出流包裝成PrintStream后進(jìn)行輸出。它還提供其他兩項(xiàng)功能。與其他輸出流不同,PrintStream 永遠(yuǎn)不會(huì)拋出 IOException;而是,異常情況僅設(shè)置可通過(guò) checkError 方法測(cè)試的內(nèi)部標(biāo)志。另外,為了自動(dòng)刷新,可以創(chuàng)建一個(gè) PrintStream
BufferedWriter:將文本寫(xiě)入字符輸出流,緩沖各個(gè)字符從而提供單個(gè)字符,數(shù)組和字符串的高效寫(xiě)入。通過(guò)write()方法可以將獲取到的字符輸出,然后通過(guò)newLine()進(jìn)行換行操作。BufferedWriter中的字符流必須通過(guò)調(diào)用flush方法才能將其刷出去。并且BufferedWriter只能對(duì)字符流進(jìn)行操作。如果要對(duì)字節(jié)流操作,則使用BufferedInputStream。
?PrintWriter的println方法自動(dòng)添加換行,不會(huì)拋異常,若關(guān)心異常,需要調(diào)用checkError方法看是否有異常發(fā)生,PrintWriter構(gòu)造方法可指定參數(shù),實(shí)現(xiàn)自動(dòng)刷新緩存(autoflush);
1. 讀寫(xiě)原始數(shù)據(jù),一般采用什么流?(AC )
A InputStream
B DataInputStream
C OutputStream
D BufferedInputStream
2. 為了提高讀寫(xiě)性能,可以采用什么流?( DF)
A InputStream
B DataInputStream
C BufferedReader
D BufferedInputStream
E OutputStream
F BufferedOutputStream
3. 對(duì)各種基本數(shù)據(jù)類型和String類型的讀寫(xiě),采用什么流?( AD)
A DataInputStream
B BufferedReader
C PrintWriter
D DataOutputStream
E ObjectInputStream
F ObjectOutputStream
4. 能指定字符編碼的I/O流類型是:(BH )
A Reader
B InputStreamReader
C BufferedReader
D Writer
E PrintWriter
F ObjectInputStream
G ObjectOutputStream
H OutputStreamWriter
5. File類型中定義了什么方法來(lái)判斷一個(gè)文件是否存在?( D)
A createNewFile
B renameTo
C delete
D exists
6. File類型中定義了什么方法來(lái)創(chuàng)建一級(jí)目錄?( CD)
A createNewFile
B exists
C mkdirs
D mkdir
File類的mkdir方法根據(jù)抽象路徑創(chuàng)建目錄;File類的mkdirs方法根據(jù)抽象路徑創(chuàng)建目錄,包括創(chuàng)建必需但不存在的父目錄
7. 對(duì)文本文件操作用什么I/O流?(AD )A FileReader
B FileInputStream
C RandomAccessFile
D FileWriter
8. 在unix服務(wù)器www.openlab.com.cn上提供了基于TCP的時(shí)間服務(wù)應(yīng)用,該應(yīng)用使用port為13。創(chuàng)建連接到此服務(wù)器的語(yǔ)句是:(A )
A Socket s = new Socket(“www.openlab.com.cn”, 13);
B Socket s = new Socket(“www.openlab.com.cn:13”);
C Socket s = accept(“www.openlab.com.cn”, 13);
9. 創(chuàng)建一個(gè)TCP客戶程序的順序是:(DACBE )
A 獲得I/O流
B 關(guān)閉I/O流
C 對(duì)I/O流進(jìn)行讀寫(xiě)操作
D 建立socket
E 關(guān)閉socket
10. 創(chuàng)建一個(gè)TCP服務(wù)程序的順序是:(BCADEGF )
A 創(chuàng)建一個(gè)服務(wù)線程處理新的連接
B 創(chuàng)建一個(gè)服務(wù)器socket
C 從服務(wù)器socket接受客戶連接請(qǐng)求
D 在服務(wù)線程中,從socket中獲得I/O流
E 對(duì)I/O流進(jìn)行讀寫(xiě)操作,完成與客戶的交互
F 關(guān)閉socket
G 關(guān)閉I/O流
11.?Java?UDP編程主要用到的兩個(gè)類型是:( BD)
A UDPSocket
B DatagramSocket
C UDPPacket
D DatagramPacket
12. TCP/IP是一種:( B)
A 標(biāo)準(zhǔn)?
B 協(xié)議 ?
C 語(yǔ)言 ?
D?算法
總結(jié)
以上是生活随笔為你收集整理的java IO流面试总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: JSON与XML的区别比较(非常全面)
- 下一篇: java网络编程面试题