為了幫助大家可以更好地做好面試前的準(zhǔn)備,本文為大家整理了2020年Java開發(fā)工程師面試題內(nèi)涵答案。這些問題都是比較經(jīng)典的面試題,大家可以先不看答案做一做,查漏補(bǔ)缺。
1、Java有哪些特點(diǎn)?
答案:并發(fā)性,你可以在其中執(zhí)行許多語(yǔ)句,而不必一次執(zhí)行它;面向?qū)ο螅陬惡兔嫦驅(qū)ο蟮木幊陶Z(yǔ)言;獨(dú)立性,支持一次編寫,到處運(yùn)行的獨(dú)立編程語(yǔ)言,即編譯后的代碼可以在支持Java的所有平臺(tái)上運(yùn)行。
2、值傳遞和引用傳遞的區(qū)別是什么?
答案:值傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)復(fù)制一份到函數(shù)中,這樣的話如果函數(shù)對(duì)其傳遞過來的形式參數(shù)進(jìn)行修改,將不會(huì)影響到實(shí)際參數(shù)。引用傳遞是指在調(diào)用函數(shù)時(shí)將對(duì)象的地址直接傳遞到函數(shù)中,如果在對(duì)形式參數(shù)進(jìn)行修改,將影響到實(shí)際參數(shù)的值。
3、描述一下==和equals的區(qū)別。
答案:==是Java中一種操作符,它有兩種比較方式。一是對(duì)于基本數(shù)據(jù)類型來說,==判斷的是兩邊的值是否相等。另一個(gè)是對(duì)于引用類型來說,==判斷的是兩邊的引用是否相等,也就是判斷兩個(gè)對(duì)象是否指向了同一塊內(nèi)存區(qū)域。equals是Java中所有對(duì)象的父類,即Object類定義的一個(gè)方法。它只能比較對(duì)象,它表示的是引用雙方的值是否相等。所以記住,并不是說==比較的就是引用是否相等,equals比較的就是值,這需要區(qū)分來說的。
4、String中的equals是如何重寫的?
答案:String代表的是Java開發(fā)中的字符串,String類比較特殊,它整個(gè)類都是被final修飾的,也就是說,String不能被任何類繼承,任何修改String字符串的方法都是創(chuàng)建了一個(gè)新的字符串。equals方法是Object類定義的方法,Object是所有類的父類,當(dāng)然也包括String,String重寫了equals方法,下面我們來看看是怎么重寫的:
首先會(huì)判斷要比較的兩個(gè)字符串它們的引用是否相等。如果引用相等的話,直接返回true,不相等的話繼續(xù)下面的判斷。然后再判斷被比較的對(duì)象是否是String的實(shí)例,如果不是的話直接返回false,如果是的話,再比較兩個(gè)字符串的長(zhǎng)度是否相等,如果長(zhǎng)度不想等的話也就沒有比較的必要了;長(zhǎng)度如果相同,會(huì)比較字符串中的每個(gè)字符是否相等,一旦有一個(gè)字符不相等,就會(huì)直接返回false。
5、為什么重寫equals方法必須重寫hashcode方法?
答案:如果在Java運(yùn)行期間對(duì)同一個(gè)對(duì)象調(diào)用hashCode方法后,無論調(diào)用多少次,都應(yīng)該返回相同的hashCode,但是在不同的Java程序中,執(zhí)行hashCode方法返回的值可能不一致。如果兩個(gè)對(duì)象的equals相等,那么hashCode必須相同。如果兩個(gè)對(duì)象equals不相等,那么hashCode也有可能相同,所以需要重寫hashCode方法,因?yàn)槟悴恢纇ashCode的底層構(gòu)造(反正我是不知道,有大??梢詡魇趥魇冢?,所以你需要重寫hashCode方法,來為不同的對(duì)象生成不同的hashCode值,這樣能夠提高不同對(duì)象的訪問速度。hashCode通常是將地址轉(zhuǎn)換為整數(shù)來實(shí)現(xiàn)的。
6、static關(guān)鍵字有什么用?
答案:static是Java中非常重要的關(guān)鍵字,static表示的概念是靜態(tài)的,在Java中,static主要用來修飾變量,static修飾的變量能夠直接通過類名變量名來進(jìn)行訪問,不用通過實(shí)例化類再進(jìn)行使用。static可以修飾代碼塊,主要分為兩種,一種直接定義在類中,使用static{},這種被稱為靜態(tài)代碼塊,一種是在類中定義靜態(tài)內(nèi)部類,使用static class xxx來進(jìn)行定義。
7、抽象類和接口的不同點(diǎn)是什么?
答案:抽象級(jí)別不同:類、抽象類、接口其實(shí)是三種不同的抽象級(jí)別,抽象程度依次是接口>抽象類>類。在接口中,只允許進(jìn)行方法的定義,不允許有方法的實(shí)現(xiàn),抽象類中可以進(jìn)行方法的定義和實(shí)現(xiàn);而類中只允許進(jìn)行方法的實(shí)現(xiàn),我說的方法的定義是不允許在方法后面出現(xiàn){};使用的關(guān)鍵字不同:類使用class來表示;抽象類使用abstract class來表示;接口使用interface來表示;變量:接口中定義的變量只能是公共的靜態(tài)常量,抽象類中的變量是普通變量。
以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“2020年Java開發(fā)工程師面試題內(nèi)涵答案”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
Java面試題