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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 39道高級java面試題及答案(最新)

39道高級java面試題及答案(最新)

更新時間:2019-09-20 11:57:42 來源:動力節(jié)點 瀏覽3368次

 

Java軟件工程師作為在軟件編程語言中使用非常廣泛的軟件編程語言之一,受歡迎程度也是非常高的,在軟件人才的需求方面同樣是數(shù)量巨大,現(xiàn)在軟件公司的java軟件開發(fā)工程師的職位空缺也是非常大的。當然軟件公司在招收開發(fā)人員時都是會對本人進行一定的了解的,因此啊面試環(huán)節(jié)是絕對不能少的,那么今年最新的高級java面試題都有哪些呢?下面就隨動力節(jié)點java培訓(xùn)機構(gòu)一起來了解一下。

 

timg (5).jpg

 

  1.隊列和棧是什么,列出它們的區(qū)別?

 

  棧和隊列兩者都被用來預(yù)存儲數(shù)據(jù)。java.util.Queue是一個接口,它的實現(xiàn)類在Java并發(fā)包中。隊列允許先進先出(FIFO)檢索元素,但并非總是這樣。Deque接口允許從兩端檢索元素。

 

  棧與隊列很相似,但它允許對元素進行后進先出(LIFO)進行檢索。

 

  Stack是一個擴展自Vector的類,而Queue是一個接口。

 

 

  2.Collections類是什么?

 

  Java.util.Collections是一個工具類僅包含靜態(tài)方法,它們操作或返回集合。它包含操作集合的多態(tài)算法,返回一個由指定集合支持的新集合和其它一些內(nèi)容。這個類包含集合框架算法的方法,比如折半搜索、排序、混編和逆序等。

 

 

  3.Comparable和Comparator接口是什么?

 

  如果我們想使用Array或Collection的排序方法時,需要在自定義類里實現(xiàn)Java提供Comparable接口。Comparable接口有compareTo(T OBJ)方法,它被排序方法所使用。我們應(yīng)該重寫這個方法,如果“this”對象比傳遞的對象參數(shù)更小、相等或更大時,它返回一個負整數(shù)、0或正整數(shù)。但是,在大多數(shù)實際情況下,我們想根據(jù)不同參數(shù)進行排序。比如,作為一個CEO,我想對雇員基于薪資進行排序,一個HR想基于年齡對他們進行排序。這就是我們需要使用Comparator接口的情景,因為Comparable.compareTo(Object o)方法實現(xiàn)只能基于一個字段進行排序,我們不能根據(jù)對象排序的需要選擇字段。Comparator接口的compare(Object o1, Object o2)方法的實現(xiàn)需要傳遞兩個對象參數(shù),若第一個參數(shù)比第二個小,返回負整數(shù);若第一個等于第二個,返回0;若第一個比第二個大,返回正整數(shù)。

 

 

  4.Comparable和Comparator接口有何區(qū)別?

 

  Comparable和Comparator接口被用來對對象集合或者數(shù)組進行排序。Comparable接口被用來提供對象的自然排序,我們可以使用它來提供基于單個邏輯的排序。

 

  Comparator接口被用來提供不同的排序算法,我們可以選擇需要使用的Comparator來對給定的對象集合進行排序。

 

 

  5.我們?nèi)绾螌σ唤M對象進行排序?

 

  如果我們需要對一個對象數(shù)組進行排序,我們可以使用Arrays.sort()方法。如果我們需要排序一個對象列表,我們可以使用Collection.sort()方法。兩個類都有用于自然排序(使用Comparable)或基于標準的排序(使用Comparator)的重載方法sort()。Collections內(nèi)部使用數(shù)組排序方法,所有它們兩者都有相同的性能,只是Collections需要花時間將列表轉(zhuǎn)換為數(shù)組。

 

 

  6.當一個集合被作為參數(shù)傳遞給一個函數(shù)時,如何才可以確保函數(shù)不能修改它?

 

  在作為參數(shù)傳遞之前,我們可以使用Collections.unmodifiableCollection(Collection c)方法創(chuàng)建一個只讀集合,這將確保改變集合的任何操作都會拋出UnsupportedOperationException。

 

 

  7.我們?nèi)绾螐慕o定集合那里創(chuàng)建一個synchronized的集合?

 

  我們可以使用Collections.synchronizedCollection(Collection c)根據(jù)指定集合來獲取一個synchronized(線程安全的)集合。

 

 

  8.集合框架里實現(xiàn)的通用算法有哪些?

 

  Java集合框架提供常用的算法實現(xiàn),比如排序和搜索。Collections類包含這些方法實現(xiàn)。大部分算法是操作List的,但一部分對所有類型的集合都是可用的。部分算法有排序、搜索、混編、最大最小值。

 

 

  9.大寫的O是什么?舉幾個例子?

 

  大寫的O描述的是,就數(shù)據(jù)結(jié)構(gòu)中的一系列元素而言,一個算法的性能。Collection類就是實際的數(shù)據(jù)結(jié)構(gòu),我們通?;跁r間、內(nèi)存和性能,使用大寫的O來選擇集合實現(xiàn)。比如:例子1:ArrayList的get(index i)是一個常量時間操作,它不依賴list中元素的數(shù)量。所以它的性能是O(1)。例子2:一個對于數(shù)組或列表的線性搜索的性能是O(n),因為我們需要遍歷所有的元素來查找需要的元素。

 

 

  10.與Java集合框架相關(guān)的有哪些最好的實踐?

 

  (1)根據(jù)需要選擇正確的集合類型。比如,如果指定了大小,我們會選用Array而非ArrayList。如果我們想根據(jù)插入順序遍歷一個Map,我們需要使用TreeMap。如果我們不想重復(fù),我們應(yīng)該使用Set。

 

  (2)一些集合類允許指定初始容量,所以如果我們能夠估計到存儲元素的數(shù)量,我們可以使用它,就避免了重新哈?;虼笮≌{(diào)整。

 

  (3)基于接口編程,而非基于實現(xiàn)編程,它允許我們后來輕易地改變實現(xiàn)。

 

  (4)總是使用類型安全的泛型,避免在運行時出現(xiàn)ClassCastException。

 

  (5)使用JDK提供的不可變類作為Map的key,可以避免自己實現(xiàn)hashCode()和equals()。

 

  (6)盡可能使用Collections工具類,或者獲取只讀、同步或空的集合,而非編寫自己的實現(xiàn)。它將會提供代碼重用性,它有著更好的穩(wěn)定性和可維護性。

 

 

  11. 什么時候使用斷言?

 

  斷言不應(yīng)該用于驗證輸入數(shù)據(jù)到一個public方法或命令行參數(shù)。IllegalArgumentException會是一個更好的選擇。在public方法中,只用斷言來檢查它們根本不應(yīng)該發(fā)生的情況。

 

 

  12. 什么是垃圾回收?

 

  垃圾回收是Java中自動內(nèi)存管理的另一種叫法。垃圾回收的目的是為程序保持盡可能多的可用堆(heap)。 JVM會刪除堆上不再需要從堆引用的對象。

 

 

  13. 用一個例子解釋垃圾回收?

 

  比方說,下面這個方法就會從函數(shù)調(diào)用。

 

  void method(){

 

  Calendar calendar = new GregorianCalendar(2000,10,30);

 

  System.out.println(calendar);

 

  }

 

  通過函數(shù)第一行代碼中參考變量calendar,在堆上創(chuàng)建了GregorianCalendar類的一個對象。

 

  函數(shù)結(jié)束執(zhí)行后,引用變量calendar不再有效。因此,在方法中沒有創(chuàng)建引用到對象。

 

  JVM認識到這一點,會從堆中刪除對象。這就是所謂的垃圾回收。

 

 

  14. 什么時候運行垃圾回收?

 

  垃圾回收在JVM突發(fā)奇想和心血來潮時運行(沒有那么糟糕)。運行垃圾收集的可能情況是:

 

  堆可用內(nèi)存不足

 

  CPU空閑

 

 

  15. 垃圾回收的最佳做法?

 

  用編程的方式,我們可以要求(記住這只是一個請求——不是一個命令)JVM通過調(diào)用System.gc()方法來運行垃圾回收。

 

  當內(nèi)存已滿,且堆上沒有對象可用于垃圾回收時,JVM可能會拋出OutOfMemoryException。

 

  對象在被垃圾回收從堆上刪除之前,會運行finalize()方法。我們建議不要用finalize()方法寫任何代碼。

 

 

  16. 什么是初始化數(shù)據(jù)塊?

 

  初始化數(shù)據(jù)塊——當創(chuàng)建對象或加載類時運行的代碼。

 

  有兩種類型的初始化數(shù)據(jù)塊:

 

  靜態(tài)初始化器:加載類時運行的的代碼

 

  實例初始化器:創(chuàng)建新對象時運行的代碼

 

 

  17、面向?qū)ο蟮奶卣饔心男┓矫?/strong>

 

 ?、俪橄螅?/span>

 

  抽象是忽略一個主題中與當前目標無關(guān)的那些方面,以便更充分地注意與當前目標有關(guān)的方面。抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。抽象包括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。

 

 ?、诶^承:

 

  繼承是一種聯(lián)結(jié)類的層次模型,并且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。

 

 ?、鄯庋b:

 

  封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@個基本概念,即現(xiàn)實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。

 

 ?、芏鄳B(tài)性:

 

  多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)性。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢,很好的解決了應(yīng)用程序函數(shù)同名問題。

 

 

  18、String是最基本的數(shù)據(jù)類型嗎?

 

  基本數(shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。

 

  java.lang.String類是final類型的,因此不可以繼承這個類、不能修改這個類。為了提高效率節(jié)省空間,我們應(yīng)該用StringBuffer類

 

 

  19、int 和 Integer 有什么區(qū)別?

 

  Java 提供兩種不同的類型:引用類型和原始類型(或內(nèi)置類型)。Int是java的原始數(shù)據(jù)類型,Integer是java為int提供的封裝類。

 

 

  20、String 和StringBuffer的區(qū)別?

 

  JAVA平臺提供了兩個類:String和StringBuffer,它們可以儲存和操作字符串,即包含多個字符的字符數(shù)據(jù)。這個String類提供了數(shù)值不可改變的字符串。而這個StringBuffer類提供的字符串進行修改。當你知道字符數(shù)據(jù)要改變的時候你可以使用StringBuffer。典型地,你可以使用StringBuffers來動態(tài)構(gòu)造字符數(shù)據(jù)。

 

 

  21、運行時異常與一般異常有何異同?

 

  異常表示程序運行過程中可能出現(xiàn)的非正常狀態(tài),運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。

 

 

  22、說出Servlet的生命周期,并說出Servlet和CGI的區(qū)別?

 

  Servlet被服務(wù)器實例化后,容器運行其init方法,請求到達時運行其service方法,service方法自動派遣運行與請求對應(yīng)的doXXX方法(doGet,doPost)等,當服務(wù)器決定將實例銷毀的時候調(diào)用其destroy方法。

 

  與cgi的區(qū)別在于servlet處于服務(wù)器進程中,它通過多線程方式運行其service方法,一個實例可以服務(wù)于多個請求,并且其實例一般不會銷毀,而CGI對每個請求都產(chǎn)生新的進程,服務(wù)完成后銷毀,所以效率上低于servlet。

 

 

  23、說出ArrayList,Vector, LinkedList的存儲性能和特性

 

  ArrayList和Vector都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector由于使用了synchronized方法(線程安全),通常性能上較ArrayList差,而LinkedList使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。

 

 

  24、EJB是基于哪些技術(shù)實現(xiàn)的?

 

  EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技術(shù)實現(xiàn)。

 

  SessionBean在J2EE應(yīng)用程序中被用來完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問數(shù)據(jù)庫、調(diào)用其他EJB組件。EntityBean被用來代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。

 

  對于客戶機,SessionBean是一種非持久性對象,它實現(xiàn)某些在服務(wù)器上運行的業(yè)務(wù)邏輯。

 

  對于客戶機,EntityBean是一種持久性對象,它代表一個存儲在持久性存儲器中的實體的對象視圖,或是一個由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實體。

 

  Session Bean 還可以再細分為 Stateful Session Bean 與 Stateless Session Bean ,這兩種的 Session Bean都可以將系統(tǒng)邏輯放在 method之中執(zhí)行,不同的是 Stateful Session Bean 可以記錄呼叫者的狀態(tài),因此通常來說,一個使用者會有一個相對應(yīng)的 Stateful Session Bean 的實體。

 

 

  25、Collection 和 Collections的區(qū)別?

 

  Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.

 

  Collections是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。

 

 

  26、&和&&的區(qū)別?

 

  &是位運算符,表示按位與運算,&&是邏輯運算符,表示邏輯與(and)。

 

 

  27.Java是從()語言改進重新設(shè)計。 

 

A.Ada 

 

B.C++ 

 

C.Pasacal 

 

D.BASIC 

 

答案:B

 

 

  28.下列語句哪一個正確()

 

  A. Java程序經(jīng)編譯后會產(chǎn)生machine code 

 

B.Java程序經(jīng)編譯后會產(chǎn)生byte code 

 

C.Java程序經(jīng)編譯后會產(chǎn)生DLL 

 

D.以上都不正確

 

答案:B

 

 

 

  29.下列說法正確的有()

 

  A.class中的constructor不可省略

 

  B. constructor必須與class同名,但方法不能與class同名 

 

C.constructor在一個對象被new時執(zhí)行 

 

D.一個class只能定義一個constructor 

 

答案:C

 

 

  30.提供Java存取數(shù)據(jù)庫能力的包是() 

 

A.java.sql 

 

B.java.awt 

 

C.java.lang 

 

D.java.swing 

 

答案:A

 

 

  31.下列運算符合法的是() 

 

A.&& 

 

B.<> 

 

C.if 

 

D.:= 

 

答案:A

 

 

  32.執(zhí)行如下程序代碼 a=0;c=0; do{ --c; a=a-1;

 

  }while(a>0);

 

  后,C的值是() 

 

A.0 

 

B.1

 

C.-1

 

  D.死循環(huán)

 

  答案:C

 

 

  33.下列哪一種敘述是正確的()

 

  A.abstract修飾符可修飾字段、方法和類

 

  B.抽象方法的body部分必須用一對大括號{}包住 

 

C.聲明抽象方法,大括號可有可無 

 

D.聲明抽象方法不可寫出大括號 

 

答案:D

 

 

  34.下列語句正確的是()

 

  A.形式參數(shù)可被視為localvariable 

 

B.形式參數(shù)可被字段修飾符修飾

 

  C.形式參數(shù)為方法被調(diào)用時,真正被傳遞的參數(shù) 

 

D.形式參數(shù)不可以是對象 

 

答案:A

 

 

  35.下列哪種說法是正確的()

 

  A.實例方法可直接調(diào)用超類的實例方法 

 

B.實例方法可直接調(diào)用超類的類方法 

 

C.實例方法可直接調(diào)用其他類的實例方法 

 

D.實例方法可直接調(diào)用本類的類方法

 

答案:D

 

 

  36.下列說法正確的有()

 

  A.環(huán)境變量可在編譯sourcecode時指定

 

  B.在編譯程序時,所能指定的環(huán)境變量不包括class path 

 

C.javac一次可同時編譯數(shù)個Java源文件

 

  D.javac.exe能指定編譯結(jié)果要置于哪個目錄(directory) 

 

答案:BCD

 

 

  37.下列標識符不合法的有() 

 

A.new

 

  B.$Usdollars 

 

C.1234 

 

D.car.taxi 

 

答案:ACD

 

 

  38.下列說法錯誤的有() 

 

A.數(shù)組是一種對象

 

B.數(shù)組屬于一種原生類

 

  C.intnumber=[]={31,23,33,43,35,63} 

 

D.數(shù)組的大小可以任意改變

 

答案:BCD

 

 

  39.不能用來修飾interface的有()

 

A.private 

 

B.public 

 

C.protected 

 

D.static 

 

答案:ACD

 

timg (9).jpg

 

以上就是動力節(jié)點java培訓(xùn)機構(gòu)小編分享的“39道高級java面試題及答案”的內(nèi)容,希望對大家有幫助,更多java面試題請繼續(xù)關(guān)注動力節(jié)點java培訓(xùn)機構(gòu)官網(wǎng),每天會精彩內(nèi)容分享與你。

 

相關(guān)java面試題推薦

 

2019最新最全java面試題及答案:http://www.dabaquan.cn/tutorial_baseinterviewquestions/

 

Java常見面試題匯總:http://www.dabaquan.cn/javazixun/1007.html

 

2019最新java面試題含答案(基礎(chǔ)篇):http://www.dabaquan.cn/javazixun/1145.html

 

各大互聯(lián)網(wǎng)公司Java面試題匯總:http://www.dabaquan.cn/javazixun/1867.html

 

2019最新Java常見面試題(附帶答案):http://www.dabaquan.cn/javazixun/891.html

 

常被問到的Java面試題(帶全部答案):http://www.dabaquan.cn/javazixun/886.html

 

 

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

主站蜘蛛池模板: 欧美一级高清片在线 | 天天色天天操综合网 | 波多野结衣免费一区二区三区香蕉 | 一本大道久久a久久综合 | 国产一区二区三区四区 | 亚洲欧洲一区二区三区在线 | 日本人一级毛片免费完整视频 | 日韩一区二区三区免费视频 | 久久精品国产亚洲网站 | 四虎4hutv永久在线影院 | 国产在线色视频 | 99re在线这里只有精品 | 免费国产一区二区在免费观看 | 国产成人综合高清在线观看 | 久草综合视频在线 | 极品精品国产超清自在线观看 | 亚洲视频在线看 | 久久婷婷国产麻豆91天堂 | 欧美精欧美乱码一二三四区 | 日本在线精品 | 夜夜躁狠狠躁日日躁视频 | 久草免费在线观看 | 欧美成成人免费 | 色综合久久88中文字幕 | 欧美在线色 | 亚洲成人一级 | 91在线网| 欧美精品国产第一区二区 | 天天操丝袜 | 曰本女人性配视频 | 欧美日韩亚洲精品一区二区三区 | 福利99| 日本不卡视频网站 | 欧美日本高清视频在线观看 | 日本中文字幕不卡免费视频 | 在线观看视频99 | 欧美日韩亚洲区久久综合 | 欧美性生交xxxxx久久久 | 四虎影视免费在线观看 | 欧美日韩一区二区视频免费看 | 久久精品99香蕉国产 |