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