程序員 面試_第1頁(yè)
已閱讀1頁(yè),還剩78頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基礎(chǔ)知識(shí):1.C++或 Java 中的異常處理機(jī)制的簡(jiǎn)單原理和應(yīng)用。當(dāng) JAVA 程序違反了 JAVA 的語(yǔ)義規(guī)則時(shí),JAVA 虛擬機(jī)就會(huì)將發(fā)生的錯(cuò)誤表示為一個(gè)異常。違反語(yǔ)義規(guī)則包括 2 種情況。 一種是 JAVA 類庫(kù)內(nèi) 置的語(yǔ)義檢查。 例如數(shù)組下標(biāo)越界,會(huì)引發(fā)IndexOutOfBoundsException;訪問(wèn) null 的對(duì)象時(shí)會(huì)引發(fā) NullPointerException。另一種情況就是 JAVA 允許程序員擴(kuò)展這種語(yǔ)義檢

2、查,程序員可以創(chuàng)建自己的異常,并自由選擇在何時(shí)用 throw 關(guān)鍵字引發(fā)異常。所有的異常都是 java.lang.Thowable 的子類。2. Java 的接口和 C++的虛類的相同和不同處。由于 Java 不支持多繼承,而有可能某個(gè)類或?qū)ο笠褂梅謩e在幾個(gè)類或?qū)ο罄锩娴姆椒ɑ驅(qū)傩?,現(xiàn)有的單繼承機(jī)制就不能滿足要求。與繼承相比,接 口有更高的靈活性,因?yàn)榻涌谥袥](méi)有任何實(shí)現(xiàn)代碼。 當(dāng)一個(gè)類實(shí)現(xiàn)了接口以后,該類要實(shí)現(xiàn)接口里面所有的方法和屬性

3、,并且接口里面的屬性在默認(rèn)狀態(tài)下面都是 public static,所有方法默認(rèn)情況下是 public.一個(gè)類可以實(shí)現(xiàn)多個(gè)接口。3. 垃圾回收的優(yōu)點(diǎn)和原理。并考慮 2 種回收機(jī)制。Java 語(yǔ)言中一個(gè)顯著的特點(diǎn)就是引入了垃圾回收機(jī)制,使 c++程序員最頭疼的內(nèi)存管理的問(wèn)題迎刃而解,它使得 Java 程序員在編寫程序的時(shí)候 不再需要考慮內(nèi)存管理。由于有個(gè)垃圾回收機(jī)制,Java 中的對(duì)象不再有“作用域”的概念,只有對(duì)象的引用才有“作用域”。

4、 垃圾回收可以有效的防止內(nèi)存泄 露,有效的使用可以使用的內(nèi)存。垃圾回收器通常是作為一個(gè)單獨(dú)的低級(jí)別的線程運(yùn)行,不可預(yù)知的情況下對(duì)內(nèi)存堆中已經(jīng)死亡的或者長(zhǎng)時(shí)間沒(méi)有使用的對(duì)象進(jìn)行清 楚和回收,程序員不能實(shí)時(shí)的調(diào)用垃圾回收器對(duì)某個(gè)對(duì)象或所有對(duì)象進(jìn)行垃圾回收?;厥諜C(jī)制有分代復(fù)制垃圾回收和標(biāo)記垃圾回收,增量垃圾回收。4. 請(qǐng)說(shuō)出你所知道的線程同步的方法。wait():使一個(gè)線程處于等待狀態(tài),并且釋放所持有的對(duì)象的 lock。sleep():使一個(gè)

5、正在運(yùn)行的線程處于睡眠狀態(tài),是一個(gè)靜態(tài)方法,調(diào)用此方法要捕捉InterruptedException 異常。notify():喚醒一個(gè)處于等待狀態(tài)的線程,注意的是在調(diào)用此方法的時(shí)候,并不能確切的喚醒某一個(gè)等待狀態(tài)的線程,而是由 JVM 確定喚醒哪個(gè)線程,而且不是按優(yōu)先級(jí)。Allnotity():喚醒所有處入等待狀態(tài)的線程,注意并不是給所有喚醒線程一個(gè)對(duì)象的鎖,而是讓它們競(jìng)爭(zhēng)。5. 請(qǐng)講一講析構(gòu)函數(shù)和虛函數(shù)的用法和作用。6. Error

6、與 Exception 有什么區(qū)別?不能作為父類被繼承。 因此一個(gè)類不能既被聲明 為 abstract 的,又被聲明為 final 的。 將變量或方法聲明為 final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛?final 的變量必須在聲明時(shí)給定 初值,而在以后的引用中只能讀取,不可修改。 被聲明為 final 的方法也同樣只能使用,不能重載。finally—再異常處理時(shí)提供 finally 塊來(lái)執(zhí)行任何清除操作。 如果拋出一個(gè)異常,那么

7、相匹配的 catch 子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入 finally 塊(如果有的話)。finalize—方法名。Java 技術(shù)允許使用 finalize() 方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。 這個(gè)方法是由垃圾收集器在確定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。 finalize()

8、 方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。13,Anonymous Inner Class ( 匿名內(nèi)部類) 是否可以 extends(繼承)其它類,是否可以implements(實(shí)現(xiàn))interface(接口)?匿名的內(nèi)部類是沒(méi)有名字的內(nèi)部類。不能 extends(繼承) 其它類,但一個(gè)內(nèi)部類可以作為一個(gè)接口,由另一個(gè)內(nèi)部類實(shí)現(xiàn)。14,Static Nested Class 和 Inner Class 的不同,說(shuō)得越多越好(面

9、試題有的很籠統(tǒng))。Nested Class (一般是 C++的說(shuō)法),Inner Class (一般是 JAVA 的說(shuō)法)。Java 內(nèi)部類與C++ 嵌 套 類 最 大 的 不 同 就 在 于 是 否 有 指 向 外 部 的 引 用 上 。 具 體 可 見 http://www.frontfree.net/articles/services/view.asp?id=704&page=1注: 靜態(tài)內(nèi)部類(Inner Class)意

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論