黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) 學(xué)習(xí)攻略 Java學(xué)習(xí) 精選10道java io面試題,趕快收藏起來(lái)

精選10道java io面試題,趕快收藏起來(lái)

更新時(shí)間:2020-04-29 14:22:08 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽7733次

    1、IO里面的常見類,字節(jié)流、字符流、接口、實(shí)現(xiàn)類、方法阻塞?

    輸入流就是從外部文件輸入到內(nèi)存,輸出流主要是從內(nèi)存輸出到文件。

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

    java中的阻塞式方法是指在程序調(diào)用改方法時(shí),必須等待輸入數(shù)據(jù)可用或者檢測(cè)到輸入結(jié)束或者拋出異常,否則程序會(huì)一直停留在該語(yǔ)句上,不會(huì)執(zhí)行下面的語(yǔ)句。比如read()和readLine()方法。

    2、談?wù)剬?duì)NIO的認(rèn)知?

    對(duì)于NIO,它是非阻塞式,核心類:

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

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

    3.Channel一個(gè)新的原始I/O抽象,用于讀寫B(tài)uffer類型,通道可以認(rèn)為是一種連接,可以是到特定設(shè)備,程序或者是網(wǎng)絡(luò)的連接。

    3、字節(jié)流和字符流的區(qū)別?

    字符流和字節(jié)流的使用非常相似,但是實(shí)際上字節(jié)流的操作不會(huì)經(jīng)過緩沖區(qū)(內(nèi)存)而是直接操作文本本身的,而字符流的操作會(huì)先經(jīng)過緩沖區(qū)(內(nèi)存)然后通過緩沖區(qū)再操作文件

    以字節(jié)為單位輸入輸出數(shù)據(jù),字節(jié)流按照8位傳輸

    以字符為單位輸入輸出數(shù)據(jù),字符流按照16位傳輸

    4、NIO和傳統(tǒng)的IO有什么區(qū)別?

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

    2、傳統(tǒng)io的管道是單向的,nio的管道是雙向的。

    3、兩者都是同步的,也就是java程序親力親為的去讀寫數(shù)據(jù),不管傳統(tǒng)io還是nio都需要read和write方法,這些都是java程序調(diào)用的而不是系統(tǒng)幫我們調(diào)用的,nio2.0里這點(diǎn)得到了改觀,即使用異步非阻塞AsynchronousXXX四個(gè)類來(lái)處理。

    5、BIO和NIO和AIO的區(qū)別以及應(yīng)用場(chǎng)景?

    同步:java自己去處理io。

    異步:java將io交給操作系統(tǒng)去處理,告訴緩存區(qū)大小,處理完成回調(diào)。

    阻塞:使用阻塞IO時(shí),Java調(diào)用會(huì)一直阻塞到讀寫完成才返回。

    非阻塞:使用非阻塞IO時(shí),如果不能立馬讀寫,Java調(diào)用會(huì)馬上返回,當(dāng)IO事件分發(fā)器通知可讀寫時(shí)在進(jìn)行讀寫,不斷循環(huán)直到讀寫完成。

    BIO:同步并阻塞,服務(wù)器的實(shí)現(xiàn)模式是一個(gè)連接一個(gè)線程,這樣的模式很明顯的一個(gè)缺陷是:由于客戶端連接數(shù)與服務(wù)器線程數(shù)成正比關(guān)系,可能造成不必要的線程開銷,嚴(yán)重的還將導(dǎo)致服務(wù)器內(nèi)存溢出。當(dāng)然,這種情況可以通過線程池機(jī)制改善,但并不能從本質(zhì)上消除這個(gè)弊端。

    NIO:在JDK1.4以前,Java的IO模型一直是BIO,但從JDK1.4開始,JDK引入的新的IO模型NIO,它是同步非阻塞的。而服務(wù)器的實(shí)現(xiàn)模式是多個(gè)請(qǐng)求一個(gè)線程,即請(qǐng)求會(huì)注冊(cè)到多路復(fù)用器Selector上,多路復(fù)用器輪詢到連接有IO請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程處理。

    AIO:JDK1.7發(fā)布了NIO2.0,這就是真正意義上的異步非阻塞,服務(wù)器的實(shí)現(xiàn)模式為多個(gè)有效請(qǐng)求一個(gè)線程,客戶端的IO請(qǐng)求都是由OS先完成再通知服務(wù)器應(yīng)用去啟動(dòng)線程處理(回調(diào))。

    應(yīng)用場(chǎng)景:并發(fā)連接數(shù)不多時(shí)采用BIO,因?yàn)樗幊毯驼{(diào)試都非常簡(jiǎn)單,但如果涉及到高并發(fā)的情況,應(yīng)選擇NIO或AIO,更好的建議是采用成熟的網(wǎng)絡(luò)通信框架Netty。

    6、什么是Java序列化,如何實(shí)現(xiàn)Java序列化?

    序列化就是一種用來(lái)處理對(duì)象流的機(jī)制,將對(duì)象的內(nèi)容進(jìn)行流化。可以對(duì)流化后的對(duì)象進(jìn)行讀寫操作,可以將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間。序列化是為了解決在對(duì)象流讀寫操作時(shí)所引發(fā)的問題

    序列化的實(shí)現(xiàn):將需要被序列化的類實(shí)現(xiàn)Serialize接口,沒有需要實(shí)現(xiàn)的方法,此接口只是為了標(biāo)注對(duì)象可被序列化的,然后使用一個(gè)輸出流(如:FileOutputStream)來(lái)構(gòu)造一個(gè)ObjectOutputStream(對(duì)象流)對(duì)象,再使用ObjectOutputStream對(duì)象的write(Objectobj)方法就可以將參數(shù)obj的對(duì)象寫出

    7、PrintStream、BufferedWriter、PrintWriter的比較?

    1、PrintStream類的輸出功能非常強(qiáng)大,通常如果需要輸出文本內(nèi)容,都應(yīng)該將輸出流包裝成PrintStream后進(jìn)行輸出。它還提供其他兩項(xiàng)功能。與其他輸出流不同,PrintStream永遠(yuǎn)不會(huì)拋出IOException;而是,異常情況僅設(shè)置可通過checkError方法測(cè)試的內(nèi)部標(biāo)志。另外,為了自動(dòng)刷新,可以創(chuàng)建一個(gè)PrintStream

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

    3、PrintWriter的println方法自動(dòng)添加換行,不會(huì)拋異常,若關(guān)心異常,需要調(diào)用checkError方法看是否有異常發(fā)生,PrintWriter構(gòu)造方法可指定參數(shù),實(shí)現(xiàn)自動(dòng)刷新緩存(autoflush)

    8、什么是節(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)流的子類

    9、什么是IO流?

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

    10、有哪些可用的Filter流?

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

精選10道java io面試題,趕快收藏起來(lái)

 以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“精選10道java io面試題,趕快收藏起來(lái)”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 天天射视频 | nu77亚洲综合日韩精品 | 日韩久久一级毛片 | 色噜噜成人综合网站 | 91视频观看免费 | 中文字幕在线视频免费观看 | 羞羞视频免费观看 | 91在线精品亚洲一区二区 | 成人影院一区二区三区 | 视频一区二区三区在线观看 | 午夜18免费观看 | 日韩精品视频在线播放 | 国产综合精品日本亚洲777 | 一本大道香蕉大vr在线吗视频 | 全部毛片免费看 | 夜夜骑天天干 | bt天堂中文资源在线 | 国产亚洲欧美日韩在线观看不卡 | 亚色影视| 日韩欧美成人免费中文字幕 | 一本大道高清香蕉中文大在线 | 青草91| 草比片| 日本一区二区三区免费观看 | 日本xx13一18处交高清 | 成年看片免费高清观看 | 一级做a爱片特黄在线观看 一级做a爱片就在线看 | 国产综合视频在线 | 欧美成人黄色片 | 黄色网址视频在线观看 | 国产一级在线播放 | 一级做a爰久久毛片武则天 一级做a免费视频 | 成年激情网 | 大好硬好深好爽想要视频 | 欧美一级片在线观看 | 欧美一区二区影院 | 黄色成人小视频 | 日韩一级免费视频 | 欧美黑人粗暴另类多交 | 日韩精品视频免费网址 | 黄色污污 |