閱讀屋>面試> Java面試寶典版

Java面試寶典版

Java面試寶典2013版

專案介紹

在進行技術面試前,提醒大家,必須要準備好專案介紹,即需要準備好你的簡歷中列的所有專案的專案介紹!

面試時關於專案,面試官常見的問題及回答(以銀行櫃檯系統為例):

 你給我簡要介紹一下銀行櫃檯系統?

1、簡易銀行櫃檯系統是模擬銀行櫃檯的基本功能而做的一個系統。

2、系統分前臺和後臺部分,前臺部分是銀行櫃檯人員操作的,包括:註冊登入模組、開銷戶模組、帳號管理模組、存取錢轉賬模組、櫃檯人員資訊管理;後臺部分是銀行管理者操作的,包括檢視日誌模組、管理櫃檯人員資訊模組;

3、我主要負責的是前臺的全部功能;

 你詳細介紹一下你負責的模組的功能?

1、我負責的註冊登入模組和櫃檯人員資訊模組實際上是管理櫃檯人員資訊的,內容比較簡單;

2、開銷戶模組、帳號管理模組、存取錢轉賬模組是為銀行儲戶服務的模組。其中開銷戶就是為儲戶開戶、銷戶的功能,賬戶管理模組就是幫儲戶凍結帳號、修改密碼等功能,存取錢轉賬模組就是為儲戶存錢、取錢,幫儲戶轉賬的功能;

 這個專案幾個人做的?用了多長時間?

1、 這個專案比較小,由2個人合作完成的,我負責的是前臺部分;

2、 專案大概用了4天左右的時間;

 這個專案使用了什麼技術?

1、 這個專案使用Struts2、Hibernate3和MySQL

 你在做這個專案的時候,遇到了什麼困難,怎麼解決的?

1、 比如在Hiberante的使用,關於表之間關聯關係的配置,我開始操作的時候不太熟悉,後來透過查文件、和其他同學溝通的方式,這個問題也得到了解決;

備註:如果你在這裡提到了表之間關聯關係的配置,那麼這個問題面試官非常有可能接下去就問這個技術問題,所以務必認真準備這個技術問題。

前言

這套面試題主要目的是幫助那些還沒有java軟體開發實際工作經驗,而正在努力尋找java軟體開發工作的學生在筆試/面試時更好地贏得好的結果。由於這套試題涉及的範圍很泛,很廣,很雜,大家不可能一天兩天就看完和學完這套面試寶典,即使你已經學過了有關的技術,那麼至少也需要半個月的時間才能消化和掌握這套面試寶典,所以,大家應該早作準備,從拿到這套面試寶典之日起,就要堅持在每天閒暇之餘學習其中幾道題目,日積月累,等到出去面試時,一切都水到渠成,面試時就自然會遊刃有餘了。

答題時,先答是什麼,再答有什麼作用,要注意什麼(這條可以沒有)

比如說面試官問:給我介紹一下ORM?

較好回答:

1、 ORM就是Object Relational Mapping,就是物件關係對映;

2、 作用:我們在寫程式的時候,用的是面向物件的方法,但是在關係型資料庫裡,存的是一條條的記錄;為了用純面向物件的思想解決問題,所以需要將程式中的物件和資料庫中的記錄建立起對映關係,ORM就是將物件和資料庫中的記錄建立起對映的技術;

答案要層次分明,條理清晰,從這些表面的東西也可以看出一個人的習慣、辦事風格、條理等。

答題不侷限於什麼格式和形式,就是要將自己的掌握的技術內容展現出來,比如可以採用舉例的說法:

需要特別注意的是,因為面試官本身水平層次不齊,不要因為人家題目問的模稜兩可(或者題目問的不準確),你就心裡膽怯和沒底氣了,不敢回答了。你要大膽地提出對方題目中你不清楚的地方,希望對方能重新明確的提出問題?

例如,你可以問:您提的問題,我剛才沒有完全聽明白,能不能再說一遍。

一. Java基礎部分

1、 請說一下break和continue的區別?

1、這兩個語句都可以用於跳出迴圈的;

2、break是中止迴圈,執行迴圈體以後的語句,而continue是跳出本次迴圈,執行下一次迴圈;

2、 switch 中用於判斷的`表示式,可以用哪些資料型別?

1、可以是char、byte、short、int,不可以是long、String等其他型別;

2、從JDK1.7開始,支援String型別;

3、 char型變數中能不能存貯一箇中文漢字?為什麼?

Java裡採用了Unicode編碼格式,Unicode編碼中一個char型佔用2個位元組,而一個漢字也是佔用2個位元組,所以可以儲存中文漢字。

備註:C語言裡,char佔用1個位元組,不用存漢字。

4、 靜態變數和例項變數的區別?

在語法定義上的區別:靜態變數前要加static關鍵字,而例項變數前則不加。

在程式執行時的區別:例項變數屬於某個物件的屬性,必須建立了例項物件,其中的例項變數才會被分配空間,才能使用這個例項變數。靜態變數不屬於某個例項物件,而是屬於類,所以也稱為類變數,不用建立任何例項物件,靜態變數就會被分配空間,靜態變數就可以被使用了。總之,例項變數必須建立物件後才可以透過這個物件來使用,靜態變數則可以直接使用類名來引用。

5、 是否可以從一個static方法內部發出對非static方法的呼叫?

不可以。因為非static方法是要與物件關聯在一起的,必須建立一個物件後,才可以在該物件上進行方法呼叫,而static方法呼叫時不需要建立物件,可以直接呼叫。也就是說,當一個static方法被呼叫時,可能還沒有建立任何例項物件,如果從一個static方法中發出對非static方法的呼叫,那個非static方法是關聯到哪個物件上的呢?這個邏輯無法成立,所以,一個static方法內部發出對非static方法的呼叫。

6、 Integer與int的區別

1、int是基本資料型別,Integer是包裝類;

2、int的預設值是0,Interger的預設值是null;

7、 Overload和Override的區別。引數列表相同,返回值不同的方法,是否是過載方法?

Overload是過載的意思,Override是覆蓋的意思,也就是重寫。

過載是指在一個類裡,方法名相同,引數不同;

重寫是指子類繼承父類,子類裡重新編寫了父類中的同名(同參數)方法,也就是覆蓋了父類的方法;

不是!因為過載必須要求引數列表不同!

8、 介面是否可繼承介面? 抽象類是否可實現(implements)介面? 抽象類是否可繼承具體類(concrete class)?

介面可以繼承介面。抽象類可以實現(implements)介面,抽象類是否可繼承具體類。

備註:只要明白了介面和抽象類的本質和作用,這些問題都很好回答。

只有記住抽象類與普通類的唯一區別就是不能建立例項物件和允許有abstract方法。

9、 面向物件有哪三大特性?

1、面向物件有三大特性,分別是:封裝、繼承和多型。

2、封裝:面向物件的封裝就是把描述一個物件的屬性和行為的程式碼封裝在一個類中,有些屬性是不希望公開的,或者說被其他物件訪問的,所以我們使用private修飾該屬性,使其隱藏起來;類中提供了方法(用public修飾),常用的是get、set方法,可以操作這些被隱藏的屬性,其他類可以透過呼叫這些方法,改變隱藏屬性的值!

下面的回答是更高要求,不需要學生必須掌握:

封裝是保證軟體部件具有優良的模組性的基礎,封裝的目標就是要實現軟體部件的“高內聚、低耦合”,防止程式相互依賴性而帶來的變動影響。在面向物件的程式語言中,物件是封裝的最基本單位,面向物件的封裝比傳統語言的封裝更為清晰、更為有力。

3、繼承:在定義和實現一個類的時候,可以在一個已經存在的類的基礎之上來進行,使用extends關鍵字實現繼承;子類中可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類資料和方法的機制,這是類之間的一種關係,提高了軟體的可重用性和可擴充套件性。

4、多型:多型就是在宣告時使用父類,在實現或呼叫時使用具體的子類;即不修改程式程式碼就可以改變程式執行時所繫結的具體程式碼,讓程式可以選擇多個執行狀態,這就是多型性,多型增強了軟體的靈活性和擴充套件性。這裡可以舉個例子,比如宣告時使用的是動物類,呼叫時傳遞的是一個貓類(動物類的子類)的物件,具體執行父類裡動物——吃的方法時,實際執行的是貓——吃的方法。

10、 abstract class和interface有什麼區別?

1、抽象類裡面可以用普通方法,而介面中的方法全部都是抽象的;

2、在應用範圍上來說,介面往往在程式設計的時候,用來定義程式模組的功能,方便各模組協同工作;抽象類是對相似類進行抽象,形成一個抽象的父類可供重用!

11、 String是最基本的資料型別嗎?

1、String是個類,不是基本資料型別;

2、基本資料型別包括byte、int、char、long、float、double、boolean和short。

12、 String 和StringBuffer的區別

1、String是個不可變長度的字串,而StringBuffer是個可變長度的字串;

2、在對String類進行操作的時候(例如增加字元),實際上是在記憶體中產生了一個新的String物件; 而StringBuffer是給原物件增加字元,不是新建立一個物件;

13、 陣列有沒有length()這個方法? String有沒有length()這個方法?

陣列沒有length()這個方法,有length的屬性。String有length()這個方法。

14、 final, finally, finalize的區別。

final 用於宣告屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。

finally是異常處理語句結構的一部分,表示總是執行。

finalize是Object類的一個方法,在垃圾收集器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。JVM不保證此方法總被呼叫

15、 請說一下你常用的幾種異常?

比如:

1、 空指標異常;

2、 陣列下標越界;

3、 型別轉換異常;

4、 算數異常,例如除數為零;

5、 IO異常,比如說找不到檔案;

6、 找不到類異常;

7、 sql異常,例如sql語句不能正常執行;

8、 …

16、 執行緒的基本概念?執行緒的基本狀

【Java面試寶典版】相關文章: