1.異常處理機制的簡單原理和應(yīng)用
2.垃圾回收的優(yōu)點和原理,并考慮2種回收機制
3.線程同步的方法
4.Error與Exception有什么區(qū)別
5.java中一個類被聲明為final類型.
6.heap和stack有什么區(qū)別
7.系統(tǒng)要使用超大整數(shù)(超過long長度范圍),請你設(shè)計一個數(shù)據(jù)結(jié)構(gòu)來存儲這種超大型數(shù)字以及設(shè)計一種算法來實現(xiàn)超大整數(shù)加法運算
8.設(shè)計一個圖形系統(tǒng),請你設(shè)計基本的圖形元件(Point,Line,Rectangle,Triangle)的簡單實現(xiàn)
9.final, finally, finalize的區(qū)別
10.Anonymous Inner Class (匿名內(nèi)部類) 是否可以extends(繼承)其它類,是否可以implements(實現(xiàn))interface(接口)
11.Static Nested Class 和 Inner Class的不同
12.&和&&區(qū)別
13.HashMap和Hashtable的區(qū)別
14.Collection 和 Collections的區(qū)別
15.GC是什么? 為什么要有GC
16.String s = new String("xyz");創(chuàng)建了幾個String Object
17.sleep() 和 wait() 有什么區(qū)別
18.short s1 = 1; s1 = s1 + 1;有什么錯? short s1 = 1; s1 += 1;有什么錯?
19.Java有沒有g(shù)oto?
20.Set里的元素是不能重復(fù)的,那么用什么方法來區(qū)分重復(fù)與否呢? 是用==還是equals()? 它們有何區(qū)別?
21.最常見到的runtime exception
22.abstract class和interface有什么區(qū)別?
23.abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized
24.接口是否可繼承接口? 抽象類是否可實現(xiàn)(implements)接口? 抽象類是否可繼承實體類(concrete class)?
25.構(gòu)造器Constructor是否可被override
26.當(dāng)一個線程進入一個對象的一個synchronized方法后,其它線程是否可進入此對象的其它方法
27.用最有效率的方法算出2乘以8等於幾
28.兩個對象值相同(x.equals(y) == true),但卻可有不同的hash code,這句話對不對?
29.當(dāng)一個對象被當(dāng)作參數(shù)傳遞到一個方法后,此方法可改變這個對象的屬性,并可返回變化后的結(jié)果,那么這里到底是值傳遞還是引用傳遞
30.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上(int、short、char、byte)
31.Singleton
32.Hashtable和HashMap區(qū)別
33.JVM加載class文件的原理機制
在Java中,類裝載器把一個類裝入Java虛擬機中,要經(jīng)過三個步驟來完成:裝載、鏈接和初始化,其中鏈接又可以分成校驗、準(zhǔn)備、解析
裝載:查找和導(dǎo)入類或接口的二進制數(shù)據(jù);
鏈接:執(zhí)行下面的校驗、準(zhǔn)備和解析步驟,其中解析步驟是可以選擇的;
校驗:檢查導(dǎo)入類或接口的二進制數(shù)據(jù)的正確性;
準(zhǔn)備:給類的靜態(tài)變量分配并初始化存儲空間;
解析:將符號引用轉(zhuǎn)成直接引用;
初始化:激活類的靜態(tài)變量,初始化Java代碼和靜態(tài)Java代碼塊
34.舉例說明一個典型的垃圾回收算法
1) 引用計數(shù):
要求堆中的每個對象實例都有一個稱為引用計數(shù)的字段,當(dāng)分配時計數(shù)+1、超出或銷毀時-1,當(dāng)引用計數(shù)為0時其空間可回收。
引用計數(shù)優(yōu)點:回收速度快;
缺點:引起運行時系統(tǒng)性能下降。
2) 標(biāo)記并清除:
要求每個對象都包含一個位字段,稱為標(biāo)記位,或在算法運行時建立一個外部數(shù)組以存放標(biāo)記位。該算法從遍歷堆中所有已分配的內(nèi)存塊開始,重新設(shè)置塊的標(biāo)記位,檢查所有指向堆中對象的字段和變量,將被引用對象的標(biāo)記位設(shè)置為真,然后找出所有未標(biāo)記對象,將其放到自由塊列表中來回收空間。
標(biāo)記并清除優(yōu)點:存儲開銷較低且不會影響運行時的執(zhí)行性能;
缺點:當(dāng)內(nèi)存垃圾收集器運行時可能會占用很長時間。
35.請用java寫二叉樹算法,實現(xiàn)添加數(shù)據(jù)形成二叉樹功能,并以先序的方式打印出來
36.寫一個java程序?qū)崿F(xiàn)線程連接池功能
流程如下:先啟動若干個線程,并讓這些線程處于睡眠狀態(tài),當(dāng)有客戶請求時,就會喚醒池中的一個睡眠線程,來處理用戶請求。處理完成以后,線程又處于睡眠狀態(tài)。
37.數(shù)據(jù)庫連接池原理
數(shù)據(jù)庫連接是關(guān)鍵的有限的昂貴的資源,每個數(shù)據(jù)庫連接對象都對應(yīng)一個物理數(shù)據(jù)庫連接,每次打開一個物理連接使用后都得關(guān)閉這個連接,這就造成了性能底下
解決方案:在應(yīng)用程序啟動時,建立足夠多的數(shù)據(jù)庫連接,并將這些連接組成一個連接池,由應(yīng)用程序?qū)Τ刂械倪B接動態(tài)的申請、分配、釋放。
對于多于池中連接數(shù)的并發(fā)請求、應(yīng)該在請求隊列中排隊等待,并且應(yīng)用程序可以根據(jù)池中連接的使用率,動態(tài)地增加或者減少池中的連接數(shù)
(最大連接數(shù)、最小連接數(shù))
38.給定一個C語言函數(shù),要求實現(xiàn)在java類中進行調(diào)用
39.編一段代碼,實現(xiàn)在控制臺輸入一組數(shù)字后,排序后在控制臺輸出
40.列出某文件夾下的所有文件
41.調(diào)用系統(tǒng)命令實現(xiàn)刪除文件的操作
42.實現(xiàn)從文件中一次讀出一個字符的操作
43.列出一些控制流程的方法
44.多線程有哪些狀態(tài)
45.編寫了一個服務(wù)器端的程序?qū)崿F(xiàn)在客戶端輸入字符然后在控制臺上顯示,直到輸入"END"為止,讓你寫出客戶端的程序
46.作用域public,private,protected,以及不寫時的區(qū)別
47.ArrayList和Vector的區(qū)別,HashMap和Hashtable的區(qū)別
48.char型變量中能不能存貯一個中文漢字?為什么?
49.多線程有幾種實現(xiàn)方法,都是什么?同步有幾種實現(xiàn)方法,都是什么?
50.垃圾回收機制,如何優(yōu)化程序
51.float型float f=3.4是否正確
52.介紹JAVA中的Collection FrameWork(包括如何寫自己的數(shù)據(jù)結(jié)構(gòu))?
53.Java中異常處理機制,事件機制
54.JAVA中的多態(tài)與繼承
55.現(xiàn)在輸入n個數(shù)字,以逗號,選擇升序、降序排列。
56.Java 的通信編程,編程題(或問答),用JAVA SOCKET編程,讀服務(wù)器幾個字符,再寫入本地顯示
57.在COLLECTION框架中,實現(xiàn)比較要實現(xiàn)什么樣的接口
58.JAVA多線程編程。 用JAVA寫一個多線程程序,如寫四個線程,二個加1,二個對一個變量減一,輸出。
59.STRING與STRINGBUFFER的區(qū)別
60.hashmap的內(nèi)部實現(xiàn)機制,hash是怎樣實現(xiàn)的,什么時候rehash
62.java的內(nèi)存管理
63.分布式緩存的內(nèi)存管理,如何管理和釋放不斷膨脹的session,memcache是否熟悉
64.oralce的底層管理(怎樣讓查詢快,插入慢)
65.java底層是怎樣對文件操作的
66.研究了哪些框架的源碼
67.并發(fā)問題,鎖,怎么處理死鎖,臟數(shù)據(jù)處理
68.性能問題
69.equals和hashcode這些方法怎么使用的
70.java的NIO