java泛型面试_Java泛型面试问题
生活随笔
收集整理的這篇文章主要介紹了
java泛型面试_Java泛型面试问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
java泛型面試
Java面試中的通用面試問題在相當(dāng)長(zhǎng)的時(shí)間內(nèi)在Java 5周圍越來越普遍,許多應(yīng)用程序都轉(zhuǎn)移到Java 5上,并且?guī)缀跛行碌腏ava開發(fā)都發(fā)生在Tiger(Java 5的代號(hào))上。 泛型和Java 5功能(例如Enum)的重要性,Collection實(shí)用程序在Java面試中越來越受歡迎。 如果您不熟悉有界和無界的通配符 , 泛型如何在內(nèi)部工作 ,類型擦除以及是否熟悉用Java編寫參數(shù)化的泛型類和方法,那么泛型采訪問題會(huì)變得非常棘手。 準(zhǔn)備進(jìn)行仿制藥面試的最佳方法是,嘗試對(duì)仿制藥的各種功能進(jìn)行簡(jiǎn)單的編程。 無論如何,在這篇Java訪談文章中,我們將看到一些流行的訪談問題,以及有關(guān)Java中泛型的答案。1. Java中的泛型是什么? 使用泛型有什么優(yōu)勢(shì)?
這是在任何Java訪談中都針對(duì)泛型提出的首批訪談問題之一,主要是初學(xué)者和中級(jí)。 那些來自Java 5之前的背景的人知道,將對(duì)象存儲(chǔ)在Collection中然后在使用它之前將其轉(zhuǎn)換回正確的Type是多么不便。 泛型阻止了這些。 它提供了編譯時(shí)的類型安全性,并確保僅在集合中插入正確的Type,并避免在運(yùn)行時(shí)出現(xiàn)ClassCastException。2.泛型如何在Java中工作? 什么是類型擦除?
這是泛型中較好的面試問題之一。 泛型使用Type Erase實(shí)現(xiàn),編譯器在編譯時(shí)擦除所有與類型相關(guān)的信息,并且在運(yùn)行時(shí)不提供與類型相關(guān)的信息。 例如List <String>在運(yùn)行時(shí)僅由List表示。 這樣做是為了確保與Java 5之前開發(fā)的庫(kù)具有二進(jìn)制兼容性。您在運(yùn)行時(shí)無法訪問Type參數(shù),并且編譯器在運(yùn)行時(shí)將泛型轉(zhuǎn)換為Raw類型 。 根據(jù)您的回答,您可以根據(jù)該通用面試問題得到很多后續(xù)問題,例如, 為什么使用類型擦除來實(shí)現(xiàn)泛型或提供一些無效的泛型代碼而導(dǎo)致編譯器錯(cuò)誤。 閱讀我的文章泛型如何在Java中工作以獲取更多詳細(xì)信息3.泛型中有界和無界通配符是什么?
這是泛型上另一個(gè)非常流行的Java面試問題 。 有界通配符是那些強(qiáng)加給Type的通配符。 有兩種有界通配符<? 擴(kuò)展T>,通過確保類型必須是T和<?的子類來施加上限。 超級(jí)T>,其中通過確保類型必須施加的下限必須是T的超類。此泛型類型必須在邊界內(nèi)用Type實(shí)例化,否則會(huì)導(dǎo)致編譯錯(cuò)誤。 另一方面,<?>表示和無限制類型,因?yàn)?lt;?>可以用任何Type替換。 請(qǐng)參閱我在泛型中有界和無界通配符之間的職位差異的更多信息。4. List <有 什么區(qū)別 ? 擴(kuò)展T> 和 List <? 超級(jí)T> ?
這與以前的仿制藥面試問題有關(guān),有一段時(shí)間而不是詢問什么是有界和無界通配符,訪調(diào)員會(huì)提出此問題以評(píng)估您對(duì)仿制藥的理解。 兩個(gè)List聲明都是有界通配符的示例,List <? 擴(kuò)展T>將接受任何類型為擴(kuò)展T的列表,而列表<? super T>將接受任何類型為T的超類的List。例如List <? 擴(kuò)展Number>可以接受List <Integer>或List <Float>。 在上面的鏈接中查看更多。5.如何編寫一個(gè)接受泛型參數(shù)并返回泛型的泛型方法?
編寫通用方法并不困難,而不是使用原始類型,您需要使用通用類型,例如T,E或K,V,它們是Type,Element和Key,Value的占位符。 查看Java Collection框架以獲取泛型方法的示例。 最簡(jiǎn)單的通用方法如下所示: public V put(K key, V value) {return cache.put(key, value); }6.如何使用泛型用Java寫參數(shù)化類?
這是以前的Java泛型采訪問題的擴(kuò)展。 而不是要求編寫泛型方法,Interviewer可能會(huì)要求使用泛型編寫類型安全的類 。 再次,關(guān)鍵是不要使用原始類型,而需要使用泛型類型,并且始終使用JDK中使用的標(biāo)準(zhǔn)占位符。7.編寫一個(gè)使用Generics實(shí)現(xiàn)LRU緩存的程序。
這是喜歡Java編碼的任何人的練習(xí)。 一個(gè)提示是,可以使用LinkedHashMap實(shí)現(xiàn)固定大小的LRU緩存,其中需要在緩存已滿時(shí)刪除最舊的條目。 LinkedHashMap提供了一個(gè)稱為removeEldestEntry()的方法,該方法由put()和putAll()調(diào)用,可用于指示刪除最舊的條目。 只要您具有工作版本的書面版本以及單元測(cè)試,就可以自由提出自己的實(shí)現(xiàn)。8.是否可以將 List <String> 傳遞給接受List <Object>的方法
Java中的這個(gè)通用面試問題可能會(huì)使任何對(duì)Generics不太熟悉的人感到困惑,因?yàn)檎б豢?#xff0c;它看起來像String是對(duì)象,因此可以在需要List <Object>的地方使用List <String>,但這不是事實(shí)。 這將導(dǎo)致編譯錯(cuò)誤。 如果您更進(jìn)一步,這確實(shí)是有道理的,因?yàn)長(zhǎng)ist <Object>可以存儲(chǔ)任何內(nèi)容,包括String,Integer等,但是List <String>僅可以存儲(chǔ)String。 List<Object> objectList; List<String> stringList;objectList = stringList; //compilation error incompatible types9.我們可以在數(shù)組中使用泛型嗎?
如果您知道Array不支持Generics的事實(shí),這可能是Java中最簡(jiǎn)單的泛型訪談問題,這就是為什么Joshua bloach建議使用List而不是Array的原因,因?yàn)長(zhǎng)ist可以提供比Array更可靠的編譯時(shí)間類型安全性 。10.如何抑制Java中未經(jīng)檢查的警告?
如果您使用合并原始類型和泛型類型,則Java 5的Javac編譯器會(huì)生成未經(jīng)檢查的警告,例如 List<String> rawList = new ArrayList()Note: Hello.java uses unchecked or unsafe operations.; 可以通過使用@SuppressWarnings(“ unchecked”)注釋來取消顯示。 這些是Java中一些常見的泛型面試問題和答案 。 這些通用面試問題都不是強(qiáng)硬的,而是基于通用的基礎(chǔ)知識(shí)。 任何對(duì)泛型有相當(dāng)了解的Java程序員都必須熟悉Java中的這些泛型問題。 如果您在任何面試中都提出了其他很好的通用問題,或者您正在尋找Java中任何通用面試問題的答案,那么請(qǐng)?jiān)谠u(píng)論部分中發(fā)布。參考:我們的JCG合作伙伴 Javin Paul在Javarevisited博客上針對(duì)程序員和開發(fā)人員的Java泛型的10個(gè)訪談問題 。
翻譯自: https://www.javacodegeeks.com/2012/07/java-generics-interview-questions.html
java泛型面試
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的java泛型面试_Java泛型面试问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JUnit 5 –设置
- 下一篇: 海马电脑模拟器安卓版(海马模拟器手机版)