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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) Java泛型面試題總結(jié)

Java泛型面試題總結(jié)

更新時間:2019-11-27 15:57:31 來源:動力節(jié)點(diǎn) 瀏覽2535次



  1.Java中的泛型是什么?使用泛型的好處是什么?


  這是在各種Java泛型面試中,一開場你就會被問到的問題中的一個,主要集中在初級和中級面試中。那些擁有Java1.4或更早版本的開發(fā)背景的人都知道,在集合中存儲對象并在使用前進(jìn)行類型轉(zhuǎn)換是多么的不方便。泛型防止了那種情況的發(fā)生。它提供了編譯期的類型安全,確保你只能把正確類型的對象放入集合中,避免了在運(yùn)行時出現(xiàn)ClassCastException。


  2.Java的泛型是如何工作的?什么是類型擦除?


  這是一道更好的泛型面試題。泛型是通過類型擦除來實(shí)現(xiàn)的,編譯器在編譯時擦除了所有類型相關(guān)的信息,所以在運(yùn)行時不存在任何類型相關(guān)的信息。例如List<String>在運(yùn)行時僅用一個List來表示。這樣做的目的,是確保能和Java5之前的版本開發(fā)二進(jìn)制類庫進(jìn)行兼容。你無法在運(yùn)行時訪問到類型參數(shù),因?yàn)榫幾g器已經(jīng)把泛型類型轉(zhuǎn)換成了原始類型。根據(jù)你對這個泛型問題的回答情況,你會得到一些后續(xù)提問,比如為什么泛型是由類型擦除來實(shí)現(xiàn)的或者給你展示一些會導(dǎo)致編譯器出錯的錯誤泛型代碼。請閱讀我的Java中泛型是如何工作的來了解更多信息。


  3.什么是泛型中的限定通配符和非限定通配符?


  這是另一個非常流行的Java泛型面試題。限定通配符對類型進(jìn)行了限制。有兩種限定通配符,一種是<?extendsT>它通過確保類型必須是T的子類來設(shè)定類型的上界,另一種是<?superT>它通過確保類型必須是T的父類來設(shè)定類型的下界。泛型類型必須用限定內(nèi)的類型來進(jìn)行初始化,否則會導(dǎo)致編譯錯誤。另一方面<?>表示了非限定通配符,因?yàn)?lt;?>可以用任意類型來替代。更多信息請參閱我的文章泛型中限定通配符和非限定通配符之間的區(qū)別。


  4.List<?extendsT>和List<?superT>之間有什么區(qū)別?


  這和上一個面試題有聯(lián)系,有時面試官會用這個問題來評估你對泛型的理解,而不是直接問你什么是限定通配符和非限定通配符。這兩個List的聲明都是限定通配符的例子,List<?extendsT>可以接受任何繼承自T的類型的List,而List<?superT>可以接受任何T的父類構(gòu)成的List。例如List<?extendsNumber>可以接受List<Integer>或List<Float>。在本段出現(xiàn)的連接中可以找到更多信息。


  5.如何編寫一個泛型方法,讓它能接受泛型參數(shù)并返回泛型類型?


  編寫泛型方法并不困難,你需要用泛型類型來替代原始類型,比如使用T,EorK,V等被廣泛認(rèn)可的類型占位符。泛型方法的例子請參閱Java集合類框架。最簡單的情況下,一個泛型方法可能會像這樣:


  publicVput(Kkey,Vvalue){


  returncache.put(key,value);


  }


  6.Java中如何使用泛型編寫帶有參數(shù)的類?


  這是上一道面試題的延伸。面試官可能會要求你用泛型編寫一個類型安全的類,而不是編寫一個泛型方法。關(guān)鍵仍然是使用泛型類型來代替原始類型,而且要使用JDK中采用的標(biāo)準(zhǔn)占位符。


  7.編寫一段泛型程序來實(shí)現(xiàn)LRU緩存?


  對于喜歡Java編程的人來說這相當(dāng)于是一次練習(xí)。給你個提示,LinkedHashMap可以用來實(shí)現(xiàn)固定大小的LRU緩存,當(dāng)LRU緩存已經(jīng)滿了的時候,它會把最老的鍵值對移出緩存。LinkedHashMap提供了一個稱為removeEldestEntry()的方法,該方法會被put()和putAll()調(diào)用來刪除最老的鍵值對。當(dāng)然,如果你已經(jīng)編寫了一個可運(yùn)行的JUnit測試,你也可以隨意編寫你自己的實(shí)現(xiàn)代碼。


  8.你可以把List<String>傳遞給一個接受List<Object>參數(shù)的方法嗎?


  對任何一個不太熟悉泛型的人來說,這個Java泛型題目看起來令人疑惑,因?yàn)檎Э雌饋鞸tring是一種Object,所以List<String>應(yīng)當(dāng)可以用在需要List<Object>的地方,但是事實(shí)并非如此。真這樣做的話會導(dǎo)致編譯錯誤。如果你再深一步考慮,你會發(fā)現(xiàn)Java這樣做是有意義的,因?yàn)長ist<Object>可以存儲任何類型的對象包括String,Integer等等,而List<String>卻只能用來存儲Strings。


  List<Object>objectList;


  List<String>stringList;


  objectList=stringList;//compilationerrorincompatibletypes


  9.Array中可以用泛型嗎?


  這可能是Java泛型面試題中最簡單的一個了,當(dāng)然前提是你要知道Array事實(shí)上并不支持泛型,這也是為什么JoshuaBloch在EffectiveJava一書中建議使用List來代替Array,因?yàn)長ist可以提供編譯期的類型安全保證,而Array卻不能。


  10.如何阻止Java中的類型未檢查的警告?


  如果你把泛型和原始類型混合起來使用,例如下列代碼,Java5的javac編譯器會產(chǎn)生類型未檢查的警告,例如


  List<String>rawList=newArrayList()


       以上就是動力節(jié)點(diǎn)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java泛型面試題總結(jié)”的內(nèi)容,希望對大家有幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時為你服務(wù)。


相關(guān)推薦


最新最全java面試題及答案(初級到高級)


史上最全的中高級JAVA工程師面試題及答案匯總


Java高級開發(fā)工程師面試題


2019史上最全java面試題題庫大全800題


哪有資深java工程師面試題


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

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 俄罗斯毛片视频 | 四虎视频国产精品免费 | 91资源在线播放 | 日韩色区 | 伊人日韩 | 爱爱小视频成人免费 | 日本三级中文字幕 | 久久99精品久久久久久 | 亚洲在线国产 | 激情五月婷婷红人馆 | 久夜色精品国产一区二区三区 | 91成人在线免费视频 | 高清国产天干天干天干不卡顿 | www.夜夜操.com | 伊人99在线观看 | 国产乳摇福利视频在线观看 | 亚洲欧洲国产精品你懂的 | 性做久久久久久久久男女 | 欧美综合成人网 | 在线高清免费爱做网 | 亚洲一区二区免费在线观看 | 欧美在线色 | 91亚洲国产系列精品第56页 | 国产亚洲欧美精品久久久 | 97久草| 久久中文字幕一区二区三区 | 精品国产一区二区三区久久影院 | 免费观看欧美一级高清 | 国产护士资源总站 | 欧美亚洲精品在线 | 日韩在线观看一区二区三区 | 国产成人福利在线 | 青青青免费高清视频在线 | 久久免费成人 | 亚洲欧美综合国产精品一区 | 9999人体做爰大胆视频 | 久久精品亚洲牛牛影视 | aaaaaa毛片免费看 | 99re视频精品全部免费 | 玖玖精品在线视频 | 自拍 欧美 在线 综合 另类 |