如果大家對(duì)大唐電信java筆試題目感興趣,歡迎大家收藏和練習(xí)。
1. Java如何實(shí)現(xiàn)多態(tài),實(shí)現(xiàn)的主要方法。
java是借助方法的重寫和重載實(shí)現(xiàn)多態(tài)。
重載的特性,方法名相同.返回類型,傳入方法的參數(shù)不同(包括個(gè)數(shù)和類型).
重寫的特性,方法名相同,返回類型,參數(shù)均相同,必須發(fā)生在子類.
2. Hashtable\hashmap有什么區(qū)別,hashmap實(shí)現(xiàn)的算法思想,多個(gè)任意長(zhǎng)度的值進(jìn)行hash操作,得出的hash值是否相等?
a.Hashtable是繼承自陳舊的Dictionary類的,HashMap繼承自AbstractMap類同時(shí)是Java 1.2引進(jìn)的Map接口的一個(gè)實(shí)現(xiàn)。
b.也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。
c.第三點(diǎn)不同是,只有HashMap可以讓你將空值作為一個(gè)表的條目的key或value。HashMap中只有一條記錄可以是一個(gè)空的key,但任意數(shù)量的條目可以是空的value。這就是說(shuō),如果在表中沒(méi)有發(fā)現(xiàn)搜索鍵,或者如果發(fā)現(xiàn)了搜索鍵,但它是一個(gè)空的值,那么get()將返回null。如果有必要,用containKey()方法來(lái)區(qū)別這兩種情況。
d.HashMap去掉了Hashtable的contains方法,保留了containsValue和containsKey方法
e.Hashtable中hash數(shù)組默認(rèn)大小是11,增加的方式是 old2+1。HashMap中hash數(shù)組的默認(rèn)大小是16,而且一定是2的指數(shù)
1.首先HashMap里面實(shí)現(xiàn)一個(gè)靜態(tài)內(nèi)部類Entry 其重要的屬性有 key , value, next,從屬性key,value我們就能很明顯的看出來(lái)Entry就是HashMap鍵值對(duì)實(shí)現(xiàn)的一個(gè)基礎(chǔ)bean,我們上面說(shuō)到HashMap的基礎(chǔ)就是一個(gè)線性數(shù)組,這個(gè)數(shù)組就是Entry[],Map里面的內(nèi)容都保存在Entry[]里面。
2.既然是線性數(shù)組,為什么能隨機(jī)存取?這里HashMap用了一個(gè)小算法,大致是這樣實(shí)現(xiàn):
Java代碼
1. 存儲(chǔ)時(shí):
2.
3. int hash = key.hashCode();--> 這個(gè)hashCode方法這里不詳述,只要理解每個(gè)key的hash是一個(gè)固定的int值
4.
5. int index = hash % Entry[].length;
6.
7. Entry[index] = value;
8.
9. 取值時(shí):
10.
11. int hash = key.hashCode();
12.
13. int index = hash % Entry[].length;
14.
15. return Entry[index]
3. 畫出語(yǔ)句string str=new string(“abc”)執(zhí)行后的內(nèi)存狀態(tài),說(shuō)明string、stringbuffer的區(qū)別,兩種如何相互轉(zhuǎn)換?
4. 說(shuō)明inputstream和inputstreamreader的區(qū)別
InputStream是字節(jié)流
reader是字符流
inputstreamreader是將字節(jié)流轉(zhuǎn)換成字符流,是上面兩者的轉(zhuǎn)換類。
5. Java實(shí)現(xiàn)多線程的方法有哪些?什么情況需實(shí)現(xiàn)線程同步,線程同步的方法有哪幾種?
多線程有兩種實(shí)現(xiàn)方法。一種是繼承Thread類,一種是實(shí)現(xiàn)Runnable接口!
在多個(gè)線程同時(shí)訪問(wèn)互斥(可交換)數(shù)據(jù)時(shí),應(yīng)該同步以保護(hù)數(shù)據(jù),確保兩個(gè)線程不會(huì)同時(shí)修改更改它。
同步有兩種方法。一種同步方法,一種同步代碼!分別是synchronized,wait與notify
6. Xml解析方式有哪幾種,有什區(qū)別?
Dom解析在內(nèi)存中創(chuàng)建一個(gè)DOM樹,該結(jié)構(gòu)通常需要加載整個(gè)文檔然后才能做工作。由于它是基于信息層次的,因而DOM被認(rèn)為是基于樹或基于對(duì)象的,樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對(duì)數(shù)據(jù)和結(jié)構(gòu)作出更改能隨機(jī)訪問(wèn)文件內(nèi)容,也可以修改原文件內(nèi)容.
SAX解析 SAX處理的優(yōu)點(diǎn)非常類似于流媒體的優(yōu)點(diǎn)。分析能夠立即開始,而不是等待所有的數(shù)據(jù)被處理。SAX解析器采用了基于事件的模型,它在解析XML文檔的時(shí)候可以觸發(fā)一系列的事件,當(dāng)發(fā)現(xiàn)給定的tag的時(shí)候,它可以激活一個(gè)回調(diào)方法,告訴該方法制定的標(biāo)簽已經(jīng)找到。而且,由于應(yīng)用程序只是在讀取數(shù)據(jù)時(shí)檢查數(shù)據(jù),因此不需要將數(shù)據(jù)存儲(chǔ)在內(nèi)存中。這對(duì)于大型文檔來(lái)說(shuō)是個(gè)巨大的優(yōu)點(diǎn)線性解析,不能隨機(jī)訪問(wèn),也無(wú)法修改原文件
JDOM解析 JDOM的目的是成為Java特定文檔模型,它簡(jiǎn)化與XML的交互并且比使用DOM實(shí)現(xiàn)更快.JDOM僅使用具體類而不使用接口。這在某些方面簡(jiǎn)化了API,但是也限制了靈活性。第二,API大量使用了Collections類,簡(jiǎn)化了那些已經(jīng)熟悉這些類的Java開發(fā)者的使用。
DOM4j解析 DOM4J使用接口和抽象基本類方法。DOM4J大量使用了API中的Collections類,但是在許多情況下,它還提供一些替代方法以允許更好的性能或更直接的編碼方法。直接好處是,雖然DOM4J付出了更復(fù)雜的API的代價(jià),但是它提供了比JDOM大得多的靈活性。
7. 有數(shù)據(jù)庫(kù)表:t_student(id,name,sex,score,course_name)
a) 查出分?jǐn)?shù)大于90的學(xué)生
b) 總分大于270的學(xué)生
c) 查出英語(yǔ)分?jǐn)?shù)大于80的男女生數(shù)量
d) 使用的數(shù)據(jù)庫(kù)連接方式,以及各種方式的特點(diǎn)和區(qū)別
8. 使用過(guò)的觸發(fā)器有哪幾種?有什么區(qū)別?
觸發(fā)器是一種特殊類型的存儲(chǔ)過(guò)程,主要是通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行的
SQL Server 2000 支持兩種類型的觸發(fā)器:AFTER 觸發(fā)器和INSTEAD OF 觸發(fā)器。其中AFTER 觸發(fā)器即為SQL Server 2000 版本以前所介紹的觸發(fā)器。該類型觸發(fā)器要求只有執(zhí)行某一操作(INSERT UPDATE DELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義?梢詾獒槍(duì)表的同一操作定義多個(gè)觸發(fā)器。對(duì)于AFTER 觸發(fā)器,可以定義哪一個(gè)觸發(fā)器被最先觸發(fā),哪一個(gè)被最后觸發(fā),通常使用系統(tǒng)過(guò)程sp_settriggerorder來(lái)完成此任務(wù)。
INSTEAD OF 觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、 UPDATE、 DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF 觸發(fā)器,也可以在視圖上定義INSTEAD OF 觸發(fā)器,但對(duì)同一操作只能定義一個(gè)INSTEAD OF 觸發(fā)器。