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