有很多學(xué)習(xí)java的小伙伴在找工作的時(shí)候都會(huì)遇到面試,大家在面試前可要做好準(zhǔn)備,長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編就為大家準(zhǔn)備了java面試題全集部分參考,希望對(duì)大家能夠有所幫助。
1、面向?qū)ο蟮奶卣饔心男┓矫?
答:面向?qū)ο蟮奶卣髦饕幸韵聨讉€(gè)方面:
抽象:抽象是將一類對(duì)象的共同特征總結(jié)出來構(gòu)造類的過程,包括數(shù)據(jù)抽象和行為抽象兩方面。抽象只關(guān)注對(duì)象有哪些屬性和行為,并不關(guān)注這些行為的細(xì)節(jié)是什么。
繼承:繼承是從已有類得到繼承信息創(chuàng)建新類的過程。提供繼承信息的類被稱為父類(超類、基類);得到繼承信息的類被稱為子類(派生類)。繼承讓變化中的軟件系統(tǒng)有了一定的延續(xù)性,同時(shí)繼承也是封裝程序中可變因素的重要手段。
封裝:通常認(rèn)為封裝是把數(shù)據(jù)和操作數(shù)據(jù)的方法綁定起來,對(duì)數(shù)據(jù)的訪問只能通過已定義的接口。面向?qū)ο蟮谋举|(zhì)就是將現(xiàn)實(shí)世界描繪成一系列完全自治、封閉的對(duì)象。我們?cè)陬愔芯帉懙姆椒ň褪菍?duì)實(shí)現(xiàn)細(xì)節(jié)的一種封裝;我們編寫一個(gè)類就是對(duì)數(shù)據(jù)和數(shù)據(jù)操作的封裝??梢哉f,封裝就是隱藏一切可隱藏的東西,只向外界提供最簡(jiǎn)單的編程接口(可以想想普通洗衣機(jī)和全自動(dòng)洗衣機(jī)的差別,明顯全自動(dòng)洗衣機(jī)封裝更好因此操作起來更簡(jiǎn)單;我們現(xiàn)在使用的智能手機(jī)也是封裝得足夠好的,因?yàn)閹讉€(gè)按鍵就搞定了所有的事情)。
多態(tài)性:多態(tài)性是指允許不同子類型的對(duì)象對(duì)同一消息作出不同的響應(yīng)。簡(jiǎn)單的說就是用同樣的對(duì)象引用調(diào)用同樣的方法但是做了不同的事情。多態(tài)性分為編譯時(shí)的多態(tài)性和運(yùn)行時(shí)的多態(tài)性。如果將對(duì)象的方法視為對(duì)象向外界提供的服務(wù),那么運(yùn)行時(shí)的多態(tài)性可以解釋為:當(dāng)A系統(tǒng)訪問B系統(tǒng)提供的服務(wù)時(shí),B系統(tǒng)有多種提供服務(wù)的方式,但一切對(duì)A系統(tǒng)來說都是透明的(就像電動(dòng)剃須刀是A系統(tǒng),它的供電系統(tǒng)是B系統(tǒng),B系統(tǒng)可以使用電池供電或者用交流電,甚至還有可能是太陽能,A系統(tǒng)只會(huì)通過B類對(duì)象調(diào)用供電的方法,但并不知道供電系統(tǒng)的底層實(shí)現(xiàn)是什么,究竟通過何種方式獲得了動(dòng)力)。方法重載(overload)實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性(也稱為前綁定),而方法重寫(override)實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性(也稱為后綁定)。
2、String 是最基本的數(shù)據(jù)類型嗎?
答:不是。Java中的基本數(shù)據(jù)類型只有8個(gè):byte、short、int、long、float、double、char、boolean;除了基本類型(primitive type),剩下的都是引用類型(reference type),Java 5以后引入的枚舉類型也算是一種比較特殊的引用類型。
3、Java有沒有g(shù)oto?
答:goto 是Java中的保留字,在目前版本的Java中沒有使用。(根據(jù)James Gosling(Java之父)編寫的《The Java Programming Language》一書的附錄中給出了一個(gè)Java關(guān)鍵字列表,其中有g(shù)oto和const,但是這兩個(gè)是目前無法使用的關(guān)鍵字,因此有些地方將其稱之為保留字,其實(shí)保留字這個(gè)詞應(yīng)該有更廣泛的意義,因?yàn)槭煜語言的程序員都知道,在系統(tǒng)類庫中使用過的有特殊意義的單詞或單詞的組合都被視為保留字)
4、&和&&的區(qū)別?
答:&運(yùn)算符有兩種用法:(1)按位與;(2)邏輯與。&&運(yùn)算符是短路與運(yùn)算。邏輯與跟短路與的差別是非常巨大的,雖然二者都要求運(yùn)算符左右兩端的布爾值都是true整個(gè)表達(dá)式的值才是true。&&之所以稱為短路運(yùn)算是因?yàn)椋绻?amp;&左邊的表達(dá)式的值是false,右邊的表達(dá)式會(huì)被直接短路掉,不會(huì)進(jìn)行運(yùn)算。很多時(shí)候我們可能都需要用&&而不是&,例如在驗(yàn)證用戶登錄時(shí)判定用戶名不是null而且不是空字符串,應(yīng)當(dāng)寫為:username != null &&!username.equals(""),二者的順序不能交換,更不能用&運(yùn)算符,因?yàn)榈谝粋€(gè)條件如果不成立,根本不能進(jìn)行字符串的equals比較,否則會(huì)產(chǎn)生NullPointerException異常。注意:邏輯或運(yùn)算符(|)和短路或運(yùn)算符(||)的差別也是如此。
5、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
答:Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在參數(shù)上加0.5然后進(jìn)行下取整。
6、switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
答:在Java 5以前,switch(expr)中,expr只能是byte、short、char、int。從Java 5開始,Java中引入了枚舉類型,expr也可以是enum類型,從Java 7開始,expr還可以是字符串(String),但是長(zhǎng)整型(long)在目前所有的版本中都是不可以的。
7、數(shù)組有沒有l(wèi)ength()方法?String有沒有l(wèi)ength()方法?
答:數(shù)組沒有l(wèi)ength()方法,有l(wèi)ength 的屬性。String 有l(wèi)ength()方法。Javascript中,獲得字符串的長(zhǎng)度是通過length屬性得到的,這一點(diǎn)容易和Java混淆。
8、在Java中,如何跳出當(dāng)前的多重嵌套循環(huán)?
答:在最外層循環(huán)前加一個(gè)標(biāo)記如A,然后用break A;可以跳出多重循環(huán)。(Java中支持帶標(biāo)簽的break和continue語句,作用有點(diǎn)類似于C和C++中的goto語句,但是就像要避免使用goto一樣,應(yīng)該避免使用帶標(biāo)簽的break和continue,因?yàn)樗粫?huì)讓你的程序變得更優(yōu)雅,很多時(shí)候甚至有相反的作用,所以這種語法其實(shí)不知道更好)
9、重載(Overload)和重寫(Override)的區(qū)別。重載的方法能否根據(jù)返回類型進(jìn)行區(qū)分?
答:方法的重載和重寫都是實(shí)現(xiàn)多態(tài)的方式,區(qū)別在于前者實(shí)現(xiàn)的是編譯時(shí)的多態(tài)性,而后者實(shí)現(xiàn)的是運(yùn)行時(shí)的多態(tài)性。重載發(fā)生在一個(gè)類中,同名的方法如果有不同的參數(shù)列表(參數(shù)類型不同、參數(shù)個(gè)數(shù)不同或者二者都不同)則視為重載;重寫發(fā)生在子類與父類之間,重寫要求子類被重寫方法與父類被重寫方法有相同的返回類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則)。重載對(duì)返回類型沒有特殊的要求。
10、抽象類(abstract class)和接口(interface)有什么異同?
答:抽象類和接口都不能夠?qū)嵗梢远x抽象類和接口類型的引用。一個(gè)類如果繼承了某個(gè)抽象類或者實(shí)現(xiàn)了某個(gè)接口都需要對(duì)其中的抽象方法全部進(jìn)行實(shí)現(xiàn),否則該類仍然需要被聲明為抽象類。接口比抽象類更加抽象,因?yàn)槌橄箢愔锌梢远x構(gòu)造器,可以有抽象方法和具體方法,而接口中不能定義構(gòu)造器而且其中的方法全部都是抽象方法。抽象類中的成員可以是private、默認(rèn)、protected、public的,而接口中的成員全都是public的。抽象類中可以定義成員變量,而接口中定義的成員變量實(shí)際上都是常量。有抽象方法的類必須被聲明為抽象類,而抽象類未必要有抽象方法。
以上就是長(zhǎng)沙中公優(yōu)就業(yè)java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“java面試題全集部分參考”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
Java面試題