日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

java泛型面试_Java泛型面试问题

發(fā)布時間:2023/12/3 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java泛型面试_Java泛型面试问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

java泛型面試

Java面試中的通用面試問題在相當(dāng)長的時間內(nèi)在Java 5周圍越來越普遍,許多應(yīng)用程序都轉(zhuǎn)移到Java 5上,并且?guī)缀跛行碌腏ava開發(fā)都發(fā)生在Tiger(Java 5的代號)上。 泛型和Java 5功能(例如Enum)的重要性,Collection實用程序在Java面試中越來越受歡迎。 如果您不熟悉有界和無界的通配符 , 泛型如何在內(nèi)部工作 ,類型擦除以及是否熟悉用Java編寫參數(shù)化的泛型類和方法,那么泛型采訪問題會變得非常棘手。 準(zhǔn)備進行仿制藥面試的最佳方法是,嘗試對仿制藥的各種功能進行簡單的編程。 無論如何,在這篇Java訪談文章中,我們將看到一些流行的訪談問題,以及有關(guān)Java中泛型的答案。

1. Java中的泛型是什么? 使用泛型有什么優(yōu)勢?

這是在任何Java訪談中都針對泛型提出的首批訪談問題之一,主要是初學(xué)者和中級。 那些來自Java 5之前的背景的人知道,將對象存儲在Collection中然后在使用它之前將其轉(zhuǎn)換回正確的Type是多么不便。 泛型阻止了這些。 它提供了編譯時的類型安全性,并確保僅在集合中插入正確的Type,并避免在運行時出現(xiàn)ClassCastException。

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

這是泛型中較好的面試問題之一。 泛型使用Type Erase實現(xiàn),編譯器在編譯時擦除所有與類型相關(guān)的信息,并且在運行時不提供與類型相關(guān)的信息。 例如List <String>在運行時僅由List表示。 這樣做是為了確保與Java 5之前開發(fā)的庫具有二進制兼容性。您在運行時無法訪問Type參數(shù),并且編譯器在運行時將泛型轉(zhuǎn)換為Raw類型 。 根據(jù)您的回答,您可以根據(jù)該通用面試問題得到很多后續(xù)問題,例如, 為什么使用類型擦除來實現(xiàn)泛型或提供一些無效的泛型代碼而導(dǎo)致編譯器錯誤。 閱讀我的文章泛型如何在Java中工作以獲取更多詳細信息

3.泛型中有界和無界通配符是什么?

這是泛型上另一個非常流行的Java面試問題 。 有界通配符是那些強加給Type的通配符。 有兩種有界通配符<? 擴展T>,通過確保類型必須是T和<?的子類來施加上限。 超級T>,其中通過確保類型必須施加的下限必須是T的超類。此泛型類型必須在邊界內(nèi)用Type實例化,否則會導(dǎo)致編譯錯誤。 另一方面,<?>表示和無限制類型,因為<?>可以用任何Type替換。 請參閱我在泛型中有界和無界通配符之間的職位差異的更多信息。

4. List <有 什么區(qū)別 擴展T> List <? 超級T>

這與以前的仿制藥面試問題有關(guān),有一段時間而不是詢問什么是有界和無界通配符,訪調(diào)員會提出此問題以評估您對仿制藥的理解。 兩個List聲明都是有界通配符的示例,List <? 擴展T>將接受任何類型為擴展T的列表,而列表<? super T>將接受任何類型為T的超類的List。例如List <? 擴展Number>可以接受List <Integer>或List <Float>。 在上面的鏈接中查看更多。

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

編寫通用方法并不困難,而不是使用原始類型,您需要使用通用類型,例如T,E或K,V,它們是Type,Element和Key,Value的占位符。 查看Java Collection框架以獲取泛型方法的示例。 最簡單的通用方法如下所示: public V put(K key, V value) {return cache.put(key, value); }

6.如何使用泛型用Java寫參數(shù)化類?

這是以前的Java泛型采訪問題的擴展。 而不是要求編寫泛型方法,Interviewer可能會要求使用泛型編寫類型安全的類 。 再次,關(guān)鍵是不要使用原始類型,而需要使用泛型類型,并且始終使用JDK中使用的標(biāo)準(zhǔn)占位符。

7.編寫一個使用Generics實現(xiàn)LRU緩存的程序。

這是喜歡Java編碼的任何人的練習(xí)。 一個提示是,可以使用LinkedHashMap實現(xiàn)固定大小的LRU緩存,其中需要在緩存已滿時刪除最舊的條目。 LinkedHashMap提供了一個稱為removeEldestEntry()的方法,該方法由put()和putAll()調(diào)用,可用于指示刪除最舊的條目。 只要您具有工作版本的書面版本以及單元測試,就可以自由提出自己的實現(xiàn)。

8.是否可以將 List <String> 傳遞給接受List <Object>的方法

Java中的這個通用面試問題可能會使任何對Generics不太熟悉的人感到困惑,因為乍一看,它看起來像String是對象,因此可以在需要List <Object>的地方使用List <String>,但這不是事實。 這將導(dǎo)致編譯錯誤。 如果您更進一步,這確實是有道理的,因為List <Object>可以存儲任何內(nèi)容,包括String,Integer等,但是List <String>僅可以存儲String。 List<Object> objectList; List<String> stringList;objectList = stringList; //compilation error incompatible types

9.我們可以在數(shù)組中使用泛型嗎?

如果您知道Array不支持Generics的事實,這可能是Java中最簡單的泛型訪談問題,這就是為什么Joshua bloach建議使用List而不是Array的原因,因為List可以提供比Array更可靠的編譯時間類型安全性 。

10.如何抑制Java中未經(jīng)檢查的警告?

如果您使用合并原始類型和泛型類型,則Java 5的Javac編譯器會生成未經(jīng)檢查的警告,例如 List<String> rawList = new ArrayList()Note: Hello.java uses unchecked or unsafe operations.; 可以通過使用@SuppressWarnings(“ unchecked”)注釋來取消顯示。 這些是Java中一些常見的泛型面試問題和答案 。 這些通用面試問題都不是強硬的,而是基于通用的基礎(chǔ)知識。 任何對泛型有相當(dāng)了解的Java程序員都必須熟悉Java中的這些泛型問題。 如果您在任何面試中都提出了其他很好的通用問題,或者您正在尋找Java中任何通用面試問題的答案,那么請在評論部分中發(fā)布。

參考:我們的JCG合作伙伴 Javin Paul在Javarevisited博客上針對程序員和開發(fā)人員的Java泛型的10個訪談問題 。


翻譯自: https://www.javacodegeeks.com/2012/07/java-generics-interview-questions.html

java泛型面試

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的java泛型面试_Java泛型面试问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。