?? java面試題.txt
字號(hào):
一、Java基礎(chǔ)知識(shí)
1.Java有那些基本數(shù)據(jù)類型,String是不是基本數(shù)據(jù)類型,他們有何區(qū)別。
2.字符串的操作:
寫一個(gè)方法,實(shí)現(xiàn)字符串的反轉(zhuǎn),如:輸入abc,輸出cba
寫一個(gè)方法,實(shí)現(xiàn)字符串的替換,如:輸入bbbwlirbbb,輸出bbbhhtccc。
3.數(shù)據(jù)類型之間的轉(zhuǎn)換
如何將數(shù)值型字符轉(zhuǎn)換為數(shù)字(Integer,Double)
如何將數(shù)字轉(zhuǎn)換為字符
如何取小數(shù)點(diǎn)前兩位,并四舍五入。
4.日期和時(shí)間
如何取得年月日,小時(shí)分秒
如何取得從1970年到現(xiàn)在的毫秒數(shù)
如何獲取某個(gè)日期是當(dāng)月的最后一天
如何格式化日期
5.數(shù)組和集合
6.文件和目錄(I/O)操作
如何列出某個(gè)目錄下的所有文件
如何列出某個(gè)目錄下的所有子目錄
判斷一個(gè)文件或目錄是否存在
如何讀寫文件
7.Java多態(tài)的實(shí)現(xiàn)(繼承、重載、覆蓋)
8.編碼轉(zhuǎn)換,怎樣實(shí)現(xiàn)將GB2312編碼的字符串轉(zhuǎn)換為ISO-8859-1編碼的字符串。
9.Java中訪問數(shù)據(jù)庫的步驟,Statement和PreparedStatement之間的區(qū)別。
10.找出下列代碼可能存在的錯(cuò)誤,并說明原因:
二、JSP&Servlet技術(shù)
1.描述JSP和Servlet的區(qū)別、共同點(diǎn)、各自應(yīng)用的范圍
2.在Web開發(fā)中需要處理HTML標(biāo)記時(shí),應(yīng)做什么樣的處理,要篩選那些字符(< > & “”)
3.在JSP中如何讀取客戶端的請求,如何訪問CGI變量,如何確定某個(gè)Jsp文件的真實(shí)路徑。
4.描述Cookie和Session的作用,區(qū)別和各自的應(yīng)用范圍,Session工作原理。
5.列出Jsp中包含外部文件的方式,兩者有何區(qū)別。
6.說明Jsp中errorPage的作用,應(yīng)用范圍。
7.介紹在Jsp中如何使用JavaBeans。
8.簡單介紹JSP的標(biāo)記庫
9.Jsp和Servlet中的請求轉(zhuǎn)發(fā)分別如何實(shí)現(xiàn)。
三、J2EE相關(guān)知識(shí)
1.介紹J2EE、J2SE、J2SE的區(qū)別。
2.J2EE是一種技術(shù)還是一種平臺(tái),他提供了那些技術(shù)。
3.什么是Application Server,它有什么功能和優(yōu)點(diǎn)。
4.簡單介紹連接池的優(yōu)點(diǎn)和原理。
5.Web.xml的作用
四、其他
1.Web安全性的考慮(表單驗(yàn)證、瀏覽器Basic方式的驗(yàn)證,應(yīng)用程序的安全性,SSL,代碼考慮)
2.簡單介紹您所了解的MVC。
3.簡單介紹所了解的XML。
4.文檔和編碼規(guī)范
5.Java中的分頁、效率考慮。
6.簡單介紹您所了解的structs。
1.xml在項(xiàng)目中的作用
2.s-EJB 與 e-EJB的區(qū)別
3.會(huì)話面的作用
4.cmp與bmp的優(yōu)缺點(diǎn)
5.j2me程序的必需的幾個(gè)部分
6.c/s與b/s的區(qū)別
7.構(gòu)建一個(gè)connect pool,然后再調(diào)用它,
8.j2ee平臺(tái)與dotnet平臺(tái)的區(qū)別
9.ejb的life cycle
10.session bean 和 entity bean的區(qū)別
11.ejb中的transaction機(jī)制
12.synchronized (生產(chǎn)者和消費(fèi))
13.String 和 StringBuffer
14.Serializable
15.MVC (Struts的工作流程)
16.什么是MDA
17.tcp與udp的區(qū)別
18.鏈表與散列表和數(shù)組的區(qū)別
19.堆和棧的區(qū)別
20.ejb的分類及區(qū)別
21.你對現(xiàn)在軟件業(yè)以及國內(nèi)軟件業(yè)的看法
22.談?wù)刯ava多線程
23.談?wù)勎募用芗夹g(shù)
24.軟件開發(fā)生命周期
25.路由協(xié)議種類及特點(diǎn)
26.java的awt和swing組件的GUI設(shè)計(jì)的關(guān)鍵
27.對于java流的認(rèn)識(shí)
28.簡單描述一下awt與swing區(qū)別。
29.簡述java編程中事件處理模式。
30.你編寫過applet嗎?applet的安全權(quán)限如何?試列舉java application或者applet中與servlet/jsp通信可以采用的方式。
31.簡述邏輯操作(如&,|)與條件操作(如&&,||)的區(qū)別。
32.簡述 Java Server Page 和 Servlet 的聯(lián)系和區(qū)別。
33.簡述synchronized和java.util.concurrent.locks.Lock的異同 ?
34.EJB規(guī)范規(guī)定EJB中禁止的操作有哪些?
35.java除了8種基本類型外,在虛擬機(jī)里還有哪一種,有什么作用?
36.除了使用new關(guān)鍵字創(chuàng)建對象意外,試列舉另外三種以上創(chuàng)建實(shí)例的方式?
37.classloader中,JDK的API、Classpath中的同web-inf中的class加載方式有什么區(qū)別?
38.列舉三種以上垃圾回收算法,并比較其優(yōu)缺點(diǎn)?
39.編寫代碼實(shí)現(xiàn)一個(gè)線程池
40.描述一下JVM加載class文件的原理機(jī)制?
41.試舉例說明一個(gè)典型的垃圾回收算法?
42.請用java寫二叉樹算法,實(shí)現(xiàn)添加數(shù)據(jù)形成二叉樹功能,并以先序的方式打印出來.
43.請寫一個(gè)java程序?qū)崿F(xiàn)線程連接池功能?
44.給定一個(gè)C語言函數(shù),要求實(shí)現(xiàn)在java類中進(jìn)行調(diào)用。
45.如何獲得數(shù)組的長度?
46.訪問修飾符“public/private/protected/缺省的修飾符”的使用
47.用關(guān)鍵字final修飾一個(gè)類或者方法時(shí),有何意義?
48.掌握類和對象的概念,掌握面向?qū)ο缶幊痰谋举|(zhì)
49.靜態(tài)變量和靜態(tài)方法的意義,如何引用一個(gè)類的靜態(tài)變量或者靜態(tài)方法?
50.JAVA語言如何進(jìn)行異常處理,關(guān)鍵字:thorws,throw,try,catch,finally
51.Object類(或者其子類)的finalize()方法在什么情況下被調(diào)用?
52.一個(gè)“.java”原文件中是否可以包括多個(gè)類(不是內(nèi)部類)?
53.掌握內(nèi)部類和接口的概念
54.StringTokenizer類的使用
55.數(shù)據(jù)結(jié)構(gòu),如何遍歷List中的元素?
如果要按照鍵值保存或者訪問數(shù)據(jù),使用什么數(shù)據(jù)結(jié)構(gòu)?
要掌握Collection相關(guān)的接口和類的使用
56.使用StringBuffer類與String類進(jìn)行字符串連接時(shí)有何區(qū)別?
57.調(diào)用Thread類的destroy()方法有什么后果?
58.多線程,用什么關(guān)鍵字修飾同步方法?stop()和suspend()方法為何不推薦使用?
59.使用socket建立客戶端與服務(wù)器的通信的過程
60.JAVA語言國際化應(yīng)用,Locale類,Unicode
61.描述反射機(jī)制的作用
62.如何讀寫一個(gè)文件?
63.在圖形界面中,一個(gè)按鈕如何處理鼠標(biāo)點(diǎn)擊事件?
64.在圖形界面中,一個(gè)表格,如何實(shí)現(xiàn)編輯單元格時(shí)彈出下拉框?
65.如何加載圖片?
66.什么是模態(tài)對話框?
67.闡述MVC的概念
68.GUI布局管理器的使用,F(xiàn)lowLayout,BorderLayout,GridBagLayout
69.如何構(gòu)造一棵樹?選擇樹的一個(gè)節(jié)點(diǎn)時(shí),如何得到這個(gè)節(jié)點(diǎn)?
70.向編輯框中輸入字符時(shí),如何控制只輸入整數(shù)?
71.描述使用JDBC連接數(shù)據(jù)庫的過程
72.EJB分為幾類?什么是BMP,CMP?
73.什么是JNDI?
74.ADO是什么?ActiveX數(shù)據(jù)對象,是一個(gè)應(yīng)用級(jí)程序接口.
75.四種JDBC方式?目前的版本?
76.EJB有哪幾種?區(qū)別是什么?
77.JavaBean與EJB有什么區(qū)別?
78.軟件開發(fā)生命周期有哪幾個(gè)階段?
79.軟件開發(fā)有哪些因素?
80.軟件開發(fā)中如何進(jìn)行版本控制?
81.UML中,類視圖如何表示類中的繼承與聚合?
82.客戶端游標(biāo)與服務(wù)器端游標(biāo)的區(qū)別?
83.動(dòng)態(tài)游標(biāo)與靜態(tài)游標(biāo)的區(qū)別?
84.dotnet由哪幾個(gè)基本框架組成?
85.Oracle中SGA是什么?
86.web servers是什么?
87.UNIX中QT是什么意思?
88.在軟件開發(fā)生命周期中的哪個(gè)階段開始測試?
89.dotnet與J2EE的比較?
90.什么是ActiveX?
91.Java中IDL是什么?
92.ISO9000和CMM是什么?IS09000和CMM(軟件能力成熟度模型)認(rèn)證是國際上通用的軟件質(zhì)量評(píng)估方法.CMM的五個(gè)成熟度等級(jí)。
第一,談?wù)刦inal, finally, finalize的區(qū)別。
final? 修飾符(關(guān)鍵字)如果一個(gè)類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個(gè)類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載
finally?再異常處理時(shí)提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。
finalize? 方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在確定這個(gè)對象沒有被引用時(shí)對這個(gè)對象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個(gè)對象調(diào)用的。
第二,Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?
匿名的內(nèi)部類是沒有名字的內(nèi)部類。不能extends(繼承) 其它類,但一個(gè)內(nèi)部類可以作為一個(gè)接口,由另一個(gè)內(nèi)部類實(shí)現(xiàn)。
第三,Static Nested Class 和 Inner Class的不同,說得越多越好(面試題有的很籠統(tǒng))。
Nested Class (一般是C++的說法),Inner Class (一般是JAVA的說法)。Java內(nèi)部類與C++嵌套類最大的不同就在于是否有指向外部的引用上。具體可見http: //www.frontfree.net/articles/services/view.asp?id=704&page=1
注: 靜態(tài)內(nèi)部類(Inner Class)意味著1創(chuàng)建一個(gè)static內(nèi)部類的對象,不需要一個(gè)外部類對象,2不能從一個(gè)static內(nèi)部類的一個(gè)對象訪問一個(gè)外部類對象
第四,&和&&的區(qū)別。
&是位運(yùn)算符。&&是布爾邏輯運(yùn)算符。
第五,HashMap和Hashtable的區(qū)別。
都屬于Map接口的類,實(shí)現(xiàn)了將惟一鍵映射到特定的值上。
HashMap 類沒有分類或者排序。它允許一個(gè) null 鍵和多個(gè) null 值。
Hashtable 類似于 HashMap,但是不允許 null 鍵和 null 值。它也比 HashMap 慢,因?yàn)樗峭降摹?
第六,Collection 和 Collections的區(qū)別。
Collections是個(gè)java.util下的類,它包含有各種有關(guān)集合操作的靜態(tài)方法。
Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。
第七,什么時(shí)候用assert。
斷言是一個(gè)包含布爾表達(dá)式的語句,在執(zhí)行這個(gè)語句時(shí)假定該表達(dá)式為 true。如果表達(dá)式計(jì)算為 false,那么系統(tǒng)會(huì)報(bào)告一個(gè) AssertionError。它用于調(diào)試目的:
assert(a > 0); // throws an AssertionError if a <= 0
斷言可以有兩種形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
Expression1 應(yīng)該總是產(chǎn)生一個(gè)布爾值。
Expression2 可以是得出一個(gè)值的任意表達(dá)式。這個(gè)值用于生成顯示更多調(diào)試信息的 String 消息。
斷言在默認(rèn)情況下是禁用的。要在編譯時(shí)啟用斷言,需要使用 source 1.4 標(biāo)記:
javac -source 1.4 Test.java
要在運(yùn)行時(shí)啟用斷言,可使用 -enableassertions 或者 -ea 標(biāo)記。
要在運(yùn)行時(shí)選擇禁用斷言,可使用 -da 或者 -disableassertions 標(biāo)記。
要系統(tǒng)類中啟用斷言,可使用 -esa 或者 -dsa 標(biāo)記。還可以在包的基礎(chǔ)上啟用或者禁用斷言。
可以在預(yù)計(jì)正常情況下不會(huì)到達(dá)的任何位置上放置斷言。斷言可以用于驗(yàn)證傳遞給私有方法的參數(shù)。不過,斷言不應(yīng)該用于驗(yàn)證傳遞給公有方法的參數(shù),因?yàn)椴还苁欠駟⒂昧藬嘌裕蟹椒ǘ急仨殭z查其參數(shù)。不過,既可以在公有方法中,也可以在非公有方法中利用斷言測試后置條件。另外,斷言不應(yīng)該以任何方式改變程序的狀態(tài)。
第八,GC是什么? 為什么要有GC? (基礎(chǔ))。
GC是垃圾收集器。Java 程序員不用擔(dān)心內(nèi)存管理,因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理。要請求垃圾收集,可以調(diào)用下面的方法之一:
System.gc()
Runtime.getRuntime().gc()
第九,String s = new String("xyz");創(chuàng)建了幾個(gè)String Object?
兩個(gè)對象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對象s。
第十,Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Math.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;
第十一,short s1 = 1; s1 = s1 + 1;有什么錯(cuò)? short s1 = 1; s1 += 1;有什么錯(cuò)?
short s1 = 1; s1 = s1 + 1;有錯(cuò),s1是short型,s1+1是int型,不能顯式轉(zhuǎn)化為short型。可修改為s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正確。
第十二,sleep() 和 wait() 有什么區(qū)別? 搞線程的最愛
sleep()方法是使線程停止一段時(shí)間的方法。在sleep 時(shí)間間隔期滿后,線程不一定立即恢復(fù)執(zhí)行。這是因?yàn)樵谀莻€(gè)時(shí)刻,其它線程可能正在運(yùn)行而且沒有被調(diào)度為放棄執(zhí)行,除非(a)“醒來”的線程具有更高的優(yōu)先級(jí)
(b)正在運(yùn)行的線程因?yàn)槠渌蚨枞?wait()是線程交互時(shí),如果線程對一個(gè)同步對象x 發(fā)出一個(gè)wait()調(diào)用,該線程會(huì)暫停執(zhí)行,被調(diào)對象進(jìn)入等待狀態(tài),直到被喚醒或等待時(shí)間到。
第十三,Java有沒有g(shù)oto?
Goto?java中的保留字,現(xiàn)在沒有在java中使用。
第十四,數(shù)組有沒有l(wèi)ength()這個(gè)方法? String有沒有l(wèi)ength()這個(gè)方法?
數(shù)組沒有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。
String有有l(wèi)ength()這個(gè)方法。
第十五,Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?
方法的重寫Overriding和重載Overloading是Java多態(tài)性的不同表現(xiàn)。重寫Overriding是父類與子類之間多態(tài)性的一種表現(xiàn),重載Overloading是一個(gè)類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個(gè)方法時(shí),將調(diào)用子類中的定義,對它而言,父類中的定義如同被“屏蔽”了。如果在一個(gè)類中定義了多個(gè)同名的方法,它們或有不同的參數(shù)個(gè)數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded的方法是可以改變返回值的類型。
第十六,Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?
Set里的元素是不能重復(fù)的,那么用iterator()方法來區(qū)分重復(fù)與否。equals()是判讀兩個(gè)Set是否相等。
equals()和==方法決定引用值是否指向同一對象equals()在類中被覆蓋,為的是當(dāng)兩個(gè)分離的對象的內(nèi)容和類型相配的話,返回真值。
第十七,給我一個(gè)你最常見到的runtime exception。
ArithmeticException, ArrayStoreException, BufferOverflowException, BufferUnderflowException, CannotRedoException, CannotUndoException, ClassCastException, CMMException, ConcurrentModificationException, DOMException, EmptyStackException, IllegalArgumentException, IllegalMonitorStateException, IllegalPathStateException, IllegalStateException,
ImagingOpException, IndexOutOfBoundsException, MissingResourceException, NegativeArraySizeException, NoSuchElementException, NullPointerException, ProfileDataException, ProviderException, RasterFormatException, SecurityException, SystemException, UndeclaredThrowableException, UnmodifiableSetException, UnsupportedOperationException
第十八,error和exception有什么區(qū)別?
error 表示恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題。比如說內(nèi)存溢出。不可能指望程序能處理這樣的情況。
exception 表示一種設(shè)計(jì)或?qū)崿F(xiàn)問題。也就是說,它表示如果程序運(yùn)行正常,從不會(huì)發(fā)生的情況。
第十九,List, Set, Map是否繼承自Collection接口?
List,Set是
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -