Java熱門(mén)筆試試題整理
小編為面試Java程序員的朋友們整理了2017非常熱門(mén)的面試中的筆試試題,如果你是一個(gè)正在準(zhǔn)備面試Java程序員的讀者,趕快學(xué)習(xí)一下吧。
1,下列說(shuō)法正確的是()
A.一個(gè)文件里可以同時(shí)存在兩個(gè)public修飾的類(lèi)
B.構(gòu)造函數(shù)可以被重寫(xiě)(override)
C.子類(lèi)不能訪問(wèn)父類(lèi)非public和protected修飾的屬性
D.final修飾的類(lèi)可以被繼承
答案:C
一個(gè)Java源文件中最多只能有一個(gè)public類(lèi),當(dāng)有一個(gè)public類(lèi)時(shí),源文件名必須與之一致,否則無(wú)法編譯,如果源文件中沒(méi)有一個(gè)public類(lèi),則文件名與類(lèi)中沒(méi)有一致性要求。至于main()不是必須要放在public類(lèi)中才能運(yùn)行程序。
重寫(xiě)是子類(lèi)繼承父類(lèi)后對(duì)父類(lèi)的方法進(jìn)行修改。方法名,參數(shù),返回值必須一樣。 不能重寫(xiě)被標(biāo)示為final的方法。如果不能繼承一個(gè)方法,則不能重寫(xiě)這個(gè)方法。
擴(kuò)展:重寫(xiě)override,重載overload的區(qū)別
java的方法重載
就是在類(lèi)中可以創(chuàng)建多個(gè)方法,它們具有相同的名字,但具有不同的參數(shù)和不同的定義。調(diào)用方法時(shí)通過(guò)傳遞給它們的不同參數(shù)個(gè)數(shù)和參數(shù)類(lèi)型來(lái)決定具體使用哪個(gè)方法,而且返回值類(lèi)型可以相同也可以不相同,這也是面向?qū)ο蟮亩鄳B(tài)性。
java的方法重寫(xiě)
父類(lèi)與子類(lèi)之間的多態(tài)性,對(duì)父類(lèi)的函數(shù)進(jìn)行重新定義。如果在子類(lèi)中定義某方法與其父類(lèi)有相同的名稱(chēng)和參數(shù),我們說(shuō)該方法被重寫(xiě) (Overriding)。在Java中,子類(lèi)可繼承父類(lèi)中的方法,而不需要重新編寫(xiě)相同的方法。但有時(shí)子類(lèi)并不想原封不動(dòng)地繼承父類(lèi)的方法,而是想作一定的修改,這就需要采用方法的重寫(xiě)。方法重寫(xiě)又稱(chēng)方法覆蓋。
若子類(lèi)中的方法與父類(lèi)中的某一方法具有相同的方法名、返回類(lèi)型和參數(shù)表,則新方法將覆蓋原有的方法。如需父類(lèi)中原有的方法,可使用super關(guān)鍵字,該關(guān)鍵字引用了當(dāng)前類(lèi)的父類(lèi)。
子類(lèi)函數(shù)的訪問(wèn)修飾權(quán)限不能少于父類(lèi)的;
重寫(xiě)方法只能存在于具有繼承關(guān)系中,重寫(xiě)方法只能重寫(xiě)父類(lèi)非私有的方法。
2,for(int x=0,y=0;(y!=0)&&(x<4);x++)循環(huán)的執(zhí)行次數(shù)是()
A.無(wú)限次
B.執(zhí)行4次
C.執(zhí)行3次
D.一次也不執(zhí)行
答案:D
y初始值為0,在整個(gè)for循環(huán)中,y的值不變,故判斷語(yǔ)句中的(y!=0)不成立,故一次也不執(zhí)行。
3,關(guān)于 JAVA 堆,下面說(shuō)法錯(cuò)誤的是( )
A.所有類(lèi)的實(shí)例和數(shù)組都是在堆上分配內(nèi)存的
B.對(duì)象所占的堆內(nèi)存是由自動(dòng)內(nèi)存管理系統(tǒng)回收
C.堆內(nèi)存由存活和死亡的對(duì)象,空閑碎片區(qū)組成
D.數(shù)組是分配在棧中的
答案:D
首先數(shù)組是分配在堆中的,故D的說(shuō)法不正確。
Java堆的結(jié)構(gòu):JVM的堆是運(yùn)行時(shí)數(shù)據(jù)區(qū),所有類(lèi)的實(shí)例和數(shù)組都是在堆上分配內(nèi)存。它在JVM啟動(dòng)的時(shí)候被創(chuàng)建。對(duì)象所占的堆內(nèi)存是由自動(dòng)內(nèi)存管理系統(tǒng)也就是垃圾收集器回收。堆內(nèi)存是由存活和死亡的對(duì)象組成的。存活的對(duì)象是應(yīng)用可以訪問(wèn)的,不會(huì)被垃圾回收。死亡的對(duì)象是應(yīng)用不可訪問(wèn)尚且還沒(méi)有被垃圾收集器回收掉的對(duì)象。一直到垃圾收集器把這些對(duì)象回收掉之前,他們會(huì)一直占據(jù)堆內(nèi)存空間。
4,在使用super 和this關(guān)鍵字時(shí),以下描述正確的是()
A.在子類(lèi)構(gòu)造方法中使用super()顯示調(diào)用父類(lèi)的構(gòu)造方法;
super()必須寫(xiě)在子類(lèi)構(gòu)造方法的第一行,否則編譯不通過(guò)
B.super()和this()不一定要放在構(gòu)造方法內(nèi)第一行
C.this()和super()可以同時(shí)出現(xiàn)在一個(gè)構(gòu)造函數(shù)中
D.this()和super()可以在static環(huán)境中使用,包括static方法和static語(yǔ)句塊
答案:A
Java關(guān)鍵字this只能用于方法方法體內(nèi)。當(dāng)一個(gè)對(duì)象創(chuàng)建后,Java虛擬機(jī)(JVM)就會(huì)給這個(gè)對(duì)象分配一個(gè)引用自身的指針,這個(gè)指針的名字就是this。因此,this只能在類(lèi)中的非靜態(tài)方法中使用,靜態(tài)方法和靜態(tài)的代碼塊中絕對(duì)不能出現(xiàn)this。
super關(guān)鍵和this作用類(lèi)似,是被屏蔽的成員變量或者成員方法或變?yōu)榭梢?jiàn),或者說(shuō)用來(lái)引用被屏蔽的成員變量和成員成員方法。
不過(guò)super是用在子類(lèi)中,目的是訪問(wèn)直接父類(lèi)中被屏蔽的成員,注意是直接父類(lèi)(就是類(lèi)之上最近的超類(lèi))
5,下列語(yǔ)句哪一個(gè)正確()
A.Java程序經(jīng)編譯后會(huì)產(chǎn)生machine code
B.Java程序經(jīng)編譯后會(huì)產(chǎn)生byte code
C.Java程序經(jīng)編譯后會(huì)產(chǎn)生DLL
D.以上都不正確
答案:B
Java字節(jié)碼是Java源文件編譯產(chǎn)生的中間文件
java虛擬機(jī)是可運(yùn)行java字節(jié)碼的假想計(jì)算機(jī) java的跨平臺(tái)性也是相對(duì)與其他編程語(yǔ)言而言的 。
先介紹一下c語(yǔ)言的編譯過(guò)程:c的文件經(jīng)過(guò)C編譯程序編譯后生成windows可執(zhí)行文件exe文件然后在windows中執(zhí)行。
再介紹java的編譯過(guò)程:java的文件由java編譯程序?qū)ava字節(jié)碼文件就是class文件在java虛擬機(jī)中執(zhí)行。機(jī)器碼是由CPU來(lái)執(zhí)行的;Java編譯后是字節(jié)碼。
電腦只能運(yùn)行機(jī)器碼。Java在運(yùn)行的時(shí)候把字節(jié)碼變成機(jī)器碼。C/C++在編譯的時(shí)候直接編譯成機(jī)器碼
6,下列哪一種敘述是正確的()
A.a(chǎn)bstract修飾符可修飾字段、方法和類(lèi)
B.抽象方法的body部分必須用一對(duì)大括號(hào){ }包住
C.聲明抽象方法,大括號(hào)可有可無(wú)
D.聲明抽象方法不可寫(xiě)出大括號(hào)
答案:D
abstract修飾符用來(lái)修飾類(lèi)和成員方法
用abstract修飾的類(lèi)表示抽象類(lèi),抽象類(lèi)位于繼承樹(shù)的抽象層,抽象類(lèi)不能被實(shí)例化。
用abstract修飾的方法表示抽象方法,抽象方法沒(méi)有方法體。抽象方法用來(lái)描述系統(tǒng)具有什么功能,但不提供具體的實(shí)現(xiàn)。
Abstract是Java中的一個(gè)重要關(guān)鍵字,可以用來(lái)修飾一個(gè)類(lèi)或者一個(gè)方法。
修飾一個(gè)方法時(shí),表示該方法只有特征簽名(signature),沒(méi)有具體實(shí)現(xiàn),而是把具體實(shí)現(xiàn)留給繼承該類(lèi)的子類(lèi),所以不能有大括號(hào)。
7,下列說(shuō)法正確的有()
A.class中的constructor不可省略
B.constructor必須與class同名,但方法不能與class同名
C.constructor在一個(gè)對(duì)象被new時(shí)執(zhí)行
D.一個(gè)class只能定義一個(gè)constructor
答案:C
這里可能會(huì)有誤區(qū),其實(shí)普通的類(lèi)方法是可以和類(lèi)名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒(méi)有返回值。
8,GC線程是否為守護(hù)線程()
答案:是
線程分為守護(hù)線程和非守護(hù)線程(即用戶(hù)線程)。
只要當(dāng)前JVM實(shí)例中尚存在任何一個(gè)非守護(hù)線程沒(méi)有結(jié)束,守護(hù)線程就全部工作;只有當(dāng)最后一個(gè)非守護(hù)線程結(jié)束時(shí),守護(hù)線程隨著JVM一同結(jié)束工作。
守護(hù)線程最典型的應(yīng)用就是 GC (垃圾回收器)
9,關(guān)于sleep()和wait(),以下描述錯(cuò)誤的一項(xiàng)是( )
A. sleep是線程類(lèi)(Thread)的方法,wait是Object類(lèi)的方法;
B. sleep不釋放對(duì)象鎖,wait放棄對(duì)象鎖;
C. sleep暫停線程、但監(jiān)控狀態(tài)仍然保持,結(jié)束后會(huì)自動(dòng)恢復(fù);
D. wait后進(jìn)入等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法后獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。
答案:D
sleep是線程類(lèi)(Thread)的方法,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間,給執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持,到時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。
wait是Object類(lèi)的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)行狀態(tài)。
10,方法resume()負(fù)責(zé)恢復(fù)哪些線程的執(zhí)行( )
A,通過(guò)調(diào)用stop()方法而停止的線程。
B,通過(guò)調(diào)用sleep()方法而停止的線程。
C,通過(guò)調(diào)用wait()方法而停止的線程。
D,通過(guò)調(diào)用suspend()方法而停止的線程。
答案:D
suspend可以掛起一個(gè)線程,就是把這個(gè)線程暫停了,它占著資源,但不運(yùn)行,用resume是恢復(fù)掛起的線程,讓這個(gè)線程繼續(xù)執(zhí)行下去。
- 阿里、華為、騰訊Java技術(shù)面試題精選
- Java面試題-實(shí)現(xiàn)復(fù)雜鏈表的復(fù)制代碼分享
- Java編程基礎(chǔ)測(cè)試題分享
- Java高級(jí)面試題小結(jié)
- Java main 方法面試題的詳細(xì)整理
- Java常見(jiàn)數(shù)據(jù)結(jié)構(gòu)面試題(帶答案)
- 值得收藏的2017年Java開(kāi)發(fā)崗位面試題
- Java常用類(lèi)String的面試題匯總(java面試題)
- JAVA面試題之Forward與Redirect的區(qū)別詳解
- java面試題之try中含return語(yǔ)句時(shí)代碼的執(zhí)行順序詳解
- java 面試題閏年判斷詳解及實(shí)例
- Java面試題之基本語(yǔ)法(圖解)
- Java面試題及答案集錦(基礎(chǔ)題122道,代碼題19道)
- 15個(gè)頂級(jí)Java多線程面試題(附答案)
- java面試題——詳解HashMap和Hashtable 的區(qū)別
- 常見(jiàn)的java面試題
- java 多態(tài)性詳解及常見(jiàn)面試題
- 50 道Java 線程面試題(經(jīng)典)
相關(guān)文章
Spring Security其它權(quán)限校驗(yàn)方式&自定義權(quán)限校驗(yàn)方式
這篇文章主要介紹了Spring Security其它權(quán)限校驗(yàn)方式&自定義權(quán)限校驗(yàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
使用Spring Batch實(shí)現(xiàn)批處理任務(wù)的詳細(xì)教程
在企業(yè)級(jí)應(yīng)用中,批處理任務(wù)是不可或缺的一部分,它們通常用于處理大量數(shù)據(jù),如數(shù)據(jù)遷移、數(shù)據(jù)清洗、生成報(bào)告等,Spring Batch是Spring框架的一部分,本文將介紹如何使用Spring Batch與SpringBoot結(jié)合,構(gòu)建和管理批處理任務(wù),需要的朋友可以參考下2024-06-06
深入理解Java設(shè)計(jì)模式之狀態(tài)模式
這篇文章主要介紹了JAVA設(shè)計(jì)模式之職責(zé)鏈模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解2021-11-11
Java實(shí)現(xiàn)md5和base64加密解密的示例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)md5和base64加密解密的示例代碼,幫助大家更好的利用Java加密解密文件,感興趣的朋友可以了解下2020-09-09
Java concurrency集合之ConcurrentSkipListSet_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了Java concurrency集合之ConcurrentSkipListSet的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
詳解 Java HashMap 實(shí)現(xiàn)原理
這篇文章主要介紹了詳解 Java HashMap 實(shí)現(xiàn)原理的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下2021-03-03

