- 相關(guān)推薦
java編程筆試面試題
引導(dǎo)語(yǔ):應(yīng)聘技術(shù)類(lèi)的崗位都是需要經(jīng)過(guò)筆試考察這一個(gè)環(huán)節(jié)的,以下是小編整理的java編程筆試面試題,歡迎參考閱讀!
簡(jiǎn)答題:
01、switch語(yǔ)句能否作用在byte上,能否作用在long上,能否作用在String上?
答:
在switch(expr1)中,expr1只能是一個(gè)整數(shù)表達(dá)式或者枚舉常量(更大字體),
整數(shù)表達(dá)式可以是int基本類(lèi)型或Integer包裝類(lèi)型,
由于,byte,short,char都可以隱含轉(zhuǎn)換為int,
所以,這些類(lèi)型以及這些類(lèi)型的包裝類(lèi)型也是可以的。
顯然,long和String類(lèi)型都不符合switch的語(yǔ)法規(guī)定,
并且不能被隱式轉(zhuǎn)換成int類(lèi)型,
所以,它們不能作用于swtich語(yǔ)句中。
02、short s1 = 1; s1 = s1 + 1;有什么錯(cuò)?short s1 = 1; s1 += 1;有什么錯(cuò)?
答:
對(duì)于short s1 = 1; s1 = s1 + 1; 由于s1+1運(yùn)算時(shí)會(huì)自動(dòng)提升表達(dá)式的類(lèi)型,
所以結(jié)果是int型,再賦值給short類(lèi)型s1時(shí),編譯器將報(bào)告需要強(qiáng)制轉(zhuǎn)換類(lèi)型的錯(cuò)誤。
對(duì)于short s1 = 1; s1 += 1;由于+= 是java語(yǔ)言規(guī)定的運(yùn)算符,java編譯器會(huì)對(duì)它進(jìn)行特殊處理,因此可以正確編譯。
03、簡(jiǎn)述Java中構(gòu)造方法的概念及特點(diǎn)。
答:
構(gòu)造方法:構(gòu)造方法是一種特殊的方法,用于初始化對(duì)象。
特點(diǎn):
① 構(gòu)造方法與類(lèi)同名,可以有參數(shù),也可無(wú)參數(shù)。
、 構(gòu)造方法沒(méi)有返回值,在方法前也不需要寫(xiě)void。
、 創(chuàng)建對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造方法。
、 用戶(hù)在程序中不能直接調(diào)用構(gòu)造方法,只能通過(guò)new操作符調(diào)用。
、 一個(gè)類(lèi)可以有多個(gè)同名構(gòu)造方法,但參數(shù)必須不同。
、 類(lèi)中可以不定義構(gòu)造方法,此時(shí)Java提供一個(gè)默認(rèn)的無(wú)參數(shù)構(gòu)造方法
04、簡(jiǎn)述Java中接口的概念及接口的性質(zhì)?
答:
Java語(yǔ)言規(guī)定,類(lèi)只能實(shí)現(xiàn)單繼承,但接口可以實(shí)現(xiàn)多重繼承。
接口中定義的方法都是抽象方法,定義的所有域都是常量。
因此接口可以看作是沒(méi)有實(shí)現(xiàn)的方法和常量的集合。
使用接口主要是解決Java語(yǔ)言不支持多重繼承的問(wèn)題。
性質(zhì):
① 接口不提供代碼重用性。因?yàn)榻涌谥械姆椒ǘ际菦](méi)有實(shí)現(xiàn)的方法,因此所有的方法體都要自己編寫(xiě)。
② 接口可以通過(guò)多繼承進(jìn)行擴(kuò)展。
、 接口不能升級(jí),即提供給用戶(hù)的接口不能再改變。
05、數(shù)組有沒(méi)有l(wèi)ength()這個(gè)方法? String有沒(méi)有l(wèi)ength()這個(gè)方法?
答:
數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有l(wèi)ength()這個(gè)方法。
06、構(gòu)造器Constructor是否可被override?
答:
構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overriding,但可以被重載Overloading。
07、啟動(dòng)一個(gè)線程是用run()還是start()?
答:
啟動(dòng)一個(gè)線程是調(diào)用start()方法,使線程所代表的虛擬處理機(jī)處于可運(yùn)行狀態(tài),這意味著它可以由JVM調(diào)度并執(zhí)行。
這并不意味著線程就會(huì)立即運(yùn)行。
run()方法可以產(chǎn)生必須退出的標(biāo)志來(lái)停止一個(gè)線程。
08、接口是否可繼承接口? 抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口? 抽象類(lèi)是否可繼承實(shí)體類(lèi)(concrete class)?
答:
接口可以繼承接口。
抽象類(lèi)可以實(shí)現(xiàn)(implements)接口,抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。
09、sleep() 和 wait() 有什么區(qū)別?
答:
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、abstract class和interface有什么區(qū)別?
答:
聲明方法的存在而不去實(shí)現(xiàn)它的類(lèi)被叫做抽象類(lèi)(abstract
class),它用于要?jiǎng)?chuàng)建一個(gè)體現(xiàn)某些基本行為的類(lèi),并為該類(lèi)聲明方法,但不能在該類(lèi)中實(shí)現(xiàn)該類(lèi)的情況。
不能創(chuàng)建abstract 類(lèi)的實(shí)例。
然而可以創(chuàng)建一個(gè)變量,其類(lèi)型是一個(gè)抽象類(lèi),并讓它指向具體子類(lèi)的一個(gè)實(shí)例。
不能有抽象構(gòu)造函數(shù)或抽象靜態(tài)方法。
Abstract 類(lèi)的子類(lèi)為它們父類(lèi)中的所有抽象方法提供實(shí)現(xiàn),否則它們也是抽象類(lèi)為。
取而代之,在子類(lèi)中實(shí)現(xiàn)該方法。
知道其行為的其它類(lèi)可以在類(lèi)中實(shí)現(xiàn)這些方法。
接口(interface)是抽象類(lèi)的變體。
在接口中,所有方法都是抽象的。
多繼承性可通過(guò)實(shí)現(xiàn)這樣的接口而獲得。
接口中的所有方法都是抽象的,沒(méi)有一個(gè)有程序體。
接口只可以定義static final成員變量。
接口的實(shí)現(xiàn)與子類(lèi)相似,除了該實(shí)現(xiàn)類(lèi)不能從接口定義中繼承行為。
當(dāng)類(lèi)實(shí)現(xiàn)特殊接口時(shí),它定義(即將程序體給予)所有這種接口的方法。
然后,它可以在實(shí)現(xiàn)了該接口的類(lèi)的任何對(duì)象上調(diào)用接口的方法。
由于有抽象類(lèi),它允許使用接口名作為引用變量的類(lèi)型。
通常的動(dòng)態(tài)聯(lián)編將生效。
引用可以轉(zhuǎn)換到接口類(lèi)型或從接口類(lèi)型轉(zhuǎn)換,instanceof 運(yùn)算符可以用來(lái)決定某對(duì)象的類(lèi)是否實(shí)現(xiàn)了接口。
【java編程筆試面試題】相關(guān)文章:
java編程術(shù)語(yǔ)11-10
java編程基礎(chǔ)07-26
Java編程語(yǔ)言10-02
java教程之Java編程基礎(chǔ)09-12
Java編程環(huán)境的搭建06-03
java編程規(guī)范介紹07-10
java語(yǔ)法基本編程10-08
java編程語(yǔ)言分析07-11
java編程的總結(jié)與思考07-29