1. 程式人生 > >Java 常考面試題及答案(吐血總結)持續更新...

Java 常考面試題及答案(吐血總結)持續更新...

1、解釋Java面向物件的特徵: 抽象、封裝、繼承、多型。

2、面向物件的好處是什麼?

3、Java常用的關鍵字、修飾符的使用

4、Java中的引數傳遞(值傳遞、引用傳遞)

5、簡述內部類、靜態內部類、匿名內部類的區別

6、try catch finally的使用

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

8、float f=3.4;是否正確?

9、解釋記憶體中的棧(stack)、堆(heap)和靜態儲存區的用法。

10、簡述while語句和do-while語句的特點與區別

11、swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?

12、陣列有沒有length()方法?String 有沒有length()方法?

13、在Java 中,如何跳出當前的多重巢狀迴圈?

14、構造器(constructor)是否可被重寫(override)?

15、兩個物件值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?

16、是否可以繼承String 類?

17、當一個物件被當作引數傳遞到一個方法後,此方法可改變這個物件的屬性,並可返回變化後的結果,那麼這裡到底是值傳遞還是引用傳遞?

18、抽象的(abstract)方法是否可同時是靜態的(static),是否可同時是本地方法(native),是否可同時被synchronized修飾?

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

20、是否可以從一個靜態(static)方法內部發出對非靜態(non-static)方法的呼叫?

21、如何實現物件克隆?

22、Anonymous Inner Class(匿名內部類)是否可以繼承其它類?是否可以實現介面?

23、Java 中的final關鍵字有哪些用法?

24、資料型別之間的轉換:

25、如何實現字串的反轉及替換?

26、怎樣將GB2312編碼的字串轉換為ISO-8859-1編碼的字串?

27、日期和時間:

28、列印昨天的當前時刻。

29、比較一下Java 和JavaSciprt。

30、什麼時候用assert?

31、Error 和Exception 有什麼區別?

32、詳解a++和++a的區別

33、a+=b 和a=a+b的區別

34.,Java中的泛型是什麼 ? 使用泛型的好處是什麼?

35,Java的泛型是如何工作的 ? 什麼是型別擦除 ?如何工作?

36,你可以把List傳遞給一個接受List引數的方法嗎?

37,如何阻止Java中的型別未檢查的警告?

38,Java中List和原始型別List之間的區別?

39,編寫一段泛型程式來實現LRU快取?

40,Array中可以用泛型嗎?

41,如何編寫一個泛型方法,讓它能接受泛型引數並返回泛型型別?

42,C++模板和java泛型之間有何不同?

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

2、Java有沒有goto?

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

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

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

6、short s1= 1; s1 = (s1+1是int型別,而等號左邊的是short型別,所以需要強轉)1 + 1;有什麼錯? short s1 = 1; s1 += 1;有什麼錯?(沒有錯)

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

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

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

10,靜態變數和例項變數的區別?

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

12、Integer與int的區別

13、Math.round(11.5)等於多少?Math.round(-11.5)等於多少?

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

15、介面是否可繼承介面?抽象類是否可實現(implements)介面?抽象類是否可繼承具體類(concreteclass)?抽象類中是否可以有靜態的main方法?

16、Java中實現多型的機制是什麼?

17、abstractclass和interface語法上有什麼區別?

18、abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized?

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

20、String s = “Hello”;s = s + “world!”;這兩行程式碼執行後,原始的String物件中的內容到底變了沒有?

21、String s = new String(“xyz”);建立了幾個StringObject?是否可以繼承String類?

22、String、Stringbufer、StringBuilder區別

23、下面這條語句一共建立了多少個物件:String s=“a”+“b”+“c”+“d”;

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

25、final, finally, finalize的區別。

26、執行時異常與一般異常有何異同?

27、error和exception有什麼區別?

28、簡單說說Java中的異常處理機制的簡單原理和應用。

29、Java 中堆和棧有什麼區別?

30、能將 int 強制轉換為 byte 型別的變數嗎?如果該值大於 byte 型別的範圍,將會出現什麼現象?

31、a.hashCode() 有什麼用?與 a.equals(b) 有什麼關係?

32、位元組流與字元流的區別

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

34、描述一下JVM載入class檔案的原理機制?

35、heap和stack有什麼區別。

36、GC是什麼?為什麼要有GC?

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

38、垃圾回收器的基本原理是什麼?垃圾回收器可以馬上回收記憶體嗎?有什麼辦法主動通知虛擬機器進行垃圾回收?

39、Java 中,throw 和 throws 有什麼區別

40,java中會存在記憶體洩漏嗎,請簡單描述。

1、ArrayList和Vector的區別

2、HashMap和Hashtable的區別

3、List和 Map區別?

4、List,Set, Map是否繼承自Collection介面?

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

6、說出ArrayList,Vector,LinkedList的儲存效能和特性

7、去掉一個Vector集合中重複的元素

8、Collection和Collections的區別。

9、Set裡的元素是不能重複的,那麼用什麼方法來區分重複與否呢?是用==還是equals()?它們有何區別?

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

11、Java集合框架是什麼?說出一些集合框架的長處?

12、集合框架中的泛型有什麼長處?

13、Java集合框架的基礎介面有哪些?

14、為何Collection不從Cloneable和Serializable介面繼承?

15、為何Map介面不繼承Collection介面?

16、Iterator是什麼?

17、Enumeration和Iterator介面的差別?

18、為何沒有像Iterator.add()這種方法。向集合中加入元素?

19、為何迭代器沒有一個方法能夠直接獲取下一個元素。而不須要移動遊標?

20、Iterater和ListIterator之間有什麼差別?

21、遍歷一個List有哪些不同的方式?

22、通過迭代器fail-fast屬性,你明確了什麼?

23、fail-fast與fail-safe有什麼差別?

24、在迭代一個集合的時候,怎樣避免ConcurrentModificationException?

25、為何Iterator介面沒有詳細的實現?

26、UnsupportedOperationException是什麼?

27、在Java中,HashMap是怎樣工作的?

28、hashCode()和equals()方法有何重要性?

29、我們能否使用不論什麼類作為Map的key?

30、Map介面提供了哪些不同的集合檢視?

31、HashMap和HashTable有何不同?

32、怎樣決定選用HashMap還是TreeMap?

33、ArrayList和Vector有何異同點?

34、Array和ArrayList有何差別?什麼時候更適合用Array?

35、ArrayList和LinkedList有何差別?

36、哪些集合類提供對元素的隨機訪問?

37、EnumSet是什麼?

38、哪些集合類是執行緒安全的?

39、併發集合類是什麼?

40、BlockingQueue是什麼?

41、佇列和棧是什麼,列出它們的差別?

42、Collections類是什麼?

43、Comparable和Comparator介面是什麼?

44、Comparable和Comparator介面有何差別?

45、我們怎樣對一組物件進行排序?

46、當一個集合被作為引數傳遞給一個函式時,怎樣才幹夠確保函式不能改動它?

47、我們怎樣從給定集合那裡建立一個synchronized的集合?

48、集合框架裡實現的通用演算法有哪些?

49、大寫的O是什麼?舉幾個樣例?

50、與Java集合框架相關的有哪些最好的實踐?

1,什麼是執行緒?

2,執行緒和程序有什麼區別?

3,如何在Java中實現執行緒?

4,Java 關鍵字volatile 與 synchronized 作用與區別?

5,有哪些不同的執行緒生命週期?

6,你對執行緒優先順序的理解是什麼?

7,什麼是死鎖(Deadlock)?如何分析和避免死鎖?

8,什麼是執行緒安全?Vector是一個執行緒安全類嗎?

9,Java中如何停止一個執行緒?

10,什麼是ThreadLocal?

11,Sleep()、suspend()和wait()之間有什麼區別?

12,什麼是執行緒餓死,什麼是活鎖?

13,什麼是Java Timer類?如何建立一個有特定時間間隔的任務?

14,Java中的同步集合與併發集合有什麼區別?

15,同步方法和同步塊,哪個是更好的選擇?

16,什麼是執行緒池? 為什麼要使用它?

17,Java中invokeAndWait 和 invokeLater有什麼區別?

18,多執行緒中的忙迴圈是什麼?

1, 什麼是執行緒?

2,執行緒和程序有什麼區別?

3, 如何在Java中實現執行緒?

4,用Runnable還是Thread?

5,Thread 類中的start() 和 run() 方法有什麼區別?

6,Java中Runnable和Callable有什麼不同?

7,Java中CyclicBarrier 和 CountDownLatch有什麼不同?

8, Java記憶體模型是什麼?

9, Java中的volatile 變數是什麼?

10,什麼是執行緒安全?Vector是一個執行緒安全類嗎?

11,Java中什麼是競態條件? 舉個例子說明。

12,Java中如何停止一個執行緒?

13,一個執行緒執行時發生異常會怎樣?

14, 如何在兩個執行緒間共享資料?

15,Java中notify 和 notifyAll有什麼區別?

16,為什麼wait, notify 和 notifyAll這些方法不在thread類裡面?

17,什麼是ThreadLocal變數?

18, 什麼是FutureTask?

19,Java中interrupted 和 isInterruptedd方法的區別?

20, 為什麼wait和notify方法要在同步塊中呼叫?

21,為什麼你應該在迴圈中檢查等待條件?

22,Java中的同步集合與併發集合有什麼區別?

23, Java中堆和棧有什麼不同?

24,什麼是執行緒池? 為什麼要使用它?

25,如何寫程式碼來解決生產者消費者問題?

26, 如何避免死鎖?

27,Java中活鎖和死鎖有什麼區別?

28,怎麼檢測一個執行緒是否擁有鎖?

29,你如何在Java中獲取執行緒堆疊?

30, JVM中哪個引數是用來控制執行緒的棧堆疊小的

31, Java中synchronized 和 ReentrantLock 有什麼不同?

32,有三個執行緒T1,T2,T3,怎麼確保它們按順序執行?

33,Thread類中的yield方法有什麼作用?

34, Java中ConcurrentHashMap的併發度是什麼?

35, Java中Semaphore是什麼?

36,如果你提交任務時,執行緒池佇列已滿。會時發會生什麼?

37,Java執行緒池中submit() 和 execute()方法有什麼區別?

38,什麼是阻塞式方法?

39, Swing是執行緒安全的嗎? 為什麼?

40, Java中invokeAndWait 和 invokeLater有什麼區別?

41,Swing API中那些方法是執行緒安全的?

42, 如何在Java中建立Immutable物件?

43,Java中的ReadWriteLock是什麼?

44,多執行緒中的忙迴圈是什麼?

45,volatile 變數和 atomic 變數有什麼不同?

46,如果同步塊內的執行緒丟擲異常會發生什麼?

47, 單例模式的雙檢鎖是什麼?

48,如何在Java中建立執行緒安全的Singleton?

49,寫出3條你遵循的多執行緒最佳實踐

50,如何強制啟動一個執行緒?

51,Java中的fork join框架是什麼?

52, Java多執行緒中呼叫wait() 和 sleep()方法有什麼不同?

1、說一說Servlet的生命週期?

2、Servlet API中forward()與redirect()的區別?

3、request.getAttribute()和 request.getParameter()有何區別?

4,jsp靜態包含和動態包含的區別

5,MVC的各個部分都有那些技術來實現?如何實現?

6,jsp有哪些內建物件?作用分別是什麼?

7,Http中,get和post方法的區別

8,什麼是cookie?Session和cookie有什麼區別?

9,jsp和servlet的區別、共同點、各自應用的範圍?

10,tomcat容器是如何建立servlet類例項?用到了什麼原理?

11,AJAX有哪些有點和缺點?

12,AJAX應用和傳統Web應用有什麼不同?

13,Ajax的實現流程是怎樣的?

14,簡單說一下資料庫的三正規化?

15,Java集合框架是什麼?說出一些集合框架的優點?

16,Java集合框架的基礎介面有哪些?

17,集合框架中的泛型有什麼優點?

18,Enumeration和Iterator介面的區別?

19,Iterater和ListIterator之間有什麼區別?

20,我們如何對一組物件進行排序?

21,與Java集合框架相關的有哪些最好的實踐?

22,什麼是事務?

23,說說你開發中遇到過什麼難題啊?怎麼解決的?

1,談談你對Struts的理解。

2、談談你對Hibernate的理解。

3,談談你對Spring的理解。

4,談談Struts的優缺點

5,iBatis與Hibernate有什麼不同?

6,在hibernate進行多表查詢每個表中各取幾個欄位,也就是說查詢出來的結果集沒有一個實體類與之對應如何解決?

7,介紹一下Hibernate的二級快取

8,JDO是什麼?

9,Hibernate的一對多和多對一雙向關聯的區別??

10,Hibernate是如何延遲載入?

11,使用Spring框架的好處是什麼?

12,ApplicationContext通常的實現是什麼?

13,什麼是Spring的依賴注入?有哪些方法進行依賴注入

14,什麼是Spring beans?

15,解釋Spring支援的幾種bean的作用域。

16,解釋Spring框架中bean的生命週期。

17,在 Spring中如何注入一個java集合?

18,解釋不同方式的自動裝配 。

19,Spring框架的事務管理有哪些優點?

20.什麼是基於Java的Spring註解配置? 給一些註解的例子?

21,什麼是ORM?

22,Hibernate中SessionFactory是執行緒安全的嗎?Session是執行緒安全的嗎(兩個執行緒能夠共享同一個Session嗎)?

23,Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分別是做什麼的?有什麼區別?

24,闡述Session載入實體物件的過程。

25,MyBatis中使用#和$書寫佔位符有什麼區別?

26,解釋一下MyBatis中名稱空間(namespace)的作用。

27、MyBatis中的動態SQL是什麼意思?

28,JDBC程式設計有哪些不足之處,MyBatis是如何解決這些問題的?

29,MyBatis與Hibernate有哪些不同?

30,簡單的說一下MyBatis的一級快取和二級快取?

1,JDBC訪問資料庫的基本步驟是什麼?

2,說說preparedStatement和Statement的區別

3,說說事務的概念,在JDBC程式設計中處理事務的步驟。

4,資料庫連線池的原理。為什麼要使用連線池。

5,JDBC的髒讀是什麼?哪種資料庫隔離級別能防止髒讀?

6,什麼是幻讀,哪種隔離級別可以防止幻讀?

7,JDBC的DriverManager是用來做什麼的?

8,execute,executeQuery,executeUpdate的區別是什麼?

9,SQL查詢出來的結果分頁展示一般怎麼做?

10,JDBC的ResultSet是什麼?

11,查詢課程1的成績比課程2的成績高的所有學生的學號

12,查詢平均成績大於60分的同學的學號和平均成績

13,查詢所有同學的學號、姓名、選課數、總成績

14,查詢姓“張”的老師的個數

15,查詢沒學過“張三”老師課的同學的學號、姓名

16,查詢同時學過課程1和課程2的同學的學號、姓名

17,查詢學過“李四”老師所教所有課程的所有同學的學號、姓名

18,查詢課程編號1的成績比課程編號2的成績高的所有同學的學號、姓名

19,查詢所有課程成績小於60分的同學的學號、姓名

20,查詢至少有一門課程與學號為1的同學所學課程相同的同學的學號和姓名

21、把“sc”表中“王五”所教課的成績都更改為此課程的平均成績

22、查詢和編號為2的同學學習的課程完全相同的其他同學學號和姓名

23、刪除學習“王五”老師課的sc表記錄

24、向sc表中插入一些記錄,這些記錄要求符合以下條件:
將沒有課程3成績同學的該成績補齊, 其成績取所有學生的課程2的平均成績

25、按平平均分從高到低顯示所有學生的如下統計報表:
– 學號,企業管理,馬克思,UML,資料庫,物理,課程數,平均分

26、查詢各科成績最高分和最低分:以如下形式顯示:課程號,最高分,最低分

27、按各科平均成績從低到高和及格率的百分數從高到低順序

28、查詢如下課程平均成績和及格率的百分數(用"1行"顯示):
企業管理(001),馬克思(002),UML (003),資料庫(004)

29、查詢不同老師所教不同課程平均分, 從高到低顯示

30、查詢如下課程成績均在第3名到第6名之間的學生的成績:
– [學生ID],[學生姓名],企業管理,馬克思,UML,資料庫,平均成績