2023年中軟國(guó)際Java程序員筆試題及答案_第1頁(yè)
2023年中軟國(guó)際Java程序員筆試題及答案_第2頁(yè)
2023年中軟國(guó)際Java程序員筆試題及答案_第3頁(yè)
2023年中軟國(guó)際Java程序員筆試題及答案_第4頁(yè)
2023年中軟國(guó)際Java程序員筆試題及答案_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

中軟國(guó)際Java程序員筆試題及答案原文地址:1、談?wù)刦inal,finally,finalize的區(qū)別。final:修飾符(關(guān)鍵字)假如一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖儭1宦暶鳛閒inal的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。finally:在異常解決時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。假如拋出一個(gè)異常,那么相匹配的catch子句就會(huì)執(zhí)行,然后控制就會(huì)進(jìn)入finally塊(假如有的話(huà))。finalize:方法名。Java技術(shù)允許使用finalize()方法在垃圾收集器將對(duì)象從內(nèi)存中清除出去之前做必要的清理工作。這個(gè)方法是由垃圾收集器在擬定這個(gè)對(duì)象沒(méi)有被引用時(shí)對(duì)這個(gè)對(duì)象調(diào)用的。它是在Object類(lèi)中定義的,因此所有的類(lèi)都繼承了它。子類(lèi)覆蓋finalize()方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對(duì)象之前對(duì)這個(gè)對(duì)象調(diào)用的。2、AnonymousInnerClass(匿名內(nèi)部類(lèi))是否可以extends(繼承)其它類(lèi),是否可以implements(實(shí)現(xiàn))interface(接口)?匿名的內(nèi)部類(lèi)是沒(méi)有名字的內(nèi)部類(lèi)。不能繼承其它類(lèi),但一個(gè)內(nèi)部類(lèi)可以作為一個(gè)接口,由另一個(gè)內(nèi)部類(lèi)實(shí)現(xiàn)。3、StaticNestedClass和InnerClass的不同,說(shuō)得越多越好(面試題有的很籠統(tǒng))。Staticnestedclass(嵌套類(lèi))是將內(nèi)部類(lèi)聲明為stat(yī)ic。普通內(nèi)部類(lèi)對(duì)象隱式地保存了一個(gè)引用,指向創(chuàng)建它的外圍類(lèi)對(duì)象,不能有static數(shù)據(jù)和static字段。嵌套類(lèi)意味著:1>要?jiǎng)?chuàng)建嵌套類(lèi)的對(duì)象,并不需要其外圍類(lèi)的對(duì)象;2>不能從嵌套類(lèi)的對(duì)象中訪問(wèn)非靜態(tài)的外圍類(lèi)的對(duì)象。4、&和&&的區(qū)別。&是兩個(gè)數(shù)相與,是位運(yùn)算符&&是布爾邏輯運(yùn)算符,連接兩個(gè)條件表達(dá)式的,兩個(gè)條件表達(dá)式都為真時(shí),整個(gè)才為真5、HashMap和Hashtable的區(qū)別。都屬于Map接口的類(lèi),實(shí)現(xiàn)了將惟一鍵映射到特定的值上。HashMap類(lèi)沒(méi)有分類(lèi)或者排序。它允許一個(gè)null鍵和多個(gè)null值。Hashtable類(lèi)似于HashMap,但是不允許null鍵和null值。它也比HashMap慢,由于它是同步的,是線(xiàn)程安全的。6、Collection和Collections的區(qū)別。Collections是個(gè)java.util下的類(lèi),它包具有各種有關(guān)集合操作的靜態(tài)方法。Collection是個(gè)java.util下的接口,它是各種集合結(jié)構(gòu)的父接口。7、List,Set,Map是否繼承自Collection接口?List,Set是Map不是8、ArrayList和Vector的區(qū)別。1>同步性:Vector是線(xiàn)程安全的,也就是說(shuō)是同步的,而ArrayList是線(xiàn)程序不安全的,不是同步的2>數(shù)據(jù)增長(zhǎng):當(dāng)需要增長(zhǎng)時(shí),Vector默認(rèn)增長(zhǎng)為本來(lái)一培,而ArrayList卻是本來(lái)的一半9、什么時(shí)候用assert。assertion(斷言)在軟件開(kāi)發(fā)中是一種常用的調(diào)試方式,很多開(kāi)發(fā)語(yǔ)言中都支持這種機(jī)制。在實(shí)現(xiàn)中,assertion就是在程序中的一條語(yǔ)句,它對(duì)一個(gè)boolean表達(dá)式進(jìn)行檢查,一個(gè)對(duì)的程序必須保證這個(gè)boolean表達(dá)式的值為true;假如該值為false,說(shuō)明程序已經(jīng)處在不對(duì)的的狀態(tài)下,系統(tǒng)將給出警告或退出。一般來(lái)說(shuō),assertion用于保證程序最基本、關(guān)鍵的對(duì)的性。assertion檢查通常在開(kāi)發(fā)和測(cè)試時(shí)啟動(dòng)。為了提高性能,在軟件發(fā)布后,assertion檢查通常是關(guān)閉的。10、GC是什么?為什么要有GC?GC是垃圾收集器。Java程序員不用緊張內(nèi)存管理,由于垃圾收集器會(huì)自動(dòng)進(jìn)行管理。要請(qǐng)求垃圾收集,可以調(diào)用下面的方法之一:System.gc()

Runtime.getRuntime().gc()

11、Strings=newString("xyz");創(chuàng)建了幾個(gè)StringObject?兩個(gè)對(duì)象,一個(gè)是“xyx”,一個(gè)是指向“xyx”的引用對(duì)象s12、.Math.round(11.5)等於多少?Math.round(-11.5)等於多少?Mat(yī)h.round(11.5)返回(long)12,Math.round(-11.5)返回(long)-11;由于返回最接近參數(shù)的long。通過(guò)加上1/2將該結(jié)果舍入為整數(shù),取結(jié)果的基數(shù)并將其強(qiáng)制轉(zhuǎn)換為long類(lèi)型。換句話(huà)說(shuō),結(jié)果等于以下表達(dá)式的值:(long)Math.floor(a+0.5d)13、shorts1=1;s1=s1+1;有什么錯(cuò)?shorts1=1;s1+=1;有什么錯(cuò)?shorts1=1;s1=s1+1;錯(cuò),shorts1=1;s1+=1;對(duì)。對(duì)于shorts1=1;s1=s1+1;由于s1+1運(yùn)算時(shí)會(huì)自動(dòng)提高表達(dá)式的類(lèi)型,所以結(jié)果是int型,再賦值給short類(lèi)型s1時(shí),編譯器將報(bào)告需要強(qiáng)制轉(zhuǎn)換類(lèi)型的錯(cuò)誤。對(duì)于shorts1=1;s1+=1;由于+=是java語(yǔ)言規(guī)定的運(yùn)算符,java編譯器會(huì)對(duì)它進(jìn)行特殊解決,因此可以對(duì)的編譯。14、sleep()和wait()有什么區(qū)別?slee(cuò)p是線(xiàn)程類(lèi)(Thread)的方法,導(dǎo)致此線(xiàn)程暫停執(zhí)行指定期間,給執(zhí)行機(jī)會(huì)給其他線(xiàn)程,但是監(jiān)控狀態(tài)仍然保持,屆時(shí)后會(huì)自動(dòng)恢復(fù)。調(diào)用sleep不會(huì)釋放對(duì)象鎖。wait是Object類(lèi)的方法,對(duì)此對(duì)象調(diào)用wait方法導(dǎo)致本線(xiàn)程放棄對(duì)象鎖,進(jìn)入等待此對(duì)象的等待鎖定池,只有針對(duì)此對(duì)象發(fā)出notify方法(或notifyAll)后本線(xiàn)程才進(jìn)入對(duì)象鎖定池準(zhǔn)備獲得對(duì)象鎖進(jìn)入運(yùn)營(yíng)狀態(tài)。15、數(shù)組有沒(méi)有length()這個(gè)方法?String有沒(méi)有l(wèi)ength()這個(gè)方法?數(shù)組沒(méi)有l(wèi)ength()這個(gè)方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個(gè)方法。16、是否可以繼承String類(lèi)?String類(lèi)是final類(lèi)故不可以繼承。17、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類(lèi)型?overload一般翻譯為重載,表達(dá)多個(gè)函數(shù)共用同一個(gè)函數(shù)名,為了保證調(diào)用這些同名函數(shù)時(shí)能對(duì)的區(qū)分究竟應(yīng)當(dāng)調(diào)用的是其中的哪一個(gè),重載的各個(gè)函數(shù)的參數(shù)表(不考慮形參名)必須彼此不同,通常簡(jiǎn)略地說(shuō)成“不同參數(shù)表”。它對(duì)返回值的類(lèi)型沒(méi)有任何規(guī)定,所以你可以隨意為每一個(gè)重載的函數(shù)設(shè)立返回類(lèi)型,相同也行,不同也行。override一般翻譯為覆蓋,表達(dá)子類(lèi)對(duì)從父類(lèi)繼承來(lái)的虛函數(shù)重新定義,它規(guī)定參數(shù)表必須跟父類(lèi)中被覆蓋的那個(gè)函數(shù)的參數(shù)表完全相同,返回值類(lèi)型原則上也規(guī)定相同,但假如返回類(lèi)型是父類(lèi)的指針或者父類(lèi)的引用,覆蓋時(shí)返回類(lèi)型允許是子類(lèi)的指針或者子類(lèi)的引用。18、Set里的元素是不能反復(fù)的,那么用什么方法來(lái)區(qū)分反復(fù)與否呢?是用==還是equals()?它們有何區(qū)別?Set是Collection容器的一個(gè)子接口,它不允許出現(xiàn)反復(fù)元素,當(dāng)然也只允許有一個(gè)null對(duì)象。equals()區(qū)分更合適。為什么用equals()而不用==來(lái)區(qū)分?應(yīng)當(dāng)從它倆的區(qū)別談起,==是用來(lái)判斷兩者是否是同一對(duì)象(同一事物),而equals是用來(lái)判斷是否引用同一個(gè)對(duì)象。再看一下Set里面存的是對(duì)象,還是對(duì)象的引用。根據(jù)java的存儲(chǔ)機(jī)制可知,set里面存放的是對(duì)象的引用,所以當(dāng)兩個(gè)元素只要滿(mǎn)足了equals()時(shí)就已經(jīng)指向同一個(gè)對(duì)象,也就出現(xiàn)了反復(fù)元素。所以應(yīng)當(dāng)用equals()來(lái)判斷。19、給我一個(gè)你最常見(jiàn)到的runtimeexception。ArithmeticException,

ArrayStoreException,

BufferOverflowException,

BufferUnderflowException,

CannotRedoException,

CannotUndoException,

ClassCastException,

CMMException,

ConcurrentModificationException,

DOMException,

EmptyStackException,

IllegalArgumentException,

IllegalMonitorStateException,

IllegalPathStateException,

IllegalStateException,

ImagingOpException,

IndexOutOfBoundsException,

MissingResourceException,

NegativeArraySizeException,

NoSuchElementException,

NullPointerException,

ProfileDataException,

ProviderException,

RasterFORMatException,

SecurityException,

SystemException,

UndeclaredThrowableException,

UnmodifiableSetException,

UnsupportedOperationException

20、error和exception有什么區(qū)別?Error(錯(cuò)誤)表達(dá)系統(tǒng)級(jí)的錯(cuò)誤和程序不必解決的異常,是java運(yùn)營(yíng)環(huán)境中的內(nèi)部錯(cuò)誤或者硬件問(wèn)題,比如,內(nèi)存資源局限性等,對(duì)于這種錯(cuò)誤,程序基本無(wú)能為力,除了退出運(yùn)營(yíng)外別無(wú)選擇。Exception(違例)表達(dá)需要捕獲或者需要程序進(jìn)行解決的異常,它解決的是由于程序設(shè)計(jì)的瑕疵而引起的問(wèn)題或者在外的輸入等引起的一般性問(wèn)題,是程序必須解決的。21、abstractclass和interface有什么區(qū)別?1>.相同點(diǎn)A.兩者都是抽象類(lèi),都不能實(shí)例化。B.interface實(shí)現(xiàn)類(lèi)及abstrctclass的子類(lèi)都必須要實(shí)現(xiàn)已經(jīng)聲明的抽象方法。2.>不同點(diǎn)A.interface需要實(shí)現(xiàn),要用implements,而abstractclass需要繼承,要用extends。B.一個(gè)類(lèi)可以實(shí)現(xiàn)多個(gè)interface,但一個(gè)類(lèi)只能繼承一個(gè)abstractclass。C.interface強(qiáng)調(diào)特定功能的實(shí)現(xiàn),而abstractclass強(qiáng)調(diào)所屬關(guān)系。D.盡管interface實(shí)現(xiàn)類(lèi)及abstrctclass的子類(lèi)都必須要實(shí)現(xiàn)相應(yīng)的抽象方法,但實(shí)現(xiàn)的形式不同。interface中的每一個(gè)方法都是抽象方法,都只是聲明的(declarat(yī)ion,沒(méi)有方法體),實(shí)現(xiàn)類(lèi)必須要實(shí)現(xiàn)。而abstractclass的子類(lèi)可以有選擇地實(shí)現(xiàn)。這個(gè)選擇有兩點(diǎn)含義:一是Abastractclass中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類(lèi)必須實(shí)現(xiàn)。那些沒(méi)有abstract的方法,在Abstrctclass中必須定義方法體。二是abstractclass的子類(lèi)在繼承它時(shí),對(duì)非抽象方法既可以直接繼承,也可以覆蓋;而對(duì)抽象方法,可以選擇實(shí)現(xiàn),也可以通過(guò)再次聲明其方法為抽象的方式,無(wú)需實(shí)現(xiàn),留給其子類(lèi)來(lái)實(shí)現(xiàn),但此類(lèi)必須也聲明為抽象類(lèi)。既是抽象類(lèi),當(dāng)然也不能實(shí)例化。E.abstractclass是interface與Class的中介。interface是完全抽象的,只能聲明方法,并且只能聲明pulic的方法,不能聲明private及protected的方法,不能定義方法體,也不能聲明實(shí)例變量。然而,interface卻可以聲明常量變量,并且在JDK中不難找出這種例子。但將常量變量放在interface中違反了其作為接口的作用而存在的宗旨,也混淆了interface與類(lèi)的不同價(jià)值。假如的確需要,可以將其放在相應(yīng)的abstractclass或Class中。abstractclass在interface及Class中起到了承上啟下的作用。一方面,abstractclass是抽象的,可以聲明抽象方法,以規(guī)范子類(lèi)必須實(shí)現(xiàn)的功能;另一方面,它又可以定義缺省的方法體,供子類(lèi)直接使用或覆蓋。此外,它還可以定義自己的實(shí)例變量,以供子類(lèi)通過(guò)繼承來(lái)使用。3>.interface的應(yīng)用場(chǎng)合A.類(lèi)與類(lèi)之前需要特定的接口進(jìn)行協(xié)調(diào),而不在乎其如何實(shí)現(xiàn)。B.作為可以實(shí)現(xiàn)特定功能的標(biāo)記存在,也可以是什么接口方法都沒(méi)有的純粹標(biāo)記。C.需要將一組類(lèi)視為單一的類(lèi),而調(diào)用者只通過(guò)接口來(lái)與這組類(lèi)發(fā)生聯(lián)系。D.需要實(shí)現(xiàn)特定的多項(xiàng)功能,而這些功能之間也許完全沒(méi)有任何聯(lián)系。4>、abstractclass的應(yīng)用場(chǎng)合一句話(huà),在既需要統(tǒng)一的接口,又需要實(shí)例變量或缺省的方法的情況下,就可以使用它。最常見(jiàn)的有:A.定義了一組接口,但又不想逼迫每個(gè)實(shí)現(xiàn)類(lèi)都必須實(shí)現(xiàn)所有的接口??梢杂茫醔stractclass定義一組方法體,甚至可以是空方法體,然后由子類(lèi)選擇自己所感愛(ài)好的方法來(lái)覆蓋。B.某些場(chǎng)合下,只靠純粹的接口不能滿(mǎn)足類(lèi)與類(lèi)之間的協(xié)調(diào),還必需類(lèi)中表達(dá)狀態(tài)的變量來(lái)區(qū)別不同的關(guān)系。abstract的中介作用可以很好地滿(mǎn)足這一點(diǎn)。C.規(guī)范了一組互相協(xié)調(diào)的方法,其中一些方法是共同的,與狀態(tài)無(wú)關(guān)的,可以共享的,無(wú)需子類(lèi)分別實(shí)現(xiàn);而另一些方法卻需要各個(gè)子類(lèi)根據(jù)自己特定的狀態(tài)來(lái)實(shí)現(xiàn)特定的功能22、接口是否可繼承接口?抽象類(lèi)是否可實(shí)現(xiàn)(implements)接口?抽象類(lèi)是否可繼承實(shí)體類(lèi)(concreteclass)?接口可以繼承接口。抽象類(lèi)可以實(shí)現(xiàn)(implements)接口。抽象類(lèi)是否可繼承實(shí)體類(lèi),但前提是實(shí)體類(lèi)必須有明確的構(gòu)造函數(shù)。23、構(gòu)造器Constructor是否可被override?構(gòu)造器Constructor不能被繼承,因此不能重寫(xiě)Overrid

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論