欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java熱門(mén)筆試試題整理

 更新時(shí)間:2017年11月29日 11:58:54   投稿:laozhang  
給大家整理了現(xiàn)在很熱門(mén)的java程序員面試時(shí)候的筆試試題以及答案,希望能幫助到你。

小編為面試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í)行下去。

相關(guān)文章

最新評(píng)論