糯米文學吧

位置:首頁 > 範文 > 職場

java開發面試技巧方法

職場5.08K

  篇一: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; } }

標籤:JAVA 面試