職場

當前位置 /首頁/範文/職場/列表

java開發面試技巧方法

  篇一:Java開發工程師面試題總結

java開發面試技巧方法

JAVA開發工程師面試題總結--JAVASE部分

1.談談final,finally,finalize的區別?

final是Java的一個關鍵字,用於定義不能被繼承的類,不能被覆寫的方法,常量。 finally是Java的一個關鍵字,是異常處理操作的統一出口。

finalize是Object類中所提供的一個方法,用於在物件回收之前進行收尾操作。

2.請解釋Java實現可移植性的原理

Java程式最終通過位元組碼檔案執行,執行的時候位元組碼需要JVM的支援,但是在不同的作業系統上有不同JVM,程式不用關係操作系統,只關心JVM,只要JVM不改變,程式可以在作業系統間任意移植。

3.請解釋path和classpath的區別?

path是windows的環境屬性,用於指定可執行命令的路徑

classpath是指在java程式執行的時候,用於指定類的載入路徑

4.請說明下JAVA中的幾個特殊關鍵字(瞭解,一般面試面這個問題的都是一些煞筆公司)

未使用到的關鍵字:goto、const

有特殊含義的關鍵字:null、true、false

JDK1.4之後增加了一個assert關鍵字

JDK1.5之後增加了一個enum關鍵字

5.請解釋JAVA中的資料型別的劃分,並說出其預設值 基本資料型別:

數值型:

整型:byte、short、int、long; 0

浮點型:float、double; 0

字元型:char 空字元:’u0000’

布林型:boolean false

引用資料型別:陣列、類、介面 null

6.請解釋&和&&、|和||的區別

&(普通與)和|(普通或)指的是所有條件都進行判斷;

&&(短路與)如果前面的條件不滿足,則後面不再進行判斷,||(短路或)如果前面的條件滿足則後面不再判斷;

在開發之中為了效能的提高,主要使用短路與和短路或操作;

&和|除了用於邏輯運算之外,也可以進行位運算的操作;

7.請解釋String類的兩種比較方式

在String類中可以使用“==”和equals()兩種操作來進行字串的比較

“==”比較的是兩個字串的記憶體地址數值,屬於數值比較

equals()是String類中提供的一個方法,用於字串內容的比較,最簡單的做法就是比較字串永遠使用equals()方法就行了

8.請解釋String物件的兩種例項化方式的區別

首先String物件的例項化方式有兩種:一種是直接賦值,另外一種是通過構造方法完成

直接賦值:只開闢一個堆記憶體空間,而且採用了共享設計模式,可以自動入池,以備下次物件繼續使用

構造方法:會開闢兩快記憶體空間,其中有一塊空間將成為垃圾,而且不會自動入池,可以使用intern()方法進行手工入池

從開發角度來說,很明顯使用直接賦值的方式會更好一些

9.請談談方法的過載和覆寫的區別

首先過載和覆寫都是物件導向多型性的一個體現

過載

單詞:OverLoading

概念:方法名稱相同,引數的型別或個數不同

範圍:發生在一個類之中

許可權:過載的時候沒有許可權的限制

覆寫

單詞:Override

概念:方法名稱、返回值、引數的個數及型別全部相同

範圍:發生在繼承關係中

許可權:子類覆寫的方法不能擁有比父類更嚴格的訪問控制權限

過載的時候可以返回值型別不相同,但是沒有任何意義

10.請談談this和super的區別

this

屬性:this.屬性表示的是找到本類的屬性,如果本類沒有找到則繼續查詢父類 方法:this方法()表示找到本類的方法,如果本類沒有找到則繼續查詢父類 構造:必須放在構造方法的首行,不能與super關鍵字同時出現

特殊:表示當前物件

super

屬性:super.屬性直接在子類之中查詢父類中的指定屬性,不在查詢子類本身 方法:super.方法()直接在子類之中查詢父類中的指定方法,不在查詢子類本身 構造:必須放在構造方法首行,不能與this關鍵字同時出現

在開發之中使用this和super可以明確的劃分出子類和父類之間的操作

11.請解釋Collection和Collections的關係

兩者之間在定義上沒有直接的關係

Collection是單值集合的操作最大父介面

Collections只是一個集合的工具操作類

12.為什麼構造方法的定義上不寫返回值型別,如果不返回寫一個void不也可以嗎

如果構造方法上寫了void的話,則表示的就是一個普通方法了,普通方法是在物件例項化之後呼叫的,而構造方法是在物件例項化的時候同時呼叫的

13.請解釋Error和Exception的區別

Error:表示的是JVM出錯,即,程式還沒有執行時所發生的錯誤,使用者無法處理; Exception:表示程式執行時發生的錯誤,使用者可以處理;

14.請解釋String與StringBuffer的區別,分別在什麼時候用 String的內容不能改變(改變的是地址的指向),而StringBuffer的內容是可以改變的 String類和StringBuffer類中定義的方法可以很好的實現互補

從開發角度來說,大部分情況使用的都是String類,很少使用StringBuffer,使用StringBuffer只有一個前提,當字串的內容需要不斷的修改物件的時候

15.請解釋throw和throws的區別

throw表示人為的進行異常丟擲,手工丟擲異常

throws表示:用於方法宣告上,表示一個方法不處理異常,而是交給被呼叫處處理

16.使用char型資料能否表示一個漢字

首先一個漢字佔2個位元組,而UNICODE編碼也是16位的,java又是採用UNICODE編碼,但是儲存漢字,語言必須是中文才可以儲存

17.是否可以繼承String類

不可以,因為String類是final類,不可以被繼承

18.抽象類可以有構造方法嗎

可以有構造方法,而且抽象類中的子類例項化物件的時候也依然符合子類物件例項化的過程,先呼叫父類的構造方法,為父類的屬性初始化,而後呼叫子類自己的構造方法,所以抽象類中的屬性,static屬性,常量等都是可以定義的

19.抽象類中可以沒有抽象方法嗎

可以沒有抽象方法,儘管沒有抽象方法,也不能直接使用關鍵字new例項化物件

20.一個抽象類中能否包含內部類或內部抽象類

可以

21.一個抽象類能否使用static 關鍵字宣告

在外部的抽象類肯定不能使用static關鍵字

在內部抽象類中使用static,則表示外部類,則可以使用

22.一個抽象類能否使用final宣告

不能,final定義的類不能有子類,而抽象類必須有子類

23.請解釋多執行緒的兩種例項化方式

多執行緒的兩種實現方式是繼承Thread類和實現Runnable介面,不管使用何種方式都要覆寫run()方法

繼承Thread類與實現Runnable介面相比會有當繼承的侷限

Thread類也是Runnablee介面的子類,不管通過何種方式實現多執行緒,最終多需要依靠Thread類的start()方法啟動

使用Runnablee介面可以更加清楚的表示出資料庫共享的概念

24.多個執行緒操作同一資源的時候需要注意什麼?會帶來那些問題 多個執行緒操作同一資源的時候必須考慮到同步,但是過多的同步會造成死鎖

25.抽象類和介面的區別

抽象類

關鍵字:abstract class

組成:屬性,(全域性)常量,構造方法,普通方法,(抽象方法),static方法 許可權:可以使用各種許可權,private,public等

使用:抽象類必須有子類,子類必須繼承抽象類

子類關鍵字:class 子類 extends 父類

與介面的關係:一個抽象類可以實現多個介面

設計模式:模板設計

侷限:子類只能繼承一個父類,有單繼承限制

介面:

關鍵字:interface

組成:全域性常量,抽象方法

許可權:所有許可權必須都是public

使用:介面必須有子類,子類必須實現介面

子類關鍵字:class 子類 implements 介面A,介面B

與抽象類的關係:介面不能繼承抽象類,但是可以繼承多個介面

設計模式:工廠設計模式,代理設計模式

侷限:子類可以實現多個介面,避免了單繼承

當介面和抽象類都能滿足的情況下,優先使用介面,因為介面避免了單繼承的侷限性,便於擴充套件

介面與抽象類合作介面卡設計模式

26.請解釋下JAVA中的垃圾回收機制

垃圾收集機制指的是可以對無用的記憶體空間進行釋放,而對垃圾的收集採用兩種方式 第一種:不定期的進行自動的垃圾回收,不可控制的

第二種:Runtime中的gc()方法回收,可控的

27.作用域public,private,protected以及不寫時的區別

28.如果現在父類中的方法是private,子類中覆寫此方法為default許可權可以嗎?

從概念上來說是可以的,因為父類是private,子類覆寫之後是default,而default許可權>private,但是從實際角度來說,這種操作是不可能實現的,因為private比較特殊

  篇二:Java軟體開發工程師面試題寶典

1、瞭解j2EE規範,選擇幾點進行重點消化。

2、異常分類,一般性異常和執行期異常,異常捕獲。

3、瞭解spring mvc框架,和struts mvc框架的區別。

4、要對spring和ibatis非常熟悉,必須,熟知。

5、應適當關注需求分析和產品方面的知識。

6、瞭解多執行緒相關知識

7、瞭解java5以及java6新特性

8、熟悉linux相關命令操作。

9、工廠模式,簡單工廠、抽象工廠的區別

10、動態代理模式

11、

一、String,StringBuffer, StringBuilder 的區別是什麼?String為什麼是不可變的?

二、VECTOR,ARRAYLIST, LINKEDLIST的`區別是什麼?

三、HASHTABLE, HASGMAQ,TreeMap區別

四、ConcurrentMap和HashMap的區別

五、Tomcat,apache,jboss的區別

六、GET POST區別

七、SESSION, COOKIE區別

八、Servlet的生命週期

九、HTTP 報文包含內容

十、Statement與PreparedStatement的區別,什麼是SQL注入,如何防止SQL注入 十一、redirect, foward區別

十二、關於JAVA記憶體模型,一個物件(兩個屬性,四個方法)例項化100次,現在記憶體中的儲存狀態,

幾個物件,幾個屬性,幾個方法。

十三、談談Hibernate的理解,一級和二級快取的作用,在專案中Hibernate都是怎麼使用快取的

十四、反射講一講,主要是概念,都在哪需要反射機制,反射的效能,如何優化 十五、談談Hibernate與Ibatis的區別,哪個效能會更高一

十六、對Spring的理解,專案中都用什麼?怎麼用的?對IOC、和AOP的理解及實現原理

十七、執行緒同步,併發操作怎麼控制

十八、描述struts的工作流程。

十九、Tomcat的session處理,如果讓你實現一個tomcatserver,如何實現session機制

二十、關於Cache(Ehcache,Memcached)

二一、sql的優化相關問題

二二、oracle中 rownum與rowid的理解,一千條記錄我查200到300的記錄怎麼查? 二三、如何分析ORACLE的執行計劃?

二四、 DB中索引原理,種類,使用索引的好處和問題是什麼?

二五、JVM垃圾回收實現原理。垃圾回收的執行緒優先順序。

二六、jvm 最大記憶體設定。設定的原理。結合垃圾回收講講。

Java面試寶典2010版

一. Java基礎部分..................................................................................................................... 8

1、一個""原始檔中是否可以包括多個類(不是內部類)?有什麼限制? ...... 9

2、Java有沒有goto ....................................................................................................... 9

3、說說&和&&的區別。 ............................................................................................... 9

4、在JAVA中如何跳出當前的多重巢狀迴圈? .......................................................... 9

5、switch語句能否作用在byte上,能否作用在long上,能否作用在String上 10

6、short s1 = 1; s1 = s1 + 1;有什麼錯 short s1 = 1; s1 += 1;有什麼錯 ..................... 10

7、char型變數中能不能存貯一箇中文漢字為什麼 ................................................ 10

8、用最有效率的方法算出2乘以8等於幾 ............................................................. 10

9、請設計一個一百億的計算器 ................................................................................... 11

10、使用final關鍵字修飾一個變數時,是引用不能變,還是引用的物件不能變?

......................................................................................................................................... 12

11、"=="和equals方法究竟有什麼區別? ................................................................. 12

12、靜態變數和例項變數的區別? ............................................................................. 13

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

14、Integer與int的區別 .............................................................................................. 14

15、d(11.5)等於多少 d(-11.5)等於多少 ................................... 14

16、下面的程式碼有什麼不妥之處 ............................................................................... 14

17、請說出作用域public,private,protected,以及不寫時的區別 ........................ 15

18、Overload和Override的區別。Overloaded的方法是否可以改變返回值的型別

......................................................................................................................................... 15

19、構造器Constructor是否可被override ................................................................ 16

20、介面是否可繼承介面 抽象類是否可實現(implements)介面 抽象類是否可繼

承具體類(concrete class) 抽象類中是否可以有靜態的main方法? ...................... 16

21、寫clone()方法時,通常都有一行程式碼,是什麼? ............................................. 16

22、物件導向的特徵有哪些方面 ................................................................................. 16

23、java中實現多型的機制是什麼? ......................................................................... 18

24、abstract class和interface有什麼區別 ................................................................. 18

25、abstract的method是否可同時是static,是否可同時是native,是否可同時是

synchronized .................................................................................................................. 20

26、什麼是內部類?Static Nested Class 和 Inner Class的不同。 ........................... 20

27、內部類可以引用它的包含類的成員嗎?有沒有什麼限制? ............................. 22

28、Anonymous Inner Class (匿名內部類) 是否可以extends(繼承)其它類,是否可

以implements(實現)interface(介面) ............................................................................ 22

29、lass()方法呼叫 .......................................................................... 23

30、String是最基本的資料型別嗎 ............................................................................ 23

31、String s = "Hello";s = s + " world!";這兩行程式碼執行後,原始的String物件中的

內容到底變了沒有? ..................................................................................................... 23

32、是否可以繼承String類 ....................................................................................... 24

33、String s = new String("xyz");建立了幾個String Object 二者之間有什麼區別?

......................................................................................................................................... 24

34、String 和StringBuffer的區別 ............................................................................... 25

35、如何把一段逗號分割的字串轉換成一個數組 ............................................... 25

36、陣列有沒有length()這個方法 String有沒有length()這個方法? .................... 26

37、下面這條語句一共建立了多少個物件:String s="a"+"b"+"c"+"d"; .................. 26

38、try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不

會被執行,什麼時候被執行,在return前還是後 .................................................... 26

39、下面的程式程式碼輸出的結果是多少? ................................................................. 27

40、final, finally, finalize的區別。 .............................................................................. 29

41、執行時異常與一般異常有何異同? ..................................................................... 29

42、error和exception有什麼區別 ............................................................................. 29

43、Java中的異常處理機制的簡單原理和應用。 ..................................................... 29

44、請寫出你最常見到的5個runtime exception。 ................................................... 30

45、JAVA語言如何進行異常處理,關鍵字:throws,throw,try,catch,finally分別代表

什麼意義?在try塊中可以丟擲異常嗎? .................................................................. 30

46、java中有幾種方法可以實現一個執行緒?用什麼關鍵字修飾同步方法 stop()和

suspend()方法為何不推薦使用? ................................................................................. 30

47、sleep() 和 wait() 有什麼區別 ............................................................................. 31

48、同步和非同步有何異同,在什麼情況下分別使用他們?舉例說明。 ................. 34

49. 下面兩個方法同步嗎?(自己發明) .................................................................. 34

50、多執行緒有幾種實現方法同步有幾種實現方法 ................................................. 34

51、啟動一個執行緒是用run()還是start() . .................................................................. 35

52、當一個執行緒進入一個物件的一個synchronized方法後,其它執行緒是否可進入此

物件的其它方法 ........................................................................................................... 35

53、執行緒的基本概念、執行緒的基本狀態以及狀態之間的關係 ................................. 35

54、簡述synchronized和的異同 ? ........................ 36

55、設計4個執行緒,其中兩個執行緒每次對j增加1,另外兩個執行緒對j每次減少1。

寫出程式。 ..................................................................................................................... 38

56、子執行緒迴圈10次,接著主執行緒迴圈100,接著又回到子執行緒迴圈10次,接著

再回到主執行緒又迴圈100,如此迴圈50次,請寫出程式。 .................................... 40

57、介紹Collection框架的結構 .................................................................................. 45

58、Collection框架中實現比較要實現什麼介面 ....................................................... 45

59、ArrayList和Vector的區別 .................................................................................... 45

60、HashMap和Hashtable的區別 .............................................................................. 46

61、List 和 Map 區別 ............................................................................................... 46

62、List, Set, Map是否繼承自Collection介面 ......................................................... 47

63、List、Map、Set三個介面,存取元素時,各有什麼特點? ............................. 47

64、說出ArrayList,Vector, LinkedList的儲存效能和特性 ......................................... 48

65、去掉一個Vector集合中重複的元素 .................................................................... 48

66、Collection 和 Collections的區別。 ..................................................................... 48

67、Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢 是用==還是

equals() 它們有何區別 .............................................................................................. 48

68、你所知道的集合類都有哪些?主要方法? ......................................................... 49

69、兩個物件值相同(ls(y) == true),但卻可有不同的hash code,這句話對不

對 ................................................................................................................................... 49

70、TreeSet裡面放物件,如果同時放入了父類和子類的例項物件,那比較時使用的是父類的compareTo方法,還是使用的子類的compareTo方法,還是拋異常!

......................................................................................................................................... 50

71、說出一些常用的類,包,介面,請各舉5個 ..................................................... 51

72、java中有幾種型別的流?JDK為每種型別的流提供了一些抽象類以供繼承,請

說出他們分別是哪些類? ............................................................................................. 51

73、位元組流與字元流的區別 ......................................................................................... 51

74、什麼是java序列化,如何實現java序列化?或者請解釋Serializable介面的作

用。 ................................................................................................................................. 53

75、描述一下JVM載入class檔案的原理機制 ....................................................... 53

76、heap和stack有什麼區別。 .................................................................................. 53

77、GC是什麼 為什麼要有GC .............................................................................. 54

78、垃圾回收的優點和原理。並考慮2種回收機制。 ............................................. 54

79、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法

主動通知虛擬機器進行垃圾回收? ................................................................................. 54

80、什麼時候用assert。 ............................................................................................... 54

81、java中會存在記憶體洩漏嗎,請簡單描述。 ......................................................... 55

82、能不能自己寫個類,也叫ng? ....................................................... 58

83. Java程式碼查錯................................................................................................................... 59

二. 演算法與程式設計 ...................................................................................................................... 63

1、編寫一個程式,將檔案中的單詞與檔案中的單詞交替合併到檔案中,檔案中的單詞用回車符分隔,檔案中用回車或空格進行分隔。 . 63

2、編寫一個程式,將d:java目錄下的所有檔案複製到d:jad目錄下,並將原

來檔案的副檔名從改為。 .............................................................................. 64

3、編寫一個擷取字串的函式,輸入為一個字串和位元組數,輸出為按位元組擷取的字串,但要保證漢字不被擷取半個,如“我ABC”,4,應該擷取“我AB”,輸入“我ABC漢DEF”,6,應該輸出“我ABC”,而不是“我ABC+漢的半個”。

......................................................................................................................................... 66

4、有一個字串,其中包含中文字元、英文字元和數字字元,請統計和打印出各

個字元的個數。 ............................................................................................................. 67

5、說明生活中遇到的二元樹,用java實現二元樹 .................................................. 68

6、從類似如下的文字檔案中讀取出所有的姓名,並打印出重複的姓名和重複的次

數,並按重複次數排序: ............................................................................................. 73

7、寫一個Singleton出來。 ......................................................................................... 77

8、遞迴演算法題1 ............................................................................................................ 79

9、遞迴演算法題2 ............................................................................................................ 80

10、排序都有哪幾種方法?請列舉。用JAVA實現一個快速排序。 ...................... 81

11、有陣列a[n],用java程式碼將陣列元素順序顛倒 ................................................. 82

12.金額轉換,阿拉伯數字的金額轉換成中國傳統的形式如:(¥1011)->(一千

零一拾一元整)輸出。 ................................................................................................. 83

三. html&JavaScript&ajax部分 ............................................................................................. 84

1. 判斷第二個日期比第一個日期大 ............................................................................ 84

2. 用table顯示n條記錄,每3行換一次顏色,即1,2,3用紅色字型,4,5,6

用綠色字型,7,8,9用紅顏色字型。 ...................................................................... 85

3、HTML 的 form 提交之前如何驗證數值文字框的內容全部為數字 否則的話提

示使用者並終止提交 ....................................................................................................... 86

4、請寫出用於校驗HTML文字框中輸入的內容全部為數字的javascript程式碼 .... 86

5、說說你用過那些ajax技術和框架,說說它們的區別 .......................................... 87

四. Java web部分 ................................................................................................................... 87

1、Tomcat的優化經驗 .................................................................................................. 87

2、HTTP請求的GET與POST方式的區別 .............................................................. 87

3、解釋一下什麼是servlet; .......................................................................................... 87

4、說一說Servlet的生命週期 .................................................................................... 87

5、Servlet的基本架構 .................................................................................................. 88

6、SERVLET API中forward() 與redirect()的區別? ............................................... 88

7、什麼情況下呼叫doGet()和doPost()? ................................................................... 88

8、Request物件的主要方法: ..................................................................................... 88

9、forward 和redirect的區別 ...................................................................................... 89

10、ttribute() 和 arameter() 有何區別............................... 89

11. jsp有哪些內建物件作用分別是什麼 分別有什麼方法? ................................ 89

12. jsp有哪些動作作用分別是什麼 .......................................................................... 90

13、JSP的常用指令 ...................................................................................................... 90

14. JSP中動態INCLUDE與靜態INCLUDE的區別? ............................................. 91

15、兩種跳轉方式分別是什麼有什麼區別 ............................................................. 91

16、頁面間物件傳遞的方法 ......................................................................................... 91

17、JSP和Servlet有哪些相同點和不同點,他們之間的聯絡是什麼? ................. 91

18、MVC的各個部分都有那些技術來實現如何實現 ........................................... 91

19、我們在web應用開發過程中經常遇到輸出某種編碼的字元,如iso8859-1等,

如何輸出一個某種編碼的字串? ............................................................................. 92

20.現在輸入n個數字,以逗號,分開;然後可選擇升或者降序排序;按提交鍵就

在另一頁面顯示按什麼排序,結果為,提供reset .................................................... 92

五. 資料庫部分 ...................................................................................................................... 92

1、用兩種方式根據部門號從高到低,工資從低到高列出每個員工的資訊。 ....... 92

2、列出各個部門中工資高於本部門的平均工資的員工數和部門號,並按部門號排

序..................................................................................................................................... 93

3、儲存過程與觸發器必須講,經常被面試到 ......................................................... 93

4、資料庫三正規化是什麼 ............................................................................................. 95

5、說出一些資料庫優化方面的經驗 ......................................................................... 96

6、union和union all有什麼不同 ............................................................................... 97

7.分頁語句 ...................................................................................................................... 98

8.用一條SQL語句 查詢出每門課都大於80分的學生姓名................................... 101

9.所有部門之間的比賽組合 ........................................................................................ 102

10.每個月份的發生額都比101科目多的科目 .......................................................... 102

11.統計每年每月的資訊 .............................................................................................. 104

12.顯示文章標題,發帖人、最後回覆時間 .............................................................. 105

  篇三:Java面試題—WEB開發必看

以前的收藏,估計很少有這麼全的面試題集了^_^

基礎知識:

1. C++或Java中的異常處理機制的簡單原理和應用。 當JAVA程式違反了JAVA的語義規則時,JAVA虛擬機器就會將發生的錯誤表示為一個異常。違反語義規則包括2種情況。一種是JAVA類庫內建的語義檢查。例如陣列下標越界,會引發IndexOutOfBoundsException;訪問null的物件時會引發NullPointerException。另一種情況就是JAVA允許程式設計師擴充套件這種語義檢查,程式設計師可以建立自己的異常,並自由選擇在何時用throw關鍵字引發異常。所有的異常都是able的子類。

的介面和C++的虛類的相同和不同處。

由於Java不支援多繼承,而有可能某個類或物件要使用分別在幾個類或物件裡面的方法或屬性,現有的單繼承機制就不能滿足要求。與繼承相比,介面有更高的靈活性,因為介面中沒有任何實現程式碼。當一個類實現了介面以後,該類要實現接口裡面所有的方法和屬性,並且接口裡面的屬性在預設狀態下面都是publicstatic,所有方法預設情況下是public.一個類可以實現多個介面。

3.垃圾回收的優點和原理。並考慮2種回收機制。

Java語言中一個顯著的特點就是引入了垃圾回收機制,使c++程式設計師最頭疼的記憶體管理的問題迎刃而解,它使得Java程式設計師在編寫程式的時候不再需要考慮記憶體管理。由於有個垃圾回收機制,Java中的物件不再有“作用域”的概念,只有物件的引用才有“作用域”。垃圾回收可以有效的防止記憶體洩露,有效的使用可以使用的記憶體。垃圾回收器通常是作為一個單獨的低級別的執行緒執行,不可預知的情況下對記憶體堆中已經死亡的或者長時間沒有使用的物件進行清楚和回收,程式設計師不能實時的呼叫垃圾回收器對某個物件或所有物件進行垃圾回收。回收機制有分代複製垃圾回收和標記垃圾回收,增量垃圾回收。

4.請說出你所知道的執行緒同步的方法。

wait():使一個執行緒處於等待狀態,並且釋放所持有的物件的lock。

sleep():使一個正在執行的執行緒處於睡眠狀態,是一個靜態方法,呼叫此方法要捕捉InterruptedException異常。

notify():喚醒一個處於等待狀態的執行緒,注意的是在呼叫此方法的時候,並不能確切的喚醒某一個等待狀態的執行緒,而是由JVM確定喚醒哪個執行緒,而且不是按優先順序。

Allnotity():喚醒所有處入等待狀態的執行緒,注意並不是給所有喚醒執行緒一個物件的鎖,而是讓它們競爭。

5.請講一講解構函式和虛擬函式的用法和作用。

r與Exception有什麼區別?

Error表示系統級的錯誤和程式不必處理的異常,

Exception表示需要捕捉或者需要程式進行處理的異常。

7.在java中一個類被宣告為final型別,表示了什麼意思?

表示該類不能被繼承,是頂級類。

8.描述一下你最常用的程式設計風格。

和stack有什麼區別。

棧是一種線形集合,其新增和刪除元素的操作應在同一段完成。棧按照後進先出的方式進行處理。

堆是棧的一個組成元素

10.如果系統要使用超大整數(超過long長度範圍),請你設計一個資料結構來儲存這種超大型數字以及設計一種演算法來實現超大整數加法運算)。

publicclassBigInt()

{

int[]ArrOne=newArrOne[1000];

StringintString="";

publicint[]Arr(Strings)

{

intString=s;

for(inti=0;i<t;i++)

{

11.如果要設計一個圖形系統,請你設計基本的圖形元件(Point,Line,Rectangle,Triangle)的簡單實現

12,談談final,finally,finalize的區別。

final—修飾符(關鍵字)如果一個類被宣告為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被宣告為abstract的,又被宣告為final的。將變數或方法宣告為final,可以保證它們在使用中不被改變。被宣告為final的變數必須在宣告時給定初值,而在以後的引用中只能讀取,不可修改。被宣告為final的方法也同樣只能使用,不能過載。

finally—再異常處理時提供finally塊來執行任何清除操作。如果丟擲一個異常,那麼相匹配的catch子句就會執行,然後控制就會進入finally塊(如果有的話)。

finalize—方法名。Java技術允許使用finalize()方法在垃圾收集器將物件從記憶體中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個物件沒有被引用時對這個物件呼叫的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統資源或者執行其他清理工作。finalize()方法是在垃圾收集器刪除物件之前對這個物件呼叫的。

13,AnonymousInnerClass(匿名內部類)是否可以extends(繼承)其它類,是否可以implements(實現)interface(介面)

匿名的內部類是沒有名字的內部類。不能extends(繼承)其它類,但一個內部類可以作為一個介面,由另一個內部類實現。

14,StaticNestedClass和InnerClass的不同,說得越多越好(面試題有的很籠統)。

NestedClass(一般是C++的說法),InnerClass(一般是JAVA的說法)。Java內部類與C++巢狀類最大的不同就在於是否有指向外部的引用上。具體可見

=704&page=1

注:靜態內部類(InnerClass)意味著1建立一個static內部類的物件,不需要一個外部類物件,2不能從一個static內部類的一個物件訪問一個外部類物件

第四,&和&&的區別。

&是位運算子。&&是布林邏輯運算子。

15,HashMap和Hashtable的區別。

都屬於Map介面的類,實現了將惟一鍵對映到特定的值上。

HashMap類沒有分類或者排序。它允許一個null鍵和多個null值。

Hashtable類似於HashMap,但是不允許null鍵和null值。它也比HashMap慢,因為它是同步的。

16,Collection和Collections的區別。

  篇四:java_web開發人員面試題及答案

java 面試題

一.選擇題(每題1分)

1. jsp 有幾個內建物件?()(單選)

A 5個 B 6個C9個 D 8個 2.在JAVA中,如何跳出當前的多重巢狀迴圈?()(多選)

A break Breturn C forward D finally

3. 四種會話跟蹤技術,哪個範圍最大?()(單選)

A page B request C session Dapplication

4. java中有幾種方法可以實現一個執行緒?()(單選)

A 1種B 2種 C 3種 D 4種

5. 同步有幾種實現方法()(單選)

A 4種B 2種 C 3種 D 1種 6. xml有哪些解析技術()(多選)

ADOMBSAXCSTAXD JDOM

7. 下列說法正確的是()(多選) A 構造器Constructor可被繼承

BString類不可以繼承 C 判斷兩個物件值相同用“==”

Dchar型變數中能存貯一箇中文漢字

8.下面說法錯誤的是()(單選)

A Vector是執行緒安全的

Bfloat f=3.4是正確的

C StringBuffer的長度是可變的

D StringBuffer的長度是不可變的 9. 下列關於集合的說法正確的是()(多選)

AList 的具體實現包括 ArrayList 和 Vector

BMap 集合類用於儲存元素對(稱作"鍵"和"值"),其中每個鍵對映到一個值

C Set的元素是有序的

DHashtable是執行緒安全的。 10. 下列關於執行緒說法正確的是()(多選)

A呼叫sleep不會釋放物件鎖。

B呼叫wait方法導致本執行緒放棄物件鎖

C當一個執行緒進入一個物件的一個synchronized方法後,其它執行緒不可進入此物件的其它方法

D notify():喚醒全部處於等待狀態的執行緒。

11. 給定JSP程式原始碼如下,該JSP執行後輸出的結果是()。(單選)

<%int count="1;%">

Count:<%=++count%>

A Count:1BCount:2 C1:2 D Count:

12在J2EE中的一個JSP檔案中,有表示式<%=2+3%>,它將輸出()(單選)

a)2+3b)5c)23d)不會輸出,因為表示式是錯誤的

13 在J2EE中,JSTL提供條件標籤以支援JSP頁面的各種條件,其中()類似於Java語言的switch語句。(單選)

a)b)c)d)

14. 在進行Java Web開發時,假定一個變數儲存在session中,要獲得這個變數的值,可以使用以下()語句。(單選)

a)ttribute(“name”) b)ttribute(“name”)

c)ttribute(“name”)

d)nitParameter(“name”)

15)在J2EE中,編寫Servlet過濾器時,()介面用於呼叫過濾器鏈中的下一個過濾器。()(單選)

a)Filterb)FilterConfigc)FilterChaind)Servlet

16) 關於檢視的描述正確的是() (單選)

a) 檢視是一種特殊的表,它儲存了使用者定製的資料。

b) 檢視僅用於使用者進行查詢,不可以通過檢視對資料進行修改。

c) 在sql server中可以通過用T-sql語句來建立,也可以通過企業管理器。

d) 建立檢視只能操作本機器上的資料庫表。

17)STRUTS框架中,()類在檢視層和控制層之間傳遞HTML表單資料。(單選) a) Action b) ActionForwardc) ActionFormd) ActionServlet

18)Struts控制器的主要任務是接受使用者請求、根據使用者請求呼叫對應的模型元件、獲取業務邏輯執行結果的根據處理結果選擇適合的檢視元件返回給使用者,實現Struts控制器的類中不包括()。(單選) a)ActionServletb)Actionc) ActionFormd)ActionForward

19)在OOD中,類和介面之間的關係稱之為()。(單選)

a) 泛化b)實現c) 關聯d) 繼承

20) 以下關於SessionFactory的說法哪些正確?()(多選)

A) 對於每個資料庫事務,應該建立一個SessionFactory物件

B) 一個SessionFactory物件對應一個數據庫儲存源。

C) SessionFactory是重量級的物件,不應該隨意建立。如果系統中只有一個數據庫儲存源只需要建立一個。

D) SessionFactory的load()方法用於載入持久化物件

21) 關於AOP錯誤的()(單選)

A)AOP將散落在系統中的“方面”程式碼集中實現

B)AOP有助於提高系統可維護性

C)AOP已經表現出將要替代物件導向的趨勢 D)AOP是一種設計模式,Spring提供了一種實現

22) 依賴注入說法正確的(單選)

A)依賴注入的目標是在程式碼之外管理程式組建間的依賴關係

B)依賴注入即是“面向介面”的程式設計

C)依賴注入是物件導向技術的替代品

D)依賴注入的使用會增大程式的規模

23)以下哪些屬於Session的方法?()(多選)

A)load()

B)save()

C)()

D)update()

E)open()

F)close() 24) 下面那些是Hibernate的查詢方式()(多選)

A) sql B) hql C)Criteria

25) 以下資料結構不屬於線性結構的是()(單選)

A) 佇列 B) 線性表C)二元樹 D) 棧

26)下列是檔案讀寫的類是()(多選)

A)File Reader B) File C)FileWriter D) InputStream

27)資料庫技術中的“髒資料',是指()的資料。(單選)

A) 錯誤B回返C未提交D未提交的隨後又被撤消

28)在計算機中,—個位元組是由多少個二進位制位組成的() (單選)

A). 4 B). 8 C).16 D). 24

29)設正x、y均為整型變數,且x=10 y=3,則以下語句printf("%d,%d ",x--,--y); 的輸出結果是()(單選) A).10,3 B). 9,3 C). 9,2 D).10,2

30) 下列不屬於物件導向的方法是()(單選)

A).物件 B). 類 C). 繼承 D).過程呼叫

二. 填空(每空1分) 1. String s = new String("xyz");建立了____2_個String 物件?

2. d(9.5)等於____10_ d(-9.5)等於______ -9

3. try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會被執行,什麼時候被執行,在return_________ ( 前還是後?)

4. 如何現實servlet的單執行緒模式<%@ page="" isthreadsafe="false">

5. 類變數必須帶的修飾符是 _________static____

6. final類可以修飾在屬性 , 方法 和 ______類_ 前面

7. Java預設的包是________________.* ___

rnate裡面怎樣實現類與類之間的關係___________________________表對映_______

9. Socket 程式設計伺服器端用___________serverSocket_類來建立socket物件

三. 判斷題(每題2分)

1. 依賴注入即是“面向介面”的程式設計。錯

2. Overload和Override都是java多型的不同體現形式。對

3. String是最基本的資料型別錯

4. 啟動一個執行緒是用start()對

5. 介面可以繼承介面對

四.簡答題(每題4分)

1.下列程式列印結果是

int[] arr = {1,3,3,2,8};

String str = “”;

int i=0;

publicvoid doIt(){

for(;i<th;){

if(arr[i]>arr[i+1]){

str=arr[i]+arr[i+1]+str;

break;

} elseif(arr[i]<arr[i+1]){

str=arr[i]+str+arr[i+1];

i++;

continue;

} else{

str+=arr[i];

i++;

}

}

tln(i);

tln(str);

}

i=2;str=5133

2. 將會打印出什麼 package test; public class FatherClass

public FatherClass()

{ tln("FatherClass Create"); }

類:package test;import erClass;

public class ChildClass extends FatherClass public ChildClass() { tln("ChildClass Create"); }

public static void main(String[] args) { FatherClass fc = new FatherClass();

ChildClass cc = new ChildClass(); }}

輸出結果:

fatherClass Create

fatherClass Create

hildClass Create

3.下列程式對還是錯,如果錯請說明原因!

abstract class Name {

private String name;

public abstract boolean isStupidName(String name) {}

abstract method必須以分號結尾,且不帶花括號

4. 表:table1(FId,Fclass,Fscore),用最高效最簡單的SQL列出各班成績最高的列表,顯示班級,成績兩個欄位。

select fclass,max(fscore) from table1 group by fclass,fid

5. 下面程式執行結果是

String[] arr1 ={”a”,”b”,”1″,”c”,”b”};

List lst1 = new ArrayList();

(”d”);

ll(lst1,arr1);

tln(lst1);

Setset1 = new HashSet();

(”d”);

ll(set1, arr1);

tln(set1);

執行結果:

d, a, b, 1, c, b

  篇五:JAVA開發工程師面試題

一、 概念題

1、 解釋什麼是佇列(queue),什麼棧(stack),有何區別?

佇列是一種特殊的線性表,他按照先進先出的原則儲存資料。

棧是一種資料結構,它按照後進先出的原則儲存資料,先進入的資料被壓入棧底,最後的資料在棧頂,需要讀資料的時候從棧頂開始彈出資料。 2、 用C/C++或者Php,或Java,給出例子,解釋什麼是異常(exception)?

3、 簡述HashMap、HashSet、HashTable的區別。 Hashtable類

Hashtable繼承Map介面,實現一個key-value對映的雜湊表。任何非空(non-null)的物件都可作為key或者value。 HashMap類

HashMap和Hashtable類似,不同之處在於HashMap是非同步的,並且允許null,即null value和null key,null key只能有一個。 HashSet類

HashSet繼承Set介面。

Set是一種不包含重複的元素的Collection。 4、public、protect和private的區別是什麼?

二、 資料庫相關題

試設計一個商品相關資料庫,要求包括商品類別、商品的基本資訊,並完成下面的三個查詢。

1、請寫出建立相關表的SQL語句。

2. 使用標準SQL,得到2008年1月份入庫的所有商品資訊。 3. 使用標準SQL,得到“Toy”分類下的所有商品資訊。

4. 使用標準SQL,統計出所有包含商品價格低於100.00的分類。

三、 程式填空題。

閱讀下列說明、圖以及Java程式,將應填入__(n)__處的字句寫在答題紙的對應欄內。 1、[說明]

某訂單管理系統的部分UML類圖如圖1-1所示

圖4-1 訂單管理系統的部分類圖

圖1-1中,Product表示產 品,ProductList表示所銷售產品的列表,Order表示產品訂單,0rderltem表示產品訂單中的一個條目,OrderList表示訂單列 表,SalesSystem提供訂單管理系統的操作介面。各個類的部分屬性和方法說明如表1-1所示。 表1-1

可以使用類java.util。ArrayList來實現物件的聚集關係,如圖4-1中OrderList與Order之間的聚集關係。for-each迴圈提供了一種遍歷物件集合的簡單方法。在for-each迴圈中,可以指定需要遍歷的物件集合以及用來接收集合中每個元素的變數,其語法如下: for(用來接收集合中元素的變數:需要遍歷的物件集合),如果要使用for-each迴圈來遍歷物件集合,那麼包含該物件集合的類必須實現介面able。Java程式1-1和Java程式1-2分別給出了類OrderList和方法statistic的Java程式碼。 [Java程式1-1] import .*;

public class OrderList __(1)__ {

private ArrayListorders; public OrderListO {

rs = new ArrayList(Order) 0; }

public void addOrder(Order order) { rs, add (order); }

public IteratoriteratorO {

return __(2)__;

}

public int getNunberOfOrders() { return rs. size(); }

}

[Java程式1-2]

import .*;

public class SalesSystem { private ProductList catalog; private OrderList sales;

private static PrintWriter stdOut = new PrintWriter(,true); public void statistic(){

for(Product product : __(3)__{ int number = 0;

for(Order order : __(4)__ {

for(__(5)__ : order){

if<ls(roduct())) numbe r +=uantity(); } }

tln(ode() + " " + escription() + " "

+ number + " " + number *product.getPrice()); }

}

//其餘的方法未列出 }

2、[說明]

傳輸門是傳輸系統中的重要裝置。傳輸門具有 Open(開啟)、Closed(關閉)、Opening(正在開啟)、StayOpen(保持開啟)、Closing(正在關閉)五種狀態。觸發狀態的轉換事件有 click、complete 和 timeout 三種。事件與其相應的狀態轉換如圖 2-1 所示。

圖 2-1 傳輸門響應事件與其狀態轉換圖

下面的[Java 程式碼 1]與[Java 程式碼 2]分別用兩種不同的設計思路對傳輸門進行狀態模擬,請填補程式碼中的空缺。 [Java 程式碼 1]

public class Door {

public static final int CLOSED = 1; public static final int OPENING = 2; public static final int OPEN = 3; public static final int CLOSING = 4; public static final int STAYOPEN = 5;

private int state = CLOSED;//定義狀態變數,用不同的整數表示不同狀態 private void setState(int state){e = state;} //設定傳輸門當前狀態

public void getState(){

// 此處程式碼省略,本方法輸出狀態字串,

// 例如,當前狀態為 CLOSED 時,輸出字串為”CLOSED” }

public void click() { //發生 click 事件時進行狀態轉換 if ( (1) ) setState(OPENING);

else if ( (2) ) setState(CLOSING); else if ( (3) ) setState(STAYOPEN); //發生 timeout 事件時進行狀態轉換

public void timeout(){ if (state == OPEN) setState(CLOSING); } public void complete(){ //發生 complete 事件時進行狀態轉換 if (state == OPENING) setState(OPEN);

else if (state == CLOSING) setState(CLOSED); }

public static void main(String [] args){ Door aDoor = new Door(); tate(); k(); tate(); lete(); tate(); k(); tate(); k(); tate(); return; } }

[Java 程式碼 2]

public class Door {

public final DoorState CLOSED = new DoorClosed(this); public final DoorState OPENING = new DoorOpening(this); public final DoorState OPEN = new DoorOpen(this);

public final DoorState CLOSING = new DoorClosing(this); public final DoorState STAYOPEN = new DoorStayOpen(this); private DoorState state = CLOSED; //設定傳輸門當前狀態

public void setState(DoorState state){ e = state;} public void getState(){ //根據當前狀態輸出對應的狀態字串 tln(lass()ame()); }

public void click(){ (4) ;} //發生 click 事件時進行狀態轉換 public void timeout(){ (5) ;}//發生 timeout 事件時進行狀態轉換 public void complete(){ (6) ;}//發生 complete 事件時進行狀態轉換 public static void main(String[] args){ Door aDoor = new Door(); tate(); k(); tate(); lete(); tate(); out(); tate(); return; } }

TAG標籤:面試 JAVA #