面試題集2:java基礎(chǔ)

1览妖、Java里的傳引用和傳值的區(qū)別是什么?
答案:傳引用是指傳遞的是地址而不是值本身揽祥,傳值則是傳遞值的一份拷貝讽膏。

2、為什么Java里沒有全局變量?
答案:全局變量是全局可見的拄丰,Java不支持全局可見的變量府树,因?yàn)椋喝肿兞科茐牧艘猛该餍栽瓌t。全局變量導(dǎo)致了命名空間的沖突愈案。

3挺尾、如何將String類型轉(zhuǎn)化成Number類型?
答案:Integer類的valueOf方法可以將String轉(zhuǎn)成Number站绪。

4、面向?qū)ο缶幊痰脑瓌t是什么?
答案:主要有三點(diǎn)丽柿,多態(tài)恢准,繼承和封裝。

5甫题、所有類的父類是什么馁筐?
答案:object

6、Java的基本類型有哪些?
答案:byte,char, short, int, long, float, double, boolean坠非。

7敏沉、怎么判斷數(shù)組是null還是為空?
答案:輸出array.length的值,如果是0炎码,說明數(shù)組為空盟迟。如果是null的話,會(huì)拋出空指針異常潦闲。

8攒菠、JDKJRE的區(qū)別是什么?
答案:Java運(yùn)行時(shí)環(huán)境(JRE)是將要執(zhí)行Java程序的Java虛擬機(jī)歉闰。它同時(shí)也包含了執(zhí)行applet需要的瀏覽器插件辖众。Java開發(fā)工具包(JDK)是完整的Java軟件開發(fā)包卓起,包含了JRE,編譯器和其他的工具(比如:JavaDoc凹炸,Java調(diào)試器)戏阅,可以讓開發(fā)者開發(fā)、編譯啤它、執(zhí)行Java應(yīng)用程序奕筐。

9、Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思蚕键?
答案:Java的方法重載救欧,就是在類中可以創(chuàng)建多個(gè)方法,它們具有相同的名字锣光,Java中的方法重載發(fā)生在同一個(gè)類里面兩個(gè)或者是多個(gè)方法的方法名相同但是參數(shù)不同的情況笆怠。與此相對(duì),方法覆蓋是說子類重新定義了父類的方法誊爹。方法覆蓋必須有相同的方法名蹬刷,參數(shù)列表和返回類型。覆蓋者可能不會(huì)限制它所覆蓋的方法的訪問频丘。

10办成、Java支持多繼承么?
答案:不支持搂漠,Java不支持多繼承迂卢。每個(gè)類都只能繼承一個(gè)類,但是可以實(shí)現(xiàn)多個(gè)接口桐汤。

11而克、進(jìn)程和線程的區(qū)別是什么?
答案:進(jìn)程是執(zhí)行著的應(yīng)用程序怔毛,而線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行序列员萍。一個(gè)進(jìn)程可以有多個(gè)線程。線程又叫做輕量級(jí)進(jìn)程拣度。

12碎绎、創(chuàng)建線程有幾種不同的方式?你喜歡哪一種抗果?為什么筋帖?
答案:有三種方式可以用來創(chuàng)建線程:
繼承Thread
實(shí)現(xiàn)Runnable接口
實(shí)現(xiàn)Callable接口
應(yīng)用程序可以使用Executor框架來創(chuàng)建線程池
實(shí)現(xiàn)Runnable接口這種方式更受歡迎,因?yàn)檫@不需要繼承Thread類窖张。在應(yīng)用設(shè)計(jì)中已經(jīng)繼承了別的對(duì)象的情況下幕随,這需要多繼承(而Java不支持多繼承),只能實(shí)現(xiàn)接口宿接。同時(shí)赘淮,線程池也是非常高效的辕录,很容易實(shí)現(xiàn)和使用。

13梢卸、什么是死鎖(deadlock)走诞?
答案:兩個(gè)進(jìn)程都在等待對(duì)方執(zhí)行完畢才能繼續(xù)往下執(zhí)行的時(shí)候就發(fā)生了死鎖。結(jié)果就是兩個(gè)進(jìn)程都陷入了無限的等待中蛤高。

14蚣旱、簡單的說下HashMapTreeMap的區(qū)別?
答案:HashMap:適用于在Map中插入戴陡、刪除和定位元素塞绿。TreeMap:適用于按自然順序或自定義順序遍歷鍵(key)。HashMap通常比TreeMap快一點(diǎn)(樹和哈希表的數(shù)據(jù)結(jié)構(gòu)使然)恤批,建議多使用HashMap异吻,在需要排序的Map時(shí)候才用TreeMap

15喜庞、自定義標(biāo)簽要繼承哪個(gè)類诀浪?
答案:這個(gè)類可以繼承TagSupport或者BodyTagSupport,兩者的差別是前者適用于沒有主體的標(biāo)簽延都,而后者適用于有主體的標(biāo)簽雷猪。如果選擇繼承TagSupport,可以實(shí)現(xiàn)doStartTagdoEndTag兩個(gè)方法實(shí)現(xiàn)Tag的功能晰房,如果選擇繼承BodyTagSupport求摇,可以實(shí)現(xiàn)doAfterBody這個(gè)方法。

16殊者、jsp頁面是在服務(wù)器端運(yùn)行還是在客戶端運(yùn)行月帝?
答案:服務(wù)器端。JSPJava Servlet一樣

17幽污、JSPSERVLET的區(qū)別。
答案:JSP先編譯成SERVLET然后再編譯成CLASS文件簿姨。JSP-----SERVLET-----JAVA文件---CLASS距误,jsp主要做視圖層,servlet主要做控制層

**18扁位、try {}里有一個(gè)return語句准潭,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行域仇,在return前還是后? **
答案:會(huì)執(zhí)行刑然,在return前執(zhí)行。

19暇务、在JAVA中泼掠,如何跳出當(dāng)前的循環(huán)怔软?
答案:用break; return方法。

**20择镇、在Java中挡逼,如何跳出當(dāng)前的多重嵌套循環(huán)? **
答案:在最外層循環(huán)前加一個(gè)標(biāo)記如A腻豌,然后用break A;可以跳出多重循環(huán)家坎。

21、在書寫代碼記錄操作日志時(shí)吝梅,是先寫日志 還是后寫日志虱疏?哪個(gè)會(huì)好些?
答案:先寫日志苏携。 先寫日志-->處理業(yè)務(wù)-->更新日志狀態(tài)做瞪。

22、什么是ORM框架兜叨?
答案:ORM(Object Relational Mapping)框架采用元數(shù)據(jù)來描述對(duì)象一關(guān)系映射細(xì)節(jié)穿扳,元數(shù)據(jù)一般采用XML格式,并且存放在專門的對(duì)象一映射文件中国旷。通過某種關(guān)系來維持實(shí)體對(duì)象和數(shù)據(jù)庫之間的關(guān)系矛物,然后通過實(shí)體對(duì)象的操作來實(shí)現(xiàn)數(shù)據(jù)庫的操作。也就是對(duì)象關(guān)系映射跪但。

23履羞、你了解哪幾種orm框架?
答案:Hibernate/myBatis 等屡久。myBatis不完全是orm忆首,需要手動(dòng)寫sql

24被环、你用過哪幾個(gè)版本控制工具糙及?
答案:GIT等。

25筛欢、說出幾種java中的修飾符浸锨?
答案:public、protect版姑、default柱搜、private

26、MyEclipsejava文件中快速查找方法名的快捷鍵是剥险?
答案:ctrl+o

27聪蘸、當(dāng)一個(gè)線程進(jìn)入一個(gè)對(duì)象的一個(gè)synchronized方法后,其它線程是否可進(jìn)入此對(duì)象的其它方法?
答案:當(dāng)一個(gè)線程訪問“某對(duì)象”的“synchronized方法”或者“synchronized代碼塊”時(shí),其他線程仍然可以訪問“該對(duì)象”的非同步代碼塊;當(dāng)一個(gè)線程訪問“某對(duì)象”的“synchronized方法”或者“synchronized代碼塊”時(shí)健爬,其他線程對(duì)“該對(duì)象”的其他的“synchronized方法”或者“synchronized代碼塊”的訪問將被阻塞控乾。

28、CollectionCollections的區(qū)別浑劳?
答案:Collection是集合類的上級(jí)接口阱持,繼承與他的接口主要有SetListCollections是針對(duì)集合類的一個(gè)幫助類魔熏,他提供一系列靜態(tài)方法實(shí)現(xiàn)對(duì)各種集合的搜索衷咽、排序、線程安全化等操作蒜绽。

29镶骗、在java中一個(gè)類被聲明為final類型,表示了什么意思躲雅?
答案:表示該類不能被繼承鼎姊,是頂級(jí)類。

30相赁、存在使i + 1 < i的數(shù)嗎相寇?
答案:存在,解析:如果iint型钮科,那么當(dāng)iint能表示的最大整數(shù)時(shí)唤衫,i+1就溢出變成負(fù)數(shù)了,此時(shí)不就<i了嗎绵脯。

31佳励、Java接口的修飾符可以為(D)
A private B protected C final D abstract

32、不通過構(gòu)造函數(shù)也能創(chuàng)建對(duì)象嗎(A)
A 是 B 否

  • (1)用new語句創(chuàng)建對(duì)象蛆挫,這是最常見的創(chuàng)建對(duì)象的方法赃承。
  • (2) 運(yùn)用反射手段,調(diào)用java.lang.Class或者java.lang.reflect.Constructor類的newInstance()實(shí)例方法。
  • (3) 調(diào)用對(duì)象的clone()方法悴侵。
  • (4) 運(yùn)用反序列化手段瞧剖,調(diào)用java.io.ObjectInputStream對(duì)象的 readObject()方法。

33可免、swtich是否能作用在byte上筒繁,是否能作用在long上,是否能作用在String上?
答:早期的JDK中巴元,switch(expr)中,expr可以是byte驮宴、short逮刨、char、int。從1.5版開始修己,Java中引入了枚舉 類型(enum)恢总,expr也可以是枚舉,從JDK 1.7版開始睬愤,還可以是字符串(String)片仿。長整型(long)是不可以的。

34尤辱、是否可以繼承String 類?
答:String類是final類砂豌,不可以被繼承。

35光督、當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后阳距,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果结借,那么這里到底是值傳遞還是引用傳遞?
答:是值傳遞筐摘。Java編程語言只有值傳遞參數(shù)。當(dāng)一個(gè)對(duì)象實(shí)例作為一個(gè)參數(shù)被傳遞到方法中時(shí)船老,參數(shù)的值就是對(duì)該對(duì)象的引用咖熟。對(duì)象的屬性可以在被調(diào)用過程中被改變,但對(duì)象的引用是永遠(yuǎn)不會(huì)改變的柳畔。

36馍管、StringStringBuilder、StringBuffer的區(qū)別?
答:Java 平臺(tái)提供了兩種類型的字符串:StringStringBuffer / StringBuilder荸镊,它們可以儲(chǔ)存和操作字符串咽斧。其中String是只讀字符串,也就意味著String引用的字符串內(nèi)容是不能被改變的躬存。而 StringBufferStringBuilder類表示的字符串對(duì)象可以直接進(jìn)行修改张惹。StringBuilderJDK 1.5中引入的,它和StringBuffer的方法完全相同岭洲,區(qū)別在于它是在單線程環(huán)境下使用的宛逗,因?yàn)樗乃蟹矫娑紱]有被synchronized修飾,因此它的效率也比StringBuffer略高盾剩。

37雷激、char 型變量中能不能存貯一個(gè)中文漢字?為什么?
答:char類型可以存儲(chǔ)一個(gè)中文漢字,因?yàn)?code>Java中使用的編碼是Unicode(不選擇任何特定的編碼告私,直接使用字符在字符集中的編號(hào)屎暇,這是統(tǒng)一的唯一方法),一個(gè)char類型占2個(gè)字節(jié)(16bit)驻粟,所以放一個(gè)中文是沒問題的根悼。
補(bǔ)充:使用Unicode意味著字符在JVM內(nèi)部和外部有不同的表現(xiàn)形式,在JVM內(nèi)部都是Unicode,當(dāng)這個(gè)字符被從JVM內(nèi)部轉(zhuǎn)移到外部時(shí) (例如存入文件系統(tǒng)中)挤巡,需要進(jìn)行編碼轉(zhuǎn)換剩彬。所以Java中有字節(jié)流和字符流,以及在字符流和字節(jié)流之間進(jìn)行轉(zhuǎn)換的轉(zhuǎn)換流矿卑,如 InputStreamReaderOutputStreamReader喉恋,這兩個(gè)類是字節(jié)流和字符流之間的適配器類,承擔(dān)了編碼轉(zhuǎn)換的任務(wù)母廷;

38轻黑、抽象類(abstract class)和接口(interface)有什么異同?
答:抽象類和接口都不能夠?qū)嵗梢远x抽象類和接口類型的引用徘意。一個(gè)類如果繼承了某個(gè)抽象類或者實(shí)現(xiàn)了某個(gè)接口都需要對(duì)其中的抽象方法全部進(jìn)行實(shí)現(xiàn)苔悦,否則該類仍然需要被聲明為抽象類。接口比抽象類更加抽象椎咧,因?yàn)槌橄箢愔锌梢远x構(gòu)造器玖详,可以有抽象方法和具體方法,而接口中不能定義構(gòu)造器而且其 中的方法全部都是抽象方法勤讽。抽象類中的成員可以是private蟋座、默認(rèn)、protected脚牍、public的向臀,而接口中的成員全都是public的。抽象 類中可以定義成員變量诸狭,而接口中定義的成員變量實(shí)際上都是常量券膀。有抽象方法的類必須被聲明為抽象類,而抽象類未必要有抽象方法驯遇。

39芹彬、靜態(tài)變量和實(shí)例變量的區(qū)別?
答:靜態(tài)變量是被static修飾符修飾的變量叉庐,也稱為類變量舒帮,它屬于類,不屬于類的任何一個(gè)對(duì)象陡叠,一個(gè)類不管創(chuàng)建多少個(gè)對(duì)象玩郊,靜態(tài)變量在內(nèi)存中有 且僅有一個(gè)拷貝;實(shí)例變量必須依存于某一實(shí)例枉阵,需要先創(chuàng)建對(duì)象然后通過對(duì)象才能訪問到它译红。靜態(tài)變量可以實(shí)現(xiàn)讓多個(gè)對(duì)象共享內(nèi)存。在Java開發(fā)中兴溜,上下文 類和工具類中通常會(huì)有大量的靜態(tài)成員临庇。

40反璃、是否可以從一個(gè)靜態(tài)(static)方法內(nèi)部發(fā)出對(duì)非靜態(tài)(non-static)方法的調(diào)用?
答:不可以假夺,靜態(tài)方法只能訪問靜態(tài)成員,因?yàn)榉庆o態(tài)方法的調(diào)用要先創(chuàng)建對(duì)象斋攀,因此在調(diào)用靜態(tài)方法時(shí)可能對(duì)象并沒有被初始化已卷。

41、如何實(shí)現(xiàn)對(duì)象克麓景侧蘸?
答:有兩種方式:

  • 1.實(shí)現(xiàn)Cloneable接口并重寫Object類中的clone()方法;
  • 2.實(shí)現(xiàn)Serializable接口鹉梨,通過對(duì)象的序列化和反序列化實(shí)現(xiàn)克隆讳癌,可以實(shí)現(xiàn)真正的深度克隆。

42存皂、GC 是什么晌坤?為什么要有GC
答:GC是垃圾收集的意思旦袋,內(nèi)存處理是編程人員容易出現(xiàn)問題的地方骤菠,忘記或者錯(cuò)誤的內(nèi)存回收會(huì)導(dǎo)致程序或系統(tǒng)的不穩(wěn)定甚至崩潰,Java提供的GC功能可以自動(dòng)監(jiān)測對(duì)象是否超過作用域從而達(dá)到自動(dòng)回收內(nèi)存的目的疤孕,Java語言沒有提供釋放已分配內(nèi)存的顯示操作方法商乎。Java程序員不用擔(dān)心內(nèi)存管理, 因?yàn)槔占鲿?huì)自動(dòng)進(jìn)行管理祭阀。要請求垃圾收集鹉戚,可以調(diào)用下面的方法之一:System.gc()Runtime.getRuntime().gc(),但JVM可以屏蔽掉顯示的垃圾回收調(diào)用专控。

43抹凳、String s=new String(“xyz”);創(chuàng)建了幾個(gè)字符串對(duì)象?
答:兩個(gè)對(duì)象踩官,一個(gè)是靜態(tài)存儲(chǔ)區(qū)的"xyz"却桶,一個(gè)是用new創(chuàng)建在堆上的對(duì)象。

44蔗牡、接口是否可繼承(extends)接口? 抽象類是否可實(shí)現(xiàn)(implements)接口? 抽象類是否可繼承具體類(concrete class)?
答:接口可以繼承接口档泽。抽象類可以實(shí)現(xiàn)(implements)接口烦粒,抽象類可繼承具體類,但前提是具體類必須有明確的構(gòu)造函數(shù)

45树灶、什么時(shí)候用assert
答:assertion(斷言)在軟件開發(fā)中是一種常用的調(diào)試方式旨巷,很多開發(fā)語言中都支持這種機(jī)制。一般來說强缘,assertion用于保證程序最基本、關(guān)鍵的正確性不傅。assertion檢查通常在開發(fā)和測試時(shí)開啟旅掂。為了提高性能,在軟件發(fā)布后访娶,assertion檢查通常是關(guān)閉的商虐。在實(shí)現(xiàn)中,斷言是一個(gè)包含布爾表達(dá)式的語句崖疤,在執(zhí)行這個(gè)語句時(shí)假定該表達(dá)式為true秘车;如果表達(dá)式計(jì)算為false,那么系統(tǒng)會(huì)報(bào)告一個(gè)AssertionError劫哼。

46叮趴、ErrorException有什么區(qū)別?
答:Error 表示系統(tǒng)級(jí)的錯(cuò)誤和程序不必處理的異常,是恢復(fù)不是不可能但很困難的情況下的一種嚴(yán)重問題权烧;比如內(nèi)存溢出眯亦,不可能指望程序能處理這樣的情 況;Exception表示需要捕捉或者需要程序進(jìn)行處理的異常豪嚎,是一種設(shè)計(jì)或?qū)崿F(xiàn)問題搔驼;也就是說,它表示如果程序運(yùn)行正常侈询,從不會(huì)發(fā)生的情況舌涨。

47、sleep()wait()有什么區(qū)別?
答:sleep()方法是線程類(Thread)的靜態(tài)方法扔字,導(dǎo)致此線程暫停執(zhí)行指定時(shí)間囊嘉,將執(zhí)行機(jī)會(huì)給其他線程,但是監(jiān)控狀態(tài)依然保持革为,到時(shí)后會(huì) 自動(dòng)恢復(fù)(線程回到就緒(ready)狀態(tài))扭粱,因?yàn)檎{(diào)用sleep不會(huì)釋放對(duì)象鎖wait()Object類的方法震檩,對(duì)此對(duì)象調(diào)用wait()方法導(dǎo)致本線程放棄對(duì)象鎖(線程暫停執(zhí)行)琢蛤,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify 方法(或notifyAll)后本線程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入就緒狀態(tài)抛虏。

48博其、sleep()yield()有什么區(qū)別?
答:sleep()方法給其他線程運(yùn)行機(jī)會(huì)時(shí)不考慮線程的優(yōu)先級(jí),因此會(huì)給低優(yōu)先級(jí)的線程以運(yùn)行的機(jī)會(huì)迂猴;yield()方法只會(huì)給相同優(yōu)先級(jí)或更高優(yōu)先級(jí)的線程以運(yùn)行的機(jī)會(huì)慕淡;線程執(zhí)行sleep()方法后轉(zhuǎn)入阻塞(blocked)狀態(tài),而執(zhí)行yield()方法后轉(zhuǎn)入就緒(ready)狀態(tài)沸毁;sleep()方法聲明拋出InterruptedException峰髓,而yield()方法沒有聲明任何異常傻寂;sleep()方法比yield()方法(跟操作系統(tǒng)相關(guān))具有更好的可移植性。

49携兵、請說出與線程同步相關(guān)的方法疾掰。
答:

  • 1.wait():使一個(gè)線程處于等待(阻塞)狀態(tài),并且釋放所持有的對(duì)象的鎖徐紧;
  • 2.sleep():使一個(gè)正在運(yùn)行的線程處于睡眠狀態(tài)个绍,是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException異常浪汪,不會(huì)釋放鎖;
  • 3.notify():喚醒一個(gè)處于等待狀態(tài)的線程凛虽,當(dāng)然在調(diào)用此方法的時(shí)候死遭,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由JVM確定喚醒哪個(gè)線程凯旋,而且與優(yōu)先級(jí)無關(guān)呀潭;
  • 4.notityAll():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖至非,而是讓它們競爭钠署;
  • 5.JDK 1.5通過Lock接口提供了顯式(explicit)的鎖機(jī)制,增強(qiáng)了靈活性以及對(duì)線程的協(xié)調(diào)荒椭。Lock接口中定義了加鎖(lock())和解鎖 (unlock())的方法谐鼎,同時(shí)還提供了newCondition()方法來產(chǎn)生用于線程之間通信的Condition對(duì)象;
  • 6.JDK 1.5還提供了信號(hào)量(semaphore)機(jī)制趣惠,信號(hào)量可以用來限制對(duì)某個(gè)共享資源進(jìn)行訪問的線程的數(shù)量狸棍。在對(duì)資源進(jìn)行訪問之前,線程必須得到信號(hào)量的 許可(調(diào)用Semaphore對(duì)象的acquire()方法)味悄;在完成對(duì)資源的訪問后草戈,線程必須向信號(hào)量歸還許可(調(diào)用Semaphore對(duì)象的release()方法)。

50侍瑟、什么是線程池(thread pool)唐片?
答:

  • 在面向?qū)ο缶幊讨校瑒?chuàng)建和銷毀對(duì)象是很費(fèi)時(shí)間的涨颜,因?yàn)閯?chuàng)建一個(gè)對(duì)象要獲取內(nèi)存資源或者其它更多資源费韭。在Java中更是如此,虛擬機(jī)將試圖跟蹤每 一個(gè)對(duì)象咐低,以便能夠在對(duì)象銷毀后進(jìn)行垃圾回收揽思。所以提高服務(wù)程序效率的一個(gè)手段就是盡可能減少創(chuàng)建和銷毀對(duì)象的次數(shù),特別是一些很耗資源的對(duì)象創(chuàng)建和銷 毀见擦,這就是"池化資源"技術(shù)產(chǎn)生的原因钉汗。線程池顧名思義就是事先創(chuàng)建若干個(gè)可執(zhí)行的線程放入一個(gè)池(容器)中羹令,需要的時(shí)候從池中獲取線程不用自行創(chuàng)建,使用完畢不需要銷毀線程而是放回池中损痰,從而減少創(chuàng)建和銷毀線程對(duì)象的開銷福侈。
  • Java 5+中的Executor接口定義一個(gè)執(zhí)行線程的工具。它的子類型即線程池接口是ExecutorService卢未。要配置一個(gè)線程池是比較復(fù)雜的肪凛,尤其是對(duì)于線程池的原理不是很清楚的情況下,因此在工具類Executors面提供了一些靜態(tài)工廠方法辽社,生成一些常用的線程池伟墙,如下所示:
    newSingleThreadExecutor:創(chuàng)建一個(gè)單線程的線程池。這個(gè)線程池只有一個(gè)線程在工作滴铅,也就是相當(dāng)于單線程串行執(zhí)行所有任務(wù)戳葵。如果這個(gè)唯一的線程因?yàn)楫惓=Y(jié)束,那么會(huì)有一個(gè)新的線程來替代它汉匙。此線程池保證所有任務(wù)的執(zhí)行順序按照任務(wù)的提交順序執(zhí)行拱烁。
    newFixedThreadPool:創(chuàng)建固定大小的線程池。每次提交一個(gè)任務(wù)就創(chuàng)建一個(gè)線程噩翠,直到線程達(dá)到線程池的最大大小戏自。線程池的大小一旦達(dá)到最大值就會(huì)保持不變,如果某個(gè)線程因?yàn)閳?zhí)行異常而結(jié)束伤锚,那么線程池會(huì)補(bǔ)充一個(gè)新線程擅笔。
    newCachedThreadPool: 創(chuàng)建一個(gè)可緩存的線程池。如果線程池的大小超過了處理任務(wù)所需要的線程见芹,那么就會(huì)回收部分空閑(60秒不執(zhí)行任務(wù))的線程剂娄,當(dāng)任務(wù)數(shù)增加時(shí),此線程池又可 以智能的添加新線程來處理任務(wù)玄呛。此線程池不會(huì)對(duì)線程池大小做限制阅懦,線程池大小完全依賴于操作系統(tǒng)(或者說JVM)能夠創(chuàng)建的最大線程大小。
    newScheduledThreadPool:創(chuàng)建一個(gè)大小無限的線程池徘铝。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求耳胎。
    newSingleThreadExecutor:創(chuàng)建一個(gè)單線程的線程池。此線程池支持定時(shí)以及周期性執(zhí)行任務(wù)的需求惕它。
    如果希望在服務(wù)器上使用線程池怕午,強(qiáng)烈建議使用newFixedThreadPool方法來創(chuàng)建線程池,這樣能獲得更好的性能淹魄。

82郁惜、簡述synchronizedjava.util.concurrent.locks.Lock的異同?
答:LockJava 5以后引入的新的API甲锡,和關(guān)鍵字synchronized相比主要相同點(diǎn):Lock 能完成synchronized所實(shí)現(xiàn)的所有功能兆蕉;主要不同點(diǎn):Lock有比synchronized更精確的線程語義和更好的性能羽戒。synchronized會(huì)自動(dòng)釋放鎖,而Lock一定要求程序員手工釋放虎韵,并且必須在finally 塊中釋放(這是釋放外部資源的最好的地方)易稠。

83、Java中如何實(shí)現(xiàn)序列化包蓝,有什么意義驶社?
答:序列化就是一種用來處理對(duì)象流的機(jī)制,所謂對(duì)象流也就是將對(duì)象的內(nèi)容進(jìn)行流化测萎⊥龅纾可以對(duì)流化后的對(duì)象進(jìn)行讀寫操作,也可將流化后的對(duì)象傳輸于網(wǎng)絡(luò)之間硅瞧。序列化是為了解決對(duì)象流讀寫操作時(shí)可能引發(fā)的問題(如果不進(jìn)行序列化可能會(huì)存在數(shù)據(jù)亂序的問題)逊抡。要實(shí)現(xiàn)序列化,需要讓一個(gè)類實(shí)現(xiàn)Serializable接口零酪,該接口是一個(gè)標(biāo)識(shí)性接口,標(biāo)注該類對(duì)象是可被序列化的拇勃,然后使用一個(gè)輸出流來四苇。構(gòu)造一個(gè)對(duì)象輸出流并通過writeObject(Object obj)方法就可以將實(shí)現(xiàn)對(duì)象寫出(即保存其狀態(tài));如果需要反序列化則可以用一個(gè)輸入流建立對(duì)象輸入流方咆,然后通過readObject方法從流中讀取對(duì) 象月腋。序列化除了能夠?qū)崿F(xiàn)對(duì)象的持久化之外,還能夠用于對(duì)象的深度克隆瓣赂。

84榆骚、heapstack有什么區(qū)別。
答:java的內(nèi)存分為兩類煌集,一類是棧內(nèi)存妓肢,一類是堆內(nèi)存。棧內(nèi)存是指程序進(jìn)入一個(gè)方法時(shí)苫纤,會(huì)為這個(gè)方法單獨(dú)分配一塊私屬存儲(chǔ)空間碉钠,用于存儲(chǔ)這個(gè)方法內(nèi)部的局部變量,當(dāng)這個(gè)方法結(jié)束時(shí)卷拘,分配給這個(gè)方法的棧會(huì)釋放喊废,這個(gè)棧中的變量也將隨之釋放。堆是與棧作用不同的內(nèi)存栗弟,一般用于存放不放在當(dāng)前方法棧中的那些數(shù)據(jù)污筷,例如,使用new創(chuàng)建的對(duì)象都放在堆里乍赫,所以瓣蛀,它不會(huì)隨方法的結(jié)束而消失陆蟆。方法中的局部變量使用final修飾后,放在堆中揪惦,而不是棧中遍搞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市器腋,隨后出現(xiàn)的幾起案子溪猿,更是在濱河造成了極大的恐慌,老刑警劉巖纫塌,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诊县,死亡現(xiàn)場離奇詭異,居然都是意外死亡措左,警方通過查閱死者的電腦和手機(jī)依痊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來怎披,“玉大人胸嘁,你說我怎么就攤上這事×构洌” “怎么了性宏?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長状飞。 經(jīng)常有香客問我毫胜,道長,這世上最難降的妖魔是什么诬辈? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任酵使,我火速辦了婚禮,結(jié)果婚禮上焙糟,老公的妹妹穿的比我還像新娘口渔。我一直安慰自己,他們只是感情好穿撮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布搓劫。 她就那樣靜靜地躺著,像睡著了一般混巧。 火紅的嫁衣襯著肌膚如雪枪向。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天咧党,我揣著相機(jī)與錄音秘蛔,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛深员,可吹牛的內(nèi)容都是我干的负蠕。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼倦畅,長吁一口氣:“原來是場噩夢啊……” “哼遮糖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起叠赐,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤欲账,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芭概,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赛不,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年罢洲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了踢故。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡惹苗,死狀恐怖殿较,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情桩蓉,我是刑警寧澤斜脂,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站触机,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏玷或。R本人自食惡果不足惜儡首,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望偏友。 院中可真熱鬧蔬胯,春花似錦、人聲如沸位他。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽鹅髓。三九已至舞竿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窿冯,已是汗流浹背骗奖。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人执桌。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓鄙皇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仰挣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伴逸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法膘壶,內(nèi)部類的語法错蝴,繼承相關(guān)的語法,異常的語法香椎,線程的語...
    子非魚_t_閱讀 31,631評(píng)論 18 399
  • (一)Java部分 1漱竖、列舉出JAVA中6個(gè)比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,104評(píng)論 0 62
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,529評(píng)論 3 93
  • 小編費(fèi)力收集:給你想要的面試集合 1.C++或Java中的異常處理機(jī)制的簡單原理和應(yīng)用。 當(dāng)JAVA程序違反了JA...
    八爺君閱讀 4,592評(píng)論 1 114
  • 善良的你,過的還好嗎…… 小時(shí)候良狈,故事書里的主人公們個(gè)個(gè)都善良笨枯,純真薪丁,美好,每每讀到她們最終得以幸赶诰快樂地...
    阿宇寶閱讀 285評(píng)論 1 0