1. String、StringBuffer、StringBuilder的區別
String不變對象,StringBuffer可變字符串,方法為synchronized,StringBuilder可變字符串,方法非synchronized
2. finally、final、finalize的區別
finally在try-cache-finally中使用;final可從類(lèi)、方法、屬性三個(gè)方面解釋?zhuān)?/span>finalize為Object類(lèi)的方法,其調用是不可預測的。
3. Java中synchronized的作用
同步,相當于對象鎖
4. 簡(jiǎn)要描述一下java.io包中關(guān)于流的類(lèi)的結構,其中用到了什么模式
Wrapper或Decorator模式
5. HashMap和Hashtable的異同
都實(shí)現了Map接口;HashMap允許null鍵和null值,方法非同步;Hashtable不允許null鍵和null鍵,方法同步
6. 簡(jiǎn)要介紹一下Comparable接口和Comparator比較器
實(shí)現Comparable的類(lèi)的對象可以比較,必須實(shí)現compareTo方法;實(shí)現Comparator的類(lèi)為比較器,必須實(shí)現compare方法,可以用在Collectoins.sort方法的參數中,用來(lái)比較兩個(gè)對象的大小關(guān)系
7. ArrayList、LinkedList、Vector的異同
ArrayList、Vector為List基于數組的實(shí)現;LinkedList為基于鏈表的實(shí)現;如果隨機查找一個(gè)值,則基于數組的實(shí)現較快,但在某一位置刪除和添加一元素需要移動(dòng)一些元素;但基于鏈表的實(shí)現利于添加和刪除,不利于查詢(xún);Vector的方法為同步的,ArrayList和LinkedList的方法非同步
8. 關(guān)于運算符的短路問(wèn)題,如:&&、||等
9. 在什么時(shí)候使用assert語(yǔ)句
可以在預計正常情況下不會(huì )到達的任何位置上放置斷言;斷言可以用于驗證傳遞給私有方法的參數
10. 為什么要有GC?
Java 程序員不用擔心內存管理,因為垃圾收集器會(huì )自動(dòng)進(jìn)行管理
11. Java中異常分為幾種?有什么區別?
受檢查異常、非檢查異常;繼承自Exception、繼承自RuntimeException;代碼是否明確捕獲異常
12. 說(shuō)明List、Set、Map的區別
List只是一個(gè)元素列表;Set是一個(gè)集合,無(wú)重復元素;Map是鍵值對
13. 抽象類(lèi)和接口的區別
14. 簡(jiǎn)要說(shuō)明實(shí)現equals和hashCode方法的必要性
equals用于判斷兩個(gè)對象是否相等,hashCode是對象的hash值;假設用在Map、List、Set這樣的集合中,如果不適當的實(shí)現這兩個(gè)方法,可能造成元素在某些集合對象中使用錯誤、或影響使用的效率
15. 要使一個(gè)對象可以在網(wǎng)絡(luò )中傳輸需要實(shí)現什么接口?
Java.io.Serializable
16. 下面幾句話(huà)哪句正確?
(1)a.equals(b)==true,但a.hashCode() !=b.hashCode()
(2)a.hashCode()==b.hashCode(),但a.equals(b)==false 對
(3) a.hashCode()==b.hashCode(),但a.equals(b)==true 對
17. Override和Overload的區別
18. 使用annotation有什么好處?
以前關(guān)于類(lèi)的相關(guān)配置一般都寫(xiě)在xml文件中,從而對于某一個(gè)類(lèi)的信息需要在兩處維護;annotation使得某一類(lèi)的信息可以寫(xiě)在一處,利于維護
19. 復制對象需要實(shí)現什么接口?什么是淺復制和深復制?
java.lang.Cloneable;淺復制只是引用復制,深復制對象復制,結合例子回答
20. 面向接口編程的好處?試舉例說(shuō)明
可以舉關(guān)于List接口的例子
21. 什么是自動(dòng)裝箱、拆箱?
22. transiant關(guān)鍵字的作用?怎樣實(shí)現對象的序列化和反序列化?
某些值不參與序列化;ObjectInputStream、ObjectOutputStream
23. Java怎樣實(shí)現多線(xiàn)程?
繼承Thread或實(shí)現Runnable接口
24. 利用wait和notify實(shí)現讀者—寫(xiě)者問(wèn)題
注意:wait和notify的代碼必須在synchronized塊之中
25. notify和notifyAll的區別
notify只喚醒一個(gè)線(xiàn)程,notifyAll喚醒所有等待的線(xiàn)程
26. char型變量中能不能存貯一個(gè)中文漢字?為什么?
是能夠定義成為一個(gè)中文的,因為java中以unicode編碼,一個(gè)char占16個(gè)字節,所以放一個(gè)中文是沒(méi)問(wèn)題的
27. 簡(jiǎn)述一下模板類(lèi)的好處
分幾個(gè)方面說(shuō)明:1)<? extends Number>可以指定參數類(lèi)的范圍;2)java.lang.Comparable<T>,可以指定比較類(lèi)型為某一類(lèi)型
28. 什么是正則表達式?在Java中怎樣使用?
Pattern,、Matcher
29. 在Java中單例怎么實(shí)現?
有兩種方式:1)延遲初始化方式;2)立即初始化方式,比較兩種單例實(shí)現的優(yōu)缺點(diǎn)
30. 在Java中工廠(chǎng)模式怎么實(shí)現?
寫(xiě)代碼說(shuō)明
31. 當一個(gè)對象被當作參數傳遞到一個(gè)方法后,此方法可改變這個(gè)對象的屬性,并可返回變化后的結果,那么這里到底是值傳遞還是引用傳遞?
值傳遞
32. 列出某文件夾下的所有文件
遞歸
33. 在java中怎樣調用系統命令?
System.getRuntime().exec
34. 什么是AOP?它提供了什么功能?
35. Java國際化相關(guān)
Locale、ResourceBundle
36. 將當前日期按“yyyy-MM-dd”的形式打印出來(lái)
SimpleDateFormat、Date
===================================
1. JSP和Servlet的關(guān)系
Jsp會(huì )被編譯為servlet
2. <jsp:include page=”file.jsp”>和<%@ include=”file.jsp” %>區別?
1) 前者在運行時(shí)發(fā)生,后者在編譯時(shí)發(fā)生
2) 前者反映包含文件的變化,后者不會(huì ),除非重啟服務(wù)器
3)可從jsp編譯成的servlet文件看出區別
3. forward和redirect的區別
1) forward對于客戶(hù)端并不知情,是服務(wù)端的動(dòng)作,url鏈接不變化
2) redirect服務(wù)器先向客戶(hù)端發(fā)送302重定向,客戶(hù)端再向服務(wù)器請求頁(yè)面,多出一次往返,url發(fā)生變化
4. url重寫(xiě)是什么?怎么實(shí)現?
為了支持會(huì )話(huà),在url鏈接中寫(xiě)入jsessionid;response.encodeUrl和jstl標簽<c:url>
5. 什么是session?session通過(guò)什么傳遞?
默認為通過(guò)cookie傳遞;如果cookie被禁用,則通過(guò)url重寫(xiě)來(lái)維護會(huì )話(huà)
6. Get和Post的區別?
7. 請簡(jiǎn)述一下MVC模式,如果用Java實(shí)現MVC請簡(jiǎn)述怎樣實(shí)現?
參照Structs和Spring都行
前端控制器—將請求映射到具體控制器的類(lèi)—具體控制器—得到模型數據—生成視圖
8. 在Java Servlet開(kāi)發(fā)中,Listener、Filter、Servlet作用是什么?
Listener在web程序啟動(dòng)時(shí)順序執行,用于初始化一些全局資源
Filter用于過(guò)濾請求,可以用作權限控制、統計、日志記錄等
Servlet具體用于用戶(hù)請求的處理
9. 在Java Web應用程序中,有幾種作用域?
四種;Application、Session、Request、Page
10. 請簡(jiǎn)要介紹一種你熟悉的MVC框架,如:Struts、Spring等
11. HTTP200、302、404、500各代表什么含義?怎樣在程序中處理這些錯誤?
在web.xml中聲明統一的錯誤頁(yè)面
聯(lián)系客服