大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 精選10道java io面試題,趕快收藏起來

精選10道java io面試題,趕快收藏起來

更新時間:2020-04-29 14:22:08 來源:動力節點 瀏覽7859次

    1、IO里面的常見類,字節流、字符流、接口、實現類、方法阻塞?

    輸入流就是從外部文件輸入到內存,輸出流主要是從內存輸出到文件。

    IO里面常見的類,第一印象就只知道IO流中有很多類,IO流主要分為字符流和字節流。字符流中有抽象類InputStream和OutputStream,它們的子類FileInputStream,FileOutputStream,BufferedOutputStream等。字符流BufferedReader和Writer等。都實現了Closeable,Flushable,Appendable這些接口。程序中的輸入輸出都是以流的形式保存的,流中保存的實際上全都是字節文件。

    java中的阻塞式方法是指在程序調用改方法時,必須等待輸入數據可用或者檢測到輸入結束或者拋出異常,否則程序會一直停留在該語句上,不會執行下面的語句。比如read()和readLine()方法。

    2、談談對NIO的認知?

    對于NIO,它是非阻塞式,核心類:

    1.Buffer為所有的原始類型提供(Buffer)緩存支持。

    2.Charset字符集編碼解碼解決方案

    3.Channel一個新的原始I/O抽象,用于讀寫Buffer類型,通道可以認為是一種連接,可以是到特定設備,程序或者是網絡的連接。

    3、字節流和字符流的區別?

    字符流和字節流的使用非常相似,但是實際上字節流的操作不會經過緩沖區(內存)而是直接操作文本本身的,而字符流的操作會先經過緩沖區(內存)然后通過緩沖區再操作文件

    以字節為單位輸入輸出數據,字節流按照8位傳輸

    以字符為單位輸入輸出數據,字符流按照16位傳輸

    4、NIO和傳統的IO有什么區別?

    1、傳統IO一般是一個線程等待連接,連接過來之后分配給processor線程,processor線程與通道連接后如果通道沒有數據過來就會阻塞(線程被動掛起)不能做別的事情。NIO則不同,首先,在selector線程輪詢的過程中就已經過濾掉了不感興趣的事件,其次,在processor處理感興趣事件的read和write都是非阻塞操作即直接返回的,線程沒有被掛起。

    2、傳統io的管道是單向的,nio的管道是雙向的。

    3、兩者都是同步的,也就是java程序親力親為的去讀寫數據,不管傳統io還是nio都需要read和write方法,這些都是java程序調用的而不是系統幫我們調用的,nio2.0里這點得到了改觀,即使用異步非阻塞AsynchronousXXX四個類來處理。

    5、BIO和NIO和AIO的區別以及應用場景?

    同步:java自己去處理io。

    異步:java將io交給操作系統去處理,告訴緩存區大小,處理完成回調。

    阻塞:使用阻塞IO時,Java調用會一直阻塞到讀寫完成才返回。

    非阻塞:使用非阻塞IO時,如果不能立馬讀寫,Java調用會馬上返回,當IO事件分發器通知可讀寫時在進行讀寫,不斷循環直到讀寫完成。

    BIO:同步并阻塞,服務器的實現模式是一個連接一個線程,這樣的模式很明顯的一個缺陷是:由于客戶端連接數與服務器線程數成正比關系,可能造成不必要的線程開銷,嚴重的還將導致服務器內存溢出。當然,這種情況可以通過線程池機制改善,但并不能從本質上消除這個弊端。

    NIO:在JDK1.4以前,Java的IO模型一直是BIO,但從JDK1.4開始,JDK引入的新的IO模型NIO,它是同步非阻塞的。而服務器的實現模式是多個請求一個線程,即請求會注冊到多路復用器Selector上,多路復用器輪詢到連接有IO請求時才啟動一個線程處理。

    AIO:JDK1.7發布了NIO2.0,這就是真正意義上的異步非阻塞,服務器的實現模式為多個有效請求一個線程,客戶端的IO請求都是由OS先完成再通知服務器應用去啟動線程處理(回調)。

    應用場景:并發連接數不多時采用BIO,因為它編程和調試都非常簡單,但如果涉及到高并發的情況,應選擇NIO或AIO,更好的建議是采用成熟的網絡通信框架Netty。

    6、什么是Java序列化,如何實現Java序列化?

    序列化就是一種用來處理對象流的機制,將對象的內容進行流化。可以對流化后的對象進行讀寫操作,可以將流化后的對象傳輸于網絡之間。序列化是為了解決在對象流讀寫操作時所引發的問題

    序列化的實現:將需要被序列化的類實現Serialize接口,沒有需要實現的方法,此接口只是為了標注對象可被序列化的,然后使用一個輸出流(如:FileOutputStream)來構造一個ObjectOutputStream(對象流)對象,再使用ObjectOutputStream對象的write(Objectobj)方法就可以將參數obj的對象寫出

    7、PrintStream、BufferedWriter、PrintWriter的比較?

    1、PrintStream類的輸出功能非常強大,通常如果需要輸出文本內容,都應該將輸出流包裝成PrintStream后進行輸出。它還提供其他兩項功能。與其他輸出流不同,PrintStream永遠不會拋出IOException;而是,異常情況僅設置可通過checkError方法測試的內部標志。另外,為了自動刷新,可以創建一個PrintStream

    2、BufferedWriter:將文本寫入字符輸出流,緩沖各個字符從而提供單個字符,數組和字符串的高效寫入。通過write()方法可以將獲取到的字符輸出,然后通過newLine()進行換行操作。BufferedWriter中的字符流必須通過調用flush方法才能將其刷出去。并且BufferedWriter只能對字符流進行操作。如果要對字節流操作,則使用BufferedInputStream

    3、PrintWriter的println方法自動添加換行,不會拋異常,若關心異常,需要調用checkError方法看是否有異常發生,PrintWriter構造方法可指定參數,實現自動刷新緩存(autoflush)

    8、什么是節點流,什么是處理流,各有什么好處,處理流的創建有什么特征?

    節點流直接與數據源相連,用于輸入或者輸出

    處理流:在節點流的基礎上對之進行加工,進行一些功能的擴展

    處理流的構造器必須要傳入節點流的子類

    9、什么是IO流?

    它是一種數據的流從源頭流到目的地。比如文件拷貝,輸入流和輸出流都包括了。輸入流從文件中讀取數據存儲到進程(process)中,輸出流從進程中讀取數據然后寫入到目標文件。

    10、有哪些可用的Filter流?

    在java.io包中主要由4個可用的filterStream。兩個字節filterstream,兩個字符filterstream.分別是FilterInputStream,FilterOutputStream,FilterReaderandFilterWriter.這些類是抽象類,不能被實例化的。

精選10道java io面試題,趕快收藏起來

 以上就是動力節點java培訓機構的小編針對“精選10道java io面試題,趕快收藏起來”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 四虎永久免费网站 | 操一操干一干 | 日韩精品一区二区三区在线观看 | 黄色四虎影院 | 欧美一区二区高清 | 夜夜爽天天操 | 国产高清在线精品 | 日韩新片王 | 国产精品主播在线 | 亚洲麻豆精品 | 国产网红在线视频 | 欧美精品成人一区二区在线观看 | 日韩欧美~中文字幕 | 国产精品夜色一区二区三区 | 狠狠狠地在啪线香蕉 | 水浒传删减剧情在线观看 | 亚洲一区中文字幕在线 | 成人毛片免费观看视频在线 | 欧美视频一区二区三区 | 操久久久 | 久久久久久综合成人精品 | 亚洲欧美中日韩 | 九九免费观看全部免费视频 | 丁香婷婷综合网 | 国产黄色91 | 亚洲在线精品视频 | 精品综合久久久久久97超人该 | 99网站在线观看 | 羞羞的视频在线观看 | 国产精品久久久久久久久免费hd | 免费久久精品国产片香蕉 | www操操 | 毛片视频网站在线观看 | 亚洲欧美日韩国产一区二区精品 | 2019精品国产品免费观看 | 五月天婷婷在线观看高清 | 亚洲福利影院 | 奇米影视第四色7777 | 91精品全国免费观看青青 | 国产精品不卡在线观看 | 一区二区三区美女视频 |