




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、目錄 HYPERLINK xxkuqinx/shuoit/20140427/339504.html面向對象象編程(OOP) HYPERLINK xxkuqinx/shuoit/20140427/339504.html常見的JJavaa問題 HYPERLINK xxkuqinx/shuoit/20140427/339504.htmlJavaa線程 HYPERLINK xxkuqinx/shuoit/20140427/339504.htmlJavaa集合類類 HYPERLINK xxkuqinx/shuoit/20140427/339504.html垃圾收集集器 HYPERLINK xximpor
2、tnewx/11028.html l exception xximportnewx/11028.html異常處理理 HYPERLINK xximportnewx/11028.html l applet xximportnewx/11028.htmlJavaa小應用用程序(Appplett) HYPERLINK xximportnewx/11028.html l swing xximportnewx/11028.htmlSwinng HYPERLINK xximportnewx/11028.html l jdbc xximportnewx/11028.htmlJDBCC HYPERLINK xx
3、importnewx/11028.html l rmi xximportnewx/11028.html遠程方法法調用(RMI) HYPERLINK xximportnewx/11028.html l servlet xximportnewx/11028.htmlServvlett HYPERLINK xximportnewx/11028.html l jsp xximportnewx/11028.htmlJSP面向對象象編程(OOP)Javaa是一個個支持并并發、基基于類和和面向對對象的計計算機編編程語言言。下面面列出了了面向對對象 HYPERLINK xxkuqinx/軟件件開發的的優點:代
4、碼開發發模塊化化,更易易維護和和修改。代碼復用用。增強代碼碼的可靠靠性和靈靈活性。增加代碼碼的可理理解性。面向對象象編程有有很多重重要的特特性,比比如:封封裝,繼繼承,多多態和抽抽象。下下面的章章節我們們會逐個個分析這這些特性性。封裝封裝給對對象提供供了隱藏藏內部特特性和行行為的能能力。對對象提供供一些能能被其他他對象訪訪問的方方法來改改變它內內部的數數據。在在Javva當中,有有3種修飾飾符:pubblicc,priivatte和prootecctedd。每一一種修飾飾符給其其他的位位于同一一個包或或者不同同包下面面對象賦賦予了不不同的訪訪問權限限。下面列出出了使用用封裝的的一些好好處:通過
5、隱藏藏對象的的屬性來來保護對對象內部部的狀態態。提高了代代碼的可可用性和和可維護護性,因因為對象象的行為為可以被被單獨的的改變或或者是擴擴展。禁止對象象之間的的不良交交互提高高模塊化化。參考 HYPERLINK xexamples.javacodegeeksx/java-basics/encapsulation-in-java/這個個文檔獲獲取更多多關于封封裝的細細節和示示例。多態多態是編編程語言言給不同同的底層層數據類類型做相相同的接接口展示示的一種種能力。一個多多態類型型上的操操作可以以應用到到其他類類型的值值上面。繼承繼承給對對象提供供了從基基類獲取取字段和和方法的的能力。繼承提提供了代
6、代碼的重重用行,也也可以在在不修改改類的情情況下給給現存的的類添加加新特性性。抽象抽象是把把想法從從具體的的實例中中分離出出來的步步驟,因因此,要要根據他他們的功功能而不不是實現現細節來來創建類類。Javva支持創創建只暴暴漏接口口而不包包含方法法實現的的抽象的的類。這這種抽象象技術的的主要目目的是把把類的行行為和實實現細節節分離開開。抽象和封封裝的不不同點抽象和封封裝是互互補的概概念。一一方面,抽抽象關注注對象的的行為。另一方方面,封封裝關注注對象行行為的細細節。一一般是通通過隱藏藏對象內內部狀態態信息做做到封裝裝,因此此,封裝裝可以看看成是用用來提供供抽象的的一種策策略。常見的JJavaa
7、問題1.什么么是Javva虛擬機機?為什什么Javva被稱作作是“平臺無無關的編編程語言言”?Javaa虛擬機機是一個個可以執執行Javva字節碼碼的虛擬擬機進程程。Javva源文件件被編譯譯成能被被Javva虛擬機機執行的的字節碼碼文件。Javaa被設計計成允許許應用程程序可以以運行在在任意的的平臺,而而不需要要程序員員為每一一個平臺臺單獨重重寫或者者是重新新編譯。Javva虛擬機機讓這個個變為可可能,因因為它知知道底層層硬件平平臺的指指令長度度和其他他特性。2.JDDK和JRE的區別別是什么么?Javaa運行時時環境(JRRE)是將要要執行Javva程序的Javva虛擬機機。它同同時也包包
8、含了執執行appplett需要的的瀏覽器器插件。Javva開發工工具包(JDDK)是完整整的Javva軟件開開發包,包包含了JRE,編譯譯器和其其他的工工具(比如:JavvaDooc,Javva調試器),可以以讓開發發者開發發、編譯譯、執行行Javva應用程程序。3.”sstattic”關鍵字字是什么么意思?Javva中是否否可以覆覆蓋(ovverrridee)一個priivatte或者是staaticc的方法法?“staaticc”關鍵字字表明一一個成員員變量或或者是成成員方法法可以在在沒有所所屬的類類的實例例變量的的情況下下被訪問問。Jaava中staaticc方法不不能被覆覆蓋,因因為方
9、法法覆蓋是是基于運運行時動動態綁定定的,而而staaticc方法是是編譯時時靜態綁綁定的。staaticc方法跟跟類的任任何實例例都不相相關,所所以概念念上不適適用。4.是否否可以在在staaticc環境中中訪問非非staaticc變量?stattic變量在Javva中是屬屬于類的的,它在在所有的的實例中中的值是是一樣的的。當類類被Javva虛擬機機載入的的時候,會會對staaticc變量進進行初始始化。如如果你的的代碼嘗嘗試不用用實例來來訪問非非staaticc的變量量,編譯譯器會報報錯,因因為這些些變量還還沒有被被創建出出來,還還沒有跟跟任何實實例關聯聯上。5.Jaava支持的的數據類類型
10、有哪哪些?什什么是自自動拆裝裝箱?Javaa語言支支持的8中基本本數據類類型是:byteeshorrtintlonggfloaatdoubbleboolleanncharr自動裝箱箱是Javva編譯器器在基本本數據類類型和對對應的對對象包裝裝類型之之間做的的一個轉轉化。比比如:把把int轉化成Inttegeer,douublee轉化成douublee,等等等。反之之就是自自動拆箱箱。6.Jaava中的方方法覆蓋蓋(Ovverrridiing)和方法法重載(Ovverlloaddingg)是什么么意思?Javaa中的方方法重載載發生在在同一個個類里面面兩個或或者是多多個方法法的方法法名相同同但是
11、參參數不同同的情況況。與此此相對,方方法覆蓋蓋是說子子類重新新定義了了父類的的方法。方法覆覆蓋必須須有相同同的方法法名,參參數列表表和返回回類型。覆蓋者者可能不不會限制制它所覆覆蓋的方方法的訪訪問。7.Jaava中,什什么是構構造函數數?什么么是構造造函數重重載?什什么是復復制構造造函數?當新對象象被創建建的時候候,構造造函數會會被調用用。每一一個類都都有構造造函數。在程序序員沒有有給類提提供構造造函數的的情況下下,Javva編譯器器會為這這個類創創建一個個默認的的構造函函數。Javaa中構造造函數重重載和方方法重載載很相似似??梢砸詾橐粋€個類創建建多個構構造函數數。每一一個構造造函數必必須有
12、它它自己唯唯一的參參數列表表。Javaa不支持持像C+中那樣樣的復制制構造函函數,這這個不同同點是因因為如果果你不自自己寫構構造函數數的情況況下,Javva不會創創建默認認的復制制構造函函數。8.Jaava支持多多繼承么么?不支持,Javva不支持持多繼承承。每個個類都只只能繼承承一個類類,但是是可以實實現多個個接口。9.接口口和抽象象類的區區別是什什么?Javaa提供和和支持創創建抽象象類和接接口。它它們的實實現有共共同點,不不同點在在于:接口中所所有的方方法隱含含的都是是抽象的的。而抽抽象類則則可以同同時包含含抽象和和非抽象象的方法法。類可以實實現很多多個接口口,但是是只能繼繼承一個個抽象
13、類類類如果要要實現一一個接口口,它必必須要實實現接口口聲明的的所有方方法。但但是,類類可以不不實現抽抽象類聲聲明的所所有方法法,當然然,在這這種情況況下,類類也必須須得聲明明成是抽抽象的。抽象類可可以在不不提供接接口方法法實現的的情況下下實現接接口。Javaa接口中中聲明的的變量默默認都是是finnal的。抽抽象類可可以包含含非finnal的變量量。Javaa接口中中的成員員函數默默認是pubblicc的。抽抽象類的的成員函函數可以以是priivatte,prootecctedd或者是pubblicc。接口是絕絕對抽象象的,不不可以被被實例化化。抽象象類也不不可以被被實例化化,但是是,如果果它
14、包含含maiin方法的的話是可可以被調調用的。也可以參參考 HYPERLINK xxjavacodegeeksx/2014/04/abstract-class-versus-interface-in-the-jdk-8-era.htmlJDDK8中抽象象類和接接口的區區別10.什什么是值值傳遞和和引用傳傳遞?對象被值值傳遞,意意味著傳傳遞了對對象的一一個副本本。因此此,就算算是改變變了對象象副本,也也不會影影響源對對象的值值。對象被引引用傳遞遞,意味味著傳遞遞的并不不是實際際的對象象,而是是對象的的引用。因此,外外部對引引用對象象所做的的改變會會反映到到所有的的對象上上。Javaa線程11.進
15、進程和線線程的區區別是什什么?進程是執執行著的的應用程程序,而而線程是是進程內內部的一一個執行行序列。一個進進程可以以有多個個線程。線程又又叫做輕輕量級進進程。12.創創建線程程有幾種種不同的的方式?你喜歡歡哪一種種?為什什么?有三種方方式可以以用來創創建線程程:繼承Thhreaad類實現Ruunnaablee接口應用程序序可以使使用Exeecuttor框架來來創建線線程池實現Ruunnaablee接口這這種方式式更受歡歡迎,因因為這不不需要繼繼承Thrreadd類。在在應用設設計中已已經繼承承了別的的對象的的情況下下,這需需要多繼繼承(而而Javva不支持持多繼承承),只只能實現現接口。同時
16、,線線程池也也是非常常高效的的,很容容易實現現和使用用。一三.概概括的解解釋下線線程的幾幾種可用用狀態。線程在執執行過程程中,可可以處于于下面幾幾種狀態態:就緒(RRunnnablle):線程準準備運行行,不一一定立馬馬就能開開始執行行。運行中(Runnninng):進程程正在執執行線程程的代碼碼。等待中(Waiitinng):線程處處于阻塞塞的狀態態,等待待外部的的處理結結束。睡眠中(Sleeepiing):線程程被強制制睡眠。I/O阻阻塞(Bllockked on I/OO):等待I/O操作完完成。同步阻塞塞(Bllockked on Synnchrroniizattionn):等待待獲取
17、鎖鎖。死亡(DDeadd):線程程完成了了執行。14.同同步方法法和同步步代碼塊塊的區別別是什么么?在Javva語言中中,每一一個對象象有一把把鎖。線線程可以以使用synnchrroniizedd關鍵字字來獲取取對象上上的鎖。synnchrroniizedd關鍵字字可應用用在方法法級別(粗粒度度鎖)或者是是代碼塊塊級別(細粒度度鎖)。一五.在在監視器器(Moonittor)內部,是是如何做做線程同同步的?程序應應該做哪哪種級別別的同步步?監視器和和鎖在Javva虛擬機機中是一一塊使用用的。監監視器監監視一塊塊同步代代碼塊,確確保一次次只有一一個線程程執行同同步代碼碼塊。每每一個監監視器都都和一
18、個個對象引引用相關關聯。線線程在獲獲取鎖之之前不允允許執行行同步代代碼。16.什什么是死死鎖(deeadllockk)?兩個進程程都在等等待對方方執行完完畢才能能繼續往往下執行行的時候候就發生生了死鎖鎖。結果果就是兩兩個進程程都陷入入了無限限的等待待中。17.如如何確保保N個線程程可以訪訪問N個資源源同時又又不導致致死鎖?使用多線線程的時時候,一一種非常常簡單的的避免死死鎖的方方式就是是:指定定獲取鎖鎖的順序序,并強強制線程程按照指指定的順順序獲取取鎖。因因此,如如果所有有的線程程都是以以同樣的的順序加加鎖和釋釋放鎖,就就不會出出現死鎖鎖了。Javaa集合類類一八.JJavaa集合類類框架的的
19、基本接接口有哪哪些?Javaa集合類類提供了了一套設設計良好好的支持持對一組組對象進進行操作作的接口口和類。Javva集合類類里面最最基本的的接口有有:Colllecttionn:代表表一組對對象,每每一個對對象都是是它的子子元素。Set:不包含含重復元元素的Colllecctioon。Listt:有順順序的colllecctioon,并且且可以包包含重復復元素。Map:可以把把鍵(keey)映射到到值(vaaluee)的對象象,鍵不不能重復復。19.為為什么集集合類沒沒有實現現Clooneaablee和Serriallizaablee接口?集合類接接口指定定了一組組叫做元元素的對對象。集集合
20、類接接口的每每一種具具體的實實現類都都可以選選擇以它它自己的的方式對對元素進進行保存存和排序序。有的的集合類類允許重重復的鍵鍵,有些些不允許許。20.什什么是迭迭代器(Itteraatorr)?Iterratoor接口提提供了很很多對集集合元素素進行迭迭代的方方法。每每一個集集合類都都包含了了可以返返回迭代代器實例例的迭代代方法。迭代器器可以在在迭代的的過程中中刪除底底層集合合的元素素??寺?cclonningg)或者是是序列化化(seeriaalizzatiion)的語義義和含義義是跟具具體的實實現相關關的。因因此,應應該由集集合類的的具體實實現來決決定如何何被克隆隆或者是是序列化化。21.
21、IIterratoor和LisstItteraatorr的區別別是什么么?下面列出出了他們們的區別別:Iterratoor可用來來遍歷Set和Lisst集合,但但是LisstItteraatorr只能用用來遍歷歷Lisst。Iterratoor對集合合只能是是前向遍遍歷,LisstItteraatorr既可以以前向也也可以后后向。ListtIteerattor實現了Iteerattor接口,并并包含其其他的功功能,比比如:增增加元素素,替換換元素,獲獲取前一一個和后后一個元元素的索索引,等等等。22.快快速失敗敗(faail-fasst)和安全全失敗(faail-saffe)的區別別是什么么?
22、Iterratoor的安全全失敗是是基于對對底層集集合做拷拷貝,因因此,它它不受源源集合上上修改的的影響。javva.uutill包下面面的所有有的集合合類都是是快速失失敗的,而java.util.concurrent包下面的所有的類都是安全失敗的??焖偈〉牡鲿伋鯟oncurrentModificationException異常,而安全失敗的迭代器永遠不會拋出這樣的異常。23.JJavaa中的HasshMaap的工作作原理是是什么?Javaa中的HasshMaap是以鍵鍵值對(keey-vvaluue)的形式式存儲元元素的。HasshMaap需要一一個hassh函數,它它使用hassh
23、Coode()和equualss()方法來來向集合合/從集合合添加和和檢索元元素。當當調用putt()方法的的時候,HasshMaap會計算key的hassh值,然然后把鍵鍵值對存存儲在集集合中合合適的索索引上。如果key已經存存在了,vallue會被更更新成新新值。HasshMaap的一些些重要的的特性是是它的容容量(caapaccityy),負載載因子(looad facctorr)和擴容容極限(thhressholld rresiizinng)。24.hhashhCodde()和equualss()方法的的重要性性體現在在什么地地方?Javaa中的HasshMaap使用hasshCood
24、e()和equualss()方法來來確定鍵鍵值對的的索引,當當根據鍵鍵獲取值值的時候候也會用用到這兩兩個方法法。如果果沒有正正確的實實現這兩兩個方法法,兩個個不同的的鍵可能能會有相相同的hassh值,因因此,可可能會被被集合認認為是相相等的。而且,這這兩個方方法也用用來發現現重復元元素。所所以這兩兩個方法法的實現現對HasshMaap的精確確性和正正確性是是至關重重要的。25.HHashhMapp和Hasshtaablee有什么么區別?HashhMapp和Hasshtaablee都實現現了Map接口,因因此很多多特性非非常相似似。但是是,他們們有以下下不同點點:HashhMapp允許鍵鍵和值是
25、是nulll,而Hasshtaablee不允許許鍵或者者值是nulll。Hashhtabble是同步步的,而而HasshMaap不是。因此,HasshMaap更適合合于單線線程環境境,而Hasshtaablee適合于于多線程程環境。HashhMapp提供了了可供應應用迭代代的鍵的的集合,因因此,HasshMaap是快速速失敗的的。另一一方面,Hasshtaablee提供了了對鍵的的列舉(Ennumeerattionn)。一般認為為Hasshtaablee是一個個遺留的的類。26.數數組(Arrrayy)和列表(ArrrayyLisst)有什么么區別?什么時時候應該該使用Arrray而不是Arr
26、rayLListt?下面列出出了Arrray和ArrrayLListt的不同同點:Arraay可以包包含基本本類型和和對象類類型,ArrrayLListt只能包包含對象象類型。Arraay大小是是固定的的,ArrrayLListt的大小小是動態態變化的的。ArraayLiist提供了了更多的的方法和和特性,比比如:adddAlll(),remmoveeAlll(),iteerattor()等等。對于基本本類型數數據,集集合使用用自動裝裝箱來減減少編碼碼工作量量。但是是,當處處理固定定大小的的基本數數據類型型的時候候,這種種方式相相對比較較慢。27.AArraayLiist和LinnkeddLi
27、sst有什么么區別?ArraayLiist和LinnkeddLisst都實現現了Lisst接口,他他們有以以下的不不同點:ArraayLiist是基于于索引的的數據接接口,它它的底層層是數組組。它可可以以O(11)時間復復雜度對對元素進進行隨機機訪問。與此對對應,LinnkeddLisst是以元元素列表表的形式式存儲它它的數據據,每一一個元素素都和它它的前一一個和后后一個元元素鏈接接在一起起,在這這種情況況下,查查找某個個元素的的時間復復雜度是是O(nn)。相對于AArraayLiist,LinnkeddLisst的插入入,添加加,刪除除操作速速度更快快,因為為當元素素被添加加到集合合任意位位
28、置的時時候,不不需要像像數組那那樣重新新計算大大小或者者是更新新索引。LinkkedLListt比ArrrayLListt更占內內存,因因為LinnkeddLisst為每一一個節點點存儲了了兩個引引用,一一個指向向前一個個元素,一一個指向向下一個個元素。也可以參參考 HYPERLINK xxjavacodegeeksx/20一三/12/arraylist-vs-linkedlist.htmlArrrayyLisst vvs. LinnkeddLisst。28xpparaablee和Commparratoor接口是是干什么么的?列列出它們們的區別別。Javaa提供了了只包含含一個commparr
29、eToo()方法的Commparrablle接口。這個方方法可以以個給兩兩個對象象排序。具體來來說,它它返回負負數,0,正數數來表明明輸入對對象小于于,等于于,大于于已經存存在的對對象。Javaa提供了了包含commparre()和equualss()兩個方方法的Commparratoor接口。commparre()方法用用來給兩兩個輸入入參數排排序,返返回負數數,0,正數數表明第第一個參參數是小小于,等等于,大大于第二二個參數數。equualss()方法需需要一個個對象作作為參數數,它用用來決定定輸入參參數是否否和commparratoor相等。只有當當輸入參參數也是是一個commparra
30、toor并且輸輸入參數數和當前前commparratoor的排序序結果是是相同的的時候,這這個方法法才返回回truue。29.什什么是Javva優先級級隊列(Prriorrityy Quueuee)?PrioorittyQuueuee是一個個基于優優先級堆堆的無界界隊列,它它的元素素是按照照自然順順序(naaturral ordder)排序的的。在創創建的時時候,我我們可以以給它提提供一個個負責給給元素排排序的比比較器。PriioriityQQueuue不允許nulll值,因因為他們們沒有自自然順序序,或者者說他們們沒有任任何的相相關聯的的比較器器。最后后,PriioriityQQueuue不
31、是線線程安全全的,入入隊和出出隊的時時間復雜雜度是O(llog(n)。30.你你了解大大O符號(biig-OO nootattionn)么?你你能給出出不同數數據結構構的例子子么?大O符號號描述了了當數據據結構里里面的元元素增加加的時候候,算法法的規模?;蛘呤鞘切阅茉谠谧顗牡牡膱鼍跋孪掠卸嗝疵春?。大大O符號也也可用來來描述其其他的行行為,比比如:內內存消耗耗。因為為集合類類實際上上是數據據結構,我我們一般般使用大大O符號基基于時間間,內存存和性能能來選擇擇最好的的實現。大O符號可可以對大大量數據據的性能能給出一一個很好好的說明明。31.如如何權衡衡是使用用無序的的數組還還是有序序的數組組?有序
32、數組組最大的的好處在在于查找找的時間間復雜度度是O(llog n),而無無序數組組是O(nn)。有序序數組的的缺點是是插入操操作的時時間復雜雜度是O(nn),因為為值大的的元素需需要往后后移動來來給新元元素騰位位置。相相反,無無序數組組的插入入時間復復雜度是是常量O(11)。32.JJavaa集合類類框架的的最佳實實踐有哪哪些?根據應用用的需要要正確選選擇要使使用的集集合的類類型對性性能非常常重要,比比如:假假如元素素的大小小是固定定的,而而且能事事先知道道,我們們就應該該用Arrray而不是ArrrayLListt。有些集合合類允許許指定初初始容量量。因此此,如果果我們能能估計出出存儲的的元
33、素的的數目,我我們可以以設置初初始容量量來避免免重新計計算hassh值或者者是擴容容。為了類型型安全,可可讀性和和健壯性性的原因因總是要要使用泛泛型。同同時,使使用泛型型還可以以避免運運行時的的ClaassCCasttExccepttionn。使用JDDK提供的的不變類類(immmuttablle cclasss)作為Map的鍵可可以避免免為我們們自己的的類實現現hasshCoode()和equualss()方法。編程的時時候接口口優于實實現。底層的集集合實際際上是空空的情況況下,返返回長度度是0的集合合或者是是數組,不不要返回回nulll。33.EEnummeraatioon接口和Iteer
34、attor接口的的區別有有哪些?Enummeraatioon速度是Iteerattor的2倍,同同時占用用更少的的內存。但是,Iteerattor遠遠比Enuumerratiion安全,因因為其他他線程不不能夠修修改正在在被iteerattor遍歷的的集合里里面的對對象。同同時,Iteerattor允許調調用者刪刪除底層層集合里里面的元元素,這這對Enuumerratiion來說是是不可能能的。34.HHashhSett和TreeeSeet有什么么區別?HashhSett是由一一個hassh表來實實現的,因因此,它它的元素素是無序序的。addd(),remmovee(),conntaiins(
35、)方法的的時間復復雜度是是O(11)。另一方面面,TreeeSeet是由一一個樹形形的結構構來實現現的,它它里面的的元素是是有序的的。因此此,addd(),remmovee(),conntaiins()方法的的時間復復雜度是是O(llognn)。垃圾收集集器(Garrbagge CColllecttorss)35.JJavaa中垃圾圾回收有有什么目目的?什什么時候候進行垃垃圾回收收?垃圾回收收的目的的是識別別并且丟丟棄應用用不再使使用的對對象來釋釋放和重重用資源源。36.SSysttem.gc()和Runntimme.ggc()會做什什么事情情?這兩個方方法用來來提示JVM要進行行垃圾回回收。
36、但但是,立立即開始始還是延延遲進行行垃圾回回收是取取決于JVM的。37.ffinaalizze()方法什什么時候候被調用用?析構構函數(fiinallizaatioon)的目的的是什么么?在釋放對對象占用用的內存存之前,垃垃圾收集集器會調調用對象象的finnaliize()方法。一般建建議在該該方法中中釋放對對象持有有的資源源。38.如如果對象象的引用用被置為為nulll,垃圾圾收集器器是否會會立即釋釋放對象象占用的的內存?不會,在在下一個個垃圾回回收周期期中,這這個對象象將是可可被回收收的。39.JJavaa堆的結結構是什什么樣子子的?什什么是堆堆中的永永久代(Perrm GGen spaa
37、ce)?JVM的的堆是運運行時數數據區,所所有類的的實例和和數組都都是在堆堆上分配配內存。它在JVM啟動的的時候被被創建。對象所所占的堆堆內存是是由自動動內存管管理系統統也就是是垃圾收收集器回回收。堆內存是是由存活活和死亡亡的對象象組成的的。存活活的對象象是應用用可以訪訪問的,不不會被垃垃圾回收收。死亡亡的對象象是應用用不可訪訪問尚且且還沒有有被垃圾圾收集器器回收掉掉的對象象。一直直到垃圾圾收集器器把這些些對象回回收掉之之前,他他們會一一直占據據堆內存存空間。40.串串行(seeriaal)收集器器和吞吐吐量(thhrouughpput)收集器器的區別別是什么么?吞吐量收收集器使使用并行行版本
38、的的新生代代垃圾收收集器,它它用于中中等規模模和大規規模數據據的應用用程序。而串行行收集器器對大多多數的小小應用(在現代代處理器器上需要要大概1000M左右的的內存)就足夠夠了。41.在在Javva中,對對象什么么時候可可以被垃垃圾回收收?當對象對對當前使使用這個個對象的的應用程程序變得得不可觸觸及的時時候,這這個對象象就可以以被回收收了。42.JJVM的永久久代中會會發生垃垃圾回收收么?垃圾回收收不會發發生在永永久代,如如果永久久代滿了了或者是是超過了了臨界值值,會觸觸發完全全垃圾回回收(Fuull GC)。如果果你仔細細查看垃垃圾收集集器的輸輸出信息息,就會會發現永永久代也也是被回回收的。
39、這就是是為什么么正確的的永久代代大小對對避免Fulll GGC是非常常重要的的原因。請參考考下 HYPERLINK xxjavacodegeeksx/20一三/02/java-8-from-permgen-to-metaspace.htmlJaava88:從永永久代到到元數據據區(譯者注注:Javva8中已經經移除了了永久代代,新加加了一個個叫做元元數據區區的nattivee內存區)異常處理理43.JJavaa中的兩兩種異常常類型是是什么?他們有有什么區區別?Javaa中有兩兩種異常常:受檢檢查的(chheckked)異常和和不受檢檢查的(unncheeckeed)異常。不受檢檢查的異異常不需
40、需要在方方法或者者是構造造函數上上聲明,就就算方法法或者是是構造函函數的執執行可能能會拋出出這樣的的異常,并并且不受受檢查的的異??煽梢詡鞑ゲサ椒椒ǚɑ蛘呤鞘菢嬙旌瘮档耐馔饷妗O嘞喾?,受受檢查的的異常必必須要用用thrrowss語句在在方法或或者是構構造函數數上聲明明。這里里有 HYPERLINK xxjavacodegeeksx/20一三/07/java-exception-handling-tutorial-with-examples-and-best-practices.htmlJaava異常處處理的一一些小建建議。44.JJavaa中Exccepttionn和Errror有什么么區別
41、?Exceeptiion和Errror都是Thrrowaablee的子類類。Exccepttionn用于用用戶程序序可以捕捕獲的異異常情況況。Errror定義了了不期望望被用戶戶程序捕捕獲的異異常。45.tthroow和thrrowss有什么么區別?throow關鍵字字用來在在程序中中明確的的拋出異異常,相相反,thrrowss語句用用來表明明方法不不能處理理的異常常。每一一個方法法都必須須要指定定哪些異異常不能能處理,所所以方法法的調用用者才能能夠確保保處理可可能發生生的異常常,多個個異常是是用逗號號分隔的的。45.異異常處理理的時候候,finnallly代碼塊塊的重要要性是什什么?(譯者注
42、注:作者者標題的的序號弄弄錯了)無論是否否拋出異異常,finnallly代碼塊塊總是會會被執行行。就算算是沒有有cattch語句同同時又拋拋出異常常的情況況下,finnallly代碼塊塊仍然會會被執行行。最后后要說的的是,finnallly代碼塊塊主要用用來釋放放資源,比比如:I/O緩沖區區,數據據庫連接接。46.異異常處理理完成以以后,Exccepttionn對象會會發生什什么變化化?Exceeptiion對象會會在下一一個垃圾圾回收過過程中被被回收掉掉。47.ffinaallyy代碼塊塊和finnaliize()方法有有什么區區別?無論是否否拋出異異常,finnallly代碼塊塊都會執執行
43、,它它主要是是用來釋釋放應用用占用的的資源。finnaliize()方法是Objjectt類的一一個prootecctedd方法,它它是在對對象被垃垃圾回收收之前由由Javva虛擬機機來調用用的。Javaa小應用用程序(Appplett)48.什什么是Appplett?javaa apppleet是能夠夠被包含含在HTMML頁面中中并且能能被啟用用了javva的客戶戶端瀏覽覽器執行行的程序序。Appplett主要用用來創建建動態交交互的web應用程程序。49.解解釋一下下Appplett的生命命周期appllet可以經經歷下面面的狀態態:Initt:每次次被載入入的時候候都會被被初始化化。St
44、arrt:開始始執行appplett。Stopp:結束束執行appplett。Desttroyy:卸載appplett之前,做做最后的的清理工工作。50.當當appplett被載入入的時候候會發生生什么?首先,創創建appplett控制類類的實例例,然后后初始化化appplett,最后后開始運運行。51.AAppllet和普通通的Javva應用程程序有什什么區別別?appllet是運行行在啟用用了javva的瀏覽覽器中,Javva應用程程序是可可以在瀏瀏覽器之之外運行行的獨立立的Javva程序。但是,它它們都需需要有Javva虛擬機機。進一步來來說,Javva應用程程序需要要一個有有特定方方法
45、簽名名的maiin函數來來開始執執行。Javva aappllet不需要要這樣的的函數來來開始執執行。最后,JJavaa apppleet一般會會使用很很嚴格的的安全策策略,Javva應用一一般使用用比較寬寬松的安安全策略略。52.JJavaa apppleet有哪些些限制條條件?主要是由由于安全全的原因因,給appplett施加了了以下的的限制:appllet不能夠夠載入類類庫或者者定義本本地方法法。appllet不能在在宿主機機上讀寫寫文件。appllet不能讀讀取特定定的系統統屬性。appllet不能發發起網絡絡連接,除除非是跟跟宿主機機。appllet不能夠夠開啟宿宿主機上上其他任任何
46、的程程序。53.什什么是不不受信任任的appplett?不受信任任的appplett是不能能訪問或或是執行行本地系系統文件件的Javva aappllet,默認認情況下下,所有有下載的的appplett都是不不受信任任的。54.從從網絡上上加載的的appplett和從本本地文件件系統加加載的appplett有什么么區別?當appplett是從網網絡上加加載的時時候,appplett是由appplett類加載載器載入入的,它它受appplett安全管管理器的的限制。當appplett是從客客戶端的的本地磁磁盤載入入的時候候,appplett是由文文件系統統加載器器載入的的。從文件系系統載入入的a
47、ppplett允許在在客戶端端讀文件件,寫文文件,加加載類庫庫,并且且也允許許執行其其他程序序,但是是,卻通通不過字字節碼校校驗。55.aappllet類加載載器是什什么?它它會做哪哪些工作作?當appplett是從網網絡上加加載的時時候,它它是由appplett類加載載器載入入的。類類加載器器有自己己的javva名稱空空間等級級結構。類加載載器會保保證來自自文件系系統的類類有唯一一的名稱稱空間,來來自網絡絡資源的的類有唯唯一的名名稱空間間。當瀏覽器器通過網網絡載入入appplett的時候候,appplett的類被被放置于于和appplett的源相相關聯的的私有的的名稱空空間中。然后,那那些被
48、類類加載器器載入進進來的類類都是通通過了驗驗證器驗驗證的。驗證器器會檢查查類文件件格式是是否遵守守Javva語言規規范,確確保不會會出現堆堆棧溢出出(sttackk ovverffloww)或者下下溢(unnderrfloow),傳遞遞給字節節碼指令令的參數數是正確確的。56.aappllet安全管管理器是是什么?它會做做哪些工工作?appllet安全管管理器是是給appplett施加限限制條件件的一種種機制。瀏覽器器可以只只有一個個安全管管理器。安全管管理器在在啟動的的時候被被創建,之之后不能能被替換換覆蓋或或者是擴擴展。Swinng57.彈彈出式選選擇菜單單(Chhoicce)和列表(Li
49、ist)有什么么區別Choiice是以一一種緊湊湊的形式式展示的的,需要要下拉才才能看到到所有的的選項。Chooicee中一次次只能選選中一個個選項。Lisst同時可可以有多多個元素素可見,支支持選中中一個或或者多個個元素。58.什什么是布布局管理理器?布局管理理器用來來在容器器中組織織組件。59.滾滾動條(Sccrolllbaar)和滾動動面板(JSScroollPPanee)有什么么區別?Scroollbbar是一個個組件,不不是容器器。而ScrrolllPanne是容器器。ScrrolllPanne自己處處理滾動動事件。60.哪哪些Swiing的方法法是線程程安全的的?只有3個個線程安安
50、全的方方法: reepaiint(), revvaliidatte(), aand invvaliidatte()。61.說說出三種種支持重重繪(paainttingg)的組件件。Canvvas, Frramee, PPaneel,和Appplett支持重重繪。62.什什么是裁裁剪(cllipppingg)?限制在一一個給定定的區域域或者形形狀的繪繪圖操作作就做裁裁剪。63.MMenuuIteem和CheeckbboxMMenuuIteem的區別別是什么么?ChecckbooxMeenuIItemm類繼承承自MennuIttem類,支支持菜單單選項可可以選中中或者不不選中。64.邊邊緣布局局(
51、BoordeerLaayouut)里面的的元素是是如何布布局的?BordderLLayoout里面的的元素是是按照容容器的東東西南北北中進行行布局的的。65.網網格包布布局(GrridBBagLLayoout)里面的的元素是是如何布布局的?GriddBaggLayyoutt里面的的元素是是按照網網格進行行布局的的。不同同大小的的元素可可能會占占據網格格的多于于1行或一一列。因因此,行行數和列列數可以以有不同同的大小小。66.WWinddow和Fraame有什么么區別?Framme類繼承承了Winndoww類,它它定義了了一個可可以有菜菜單欄的的主應用用窗口。67.裁裁剪(cllipppingg
52、)和重繪(reepaiintiing)有什么么聯系?當窗口被被AWT重繪線線程進行行重繪的的時候,它它會把裁裁剪區域域設置成成需要重重繪的窗窗口的區區域。68.事事件監聽聽器接口口(evventt-liisteenerr innterrfacce)和事件件適配器器(evventt-addaptter)有什么么關系?事件監聽聽器接口口定義了了對特定定的事件件,事件件處理器器必須要要實現的的方法。事件適適配器給給事件監監聽器接接口提供供了默認認的實現現。69.GGUI組件如如何來處處理它自自己的事事件?GUI組組件可以以處理它它自己的的事件,只只要它實實現相對對應的事事件監聽聽器接口口,并且且把自
53、己己作為事事件監聽聽器。70.JJavaa的布局局管理器器比傳統統的窗口口系統有有哪些優優勢?圖樣圖Javaa使用布布局管理理器以一一種一致致的方式式在所有有的窗口口平臺上上擺放組組件。因因為布局局管理器器不會和和組件的的絕對大大小和位位置相綁綁定,所所以他們們能夠適適應跨窗窗口系統統的特定定平臺的的不同。71.JJavaa的Swiing組件使使用了哪哪種 HYPERLINK xxkuqinx/book/324656.html設計計模式?Javaa中的Swiing組件使使用了MVCC(視圖-模型-控制器)設計模模式。JDBCC72.什什么是JDBBC?JDBCC是允許許用戶在在不同數數據庫之之
54、間做選選擇的一一個抽象象層。 HYPERLINK xxjavacodegeeksx/2014/03/java-8-friday-java-8-will-revolutionize-database-access.htmlJJDBCC允許開開發者用用JAVVA寫數據據庫應用用程序,而而不需要要關心底底層特定定數據庫庫的細節節。73.解解釋下驅驅動(Drriveer)在JDBBC中的角角色。JDBCC驅動提提供了特特定廠商商對JDBBC AAPI接口類類的實現現,驅動動必須要要提供javva.ssql包下面面這些類類的實現現: HYPERLINK xdocs.oraclex/javase/7/do
55、cs/api/java/sql/Connection.htmlCoonneectiion, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/Statement.htmlStaatemmentt, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/PreparedStatement.htmlPreeparredSStattemeent, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/CallableStatement.htmlCalll
56、abbleSStattemeent, HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/ResultSet.htmlRessulttSett和 HYPERLINK xdocs.oraclex/javase/7/docs/api/java/sql/Driver.htmlDriiverr。74.CClasss.fforNNamee()方法有有什么作作用?這個方法法用來載載入跟數數據庫建建立連接接的驅動動。75.PPreppareedSttateemennt比Staatemmentt有什么么優勢?PreppareedSttateemennts是預編
57、編譯的,因因此,性性能會更更好。同同時,不不同的查查詢參數數值,PreeparredSStattemeent可以重重用。76.什什么時候候使用CalllabbleSStattemeent?用來來準備CalllabbleSStattemeent的方法法是什么么?CalllablleSttateemennt用來執執行存儲儲過程。存儲過過程是由由數據庫庫存儲和和提供的的。存儲儲過程可可以接受受輸入參參數,也也可以有有返回結結果。非非常鼓勵勵使用存存儲過程程,因為為它提供供了安全全性和模模塊化。準備一一個CalllabbleSStattemeent的方法法是:1CalllablleSttameent.
58、preeparreCaall();77.數數據庫連連接池是是什么意意思?像打開關關閉數據據庫連接接這種和和數據庫庫的交互互可能是是很費時時的,尤尤其是當當客戶端端數量增增加的時時候,會會消耗大大量的資資源,成成本是非非常高的的??梢砸栽趹糜梅掌髌鲉拥牡臅r候建建立很多多個數據據庫連接接并維護護在一個個池中。連接請請求由池池中的連連接提供供。在連連接使用用完畢以以后,把把連接歸歸還到池池中,以以用于滿滿足將來來更多的的請求。遠程方法法調用(RMII)78.什什么是RMI?Javaa遠程方方法調用用(Jaava RMII)是Javva AAPI對遠程程過程調調用(RPPC)提供的的面向對對象的
59、等等價形式式,支持持直接傳傳輸序列列化的Javva對象和和分布式式垃圾回回收。遠遠程方法法調用可可以看做做是激活活遠程正正在運行行的對象象上的方方法的步步驟。RMI對調用用者是位位置透明明的,因因為調用用者感覺覺方法是是執行在在本地運運行的對對象上的的??聪孪?HYPERLINK xxjavacodegeeksx/20一三/11/two-things-to-remember-when-using-java-rmi.htmlRMI的一些些注意事事項。79.RRMI體系結結構的基基本原則則是什么么?RMI體體系結構構是基于于一個非非常重要要的行為為定義和和行為實實現相分分離的原原則。RMI允許定定
60、義行為為的代碼碼和實現現行為的的代碼相相分離,并并且運行行在不同同的JVM上。80.RRMI體系結結構分哪哪幾層?RMI體體系結構構分以下下幾層:存根和骨骨架層(Sttub andd Skkeleetonn laayerr):這一一層對程程序員是是透明的的,它主主要負責責攔截客客戶端發發出的方方法調用用請求,然然后把請請求重定定向給遠遠程的RMI服務。遠程引用用層(Reemotte RRefeerennce Layyer):RMI體系結結構的第第二層用用來解析析客戶端端對服務務端遠程程對象的的引用。這一層層解析并并管理客客戶端對對服務端端遠程對對象的引引用。連連接是點點到點的的。傳輸層(Tra
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國可折疊刀行業市場全景分析及前景機遇研判報告
- 國際郵輪乘務管理專業教學標準(高等職業教育專科)2025修訂
- 2025年中國高端紅酒市場發展現狀調查及投資趨勢前景分析報告
- 2024年中國鉆井液助劑行業市場調查報告
- 中國音樂貼花行業市場發展前景及發展趨勢與投資戰略研究報告(2024-2030)
- 信貸技能培訓課件
- 2025年 重慶公務員考試行測試題市直附答案
- 2025年中國大型客車行業市場調研分析及投資前景預測報告
- 2025年 南通市第三人民醫院招聘考試筆試試題附答案
- 2025年 河南省全科醫生特設崗位計劃招聘筆試試題附答案
- 大學生戀愛與性健康(中國性學會) 超星爾雅學習通章節測試答案
- 中醫醫院中醫護理工作指南2024
- 綠植租賃維護擺放服務實施方案
- 光伏運維技能大賽備考試題含答案
- 高考英語讀后續寫練習03:女兒離家又回家+講義
- 2024鐵塔采購合同模板
- 鹵菜店供貨合同協議書
- 華為云:2024年EMS彈性內存存儲技術白皮書
- 卡粘式連接薄壁不銹鋼管道工程技術規程
- 2024年山東普通高中學業水平等級考試化學(原卷版)
- 接警員試題題庫
評論
0/150
提交評論