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

下載本文檔

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

文檔簡介

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

Runtime.getRuntime().gc()

11、Strings=newString("xyz");創(chuàng)建了幾個StringObject?兩個對象,一個是“xyx”,一個是指向“xyx”的引用對象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。通過加上1/2將該結(jié)果舍入為整數(shù),取結(jié)果的基數(shù)并將其強制轉(zhuǎn)換為long類型。換句話說,結(jié)果等于以下表達式的值:(long)Math.floor(a+0.5d)13、shorts1=1;s1=s1+1;有什么錯?shorts1=1;s1+=1;有什么錯?shorts1=1;s1=s1+1;錯,shorts1=1;s1+=1;對。對于shorts1=1;s1=s1+1;由于s1+1運算時會自動提高表達式的類型,所以結(jié)果是int型,再賦值給short類型s1時,編譯器將報告需要強制轉(zhuǎn)換類型的錯誤。對于shorts1=1;s1+=1;由于+=是java語言規(guī)定的運算符,java編譯器會對它進行特殊解決,因此可以對的編譯。14、sleep()和wait()有什么區(qū)別?sleep是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定期間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)仍然保持,屆時后會自動恢復。調(diào)用sleep不會釋放對象鎖。wait是Object類的方法,對此對象調(diào)用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā)出notify方法(或notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運營狀態(tài)。15、數(shù)組有沒有length()這個方法?String有沒有l(wèi)ength()這個方法?數(shù)組沒有l(wèi)ength()這個方法,有l(wèi)ength的屬性。String有有l(wèi)ength()這個方法。16、是否可以繼承String類?String類是final類故不可以繼承。17、Overload和Override的區(qū)別。Overloaded的方法是否可以改變返回值的類型?overload一般翻譯為重載,表達多個函數(shù)共用同一個函數(shù)名,為了保證調(diào)用這些同名函數(shù)時能對的區(qū)分究竟應當調(diào)用的是其中的哪一個,重載的各個函數(shù)的參數(shù)表(不考慮形參名)必須彼此不同,通常簡略地說成“不同參數(shù)表”。它對返回值的類型沒有任何規(guī)定,所以你可以隨意為每一個重載的函數(shù)設立返回類型,相同也行,不同也行。override一般翻譯為覆蓋,表達子類對從父類繼承來的虛函數(shù)重新定義,它規(guī)定參數(shù)表必須跟父類中被覆蓋的那個函數(shù)的參數(shù)表完全相同,返回值類型原則上也規(guī)定相同,但假如返回類型是父類的指針或者父類的引用,覆蓋時返回類型允許是子類的指針或者子類的引用。18、Set里的元素是不能反復的,那么用什么方法來區(qū)分反復與否呢?是用==還是equals()?它們有何區(qū)別?Set是Collection容器的一個子接口,它不允許出現(xiàn)反復元素,當然也只允許有一個null對象。equals()區(qū)分更合適。為什么用equals()而不用==來區(qū)分?應當從它倆的區(qū)別談起,==是用來判斷兩者是否是同一對象(同一事物),而equals是用來判斷是否引用同一個對象。再看一下Set里面存的是對象,還是對象的引用。根據(jù)java的存儲機制可知,set里面存放的是對象的引用,所以當兩個元素只要滿足了equals()時就已經(jīng)指向同一個對象,也就出現(xiàn)了反復元素。所以應當用equals()來判斷。19、給我一個你最常見到的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(錯誤)表達系統(tǒng)級的錯誤和程序不必解決的異常,是java運營環(huán)境中的內(nèi)部錯誤或者硬件問題,比如,內(nèi)存資源局限性等,對于這種錯誤,程序基本無能為力,除了退出運營外別無選擇。Exception(違例)表達需要捕獲或者需要程序進行解決的異常,它解決的是由于程序設計的瑕疵而引起的問題或者在外的輸入等引起的一般性問題,是程序必須解決的。21、abstractclass和interface有什么區(qū)別?1>.相同點A.兩者都是抽象類,都不能實例化。B.interface實現(xiàn)類及abstrctclass的子類都必須要實現(xiàn)已經(jīng)聲明的抽象方法。2.>不同點A.interface需要實現(xiàn),要用implements,而abstractclass需要繼承,要用extends。B.一個類可以實現(xiàn)多個interface,但一個類只能繼承一個abstractclass。C.interface強調(diào)特定功能的實現(xiàn),而abstractclass強調(diào)所屬關(guān)系。D.盡管interface實現(xiàn)類及abstrctclass的子類都必須要實現(xiàn)相應的抽象方法,但實現(xiàn)的形式不同。interface中的每一個方法都是抽象方法,都只是聲明的(declarat(yī)ion,沒有方法體),實現(xiàn)類必須要實現(xiàn)。而abstractclass的子類可以有選擇地實現(xiàn)。這個選擇有兩點含義:一是Abastractclass中并非所有的方法都是抽象的,只有那些冠有abstract的方法才是抽象的,子類必須實現(xiàn)。那些沒有abstract的方法,在Abstrctclass中必須定義方法體。二是abstractclass的子類在繼承它時,對非抽象方法既可以直接繼承,也可以覆蓋;而對抽象方法,可以選擇實現(xiàn),也可以通過再次聲明其方法為抽象的方式,無需實現(xiàn),留給其子類來實現(xiàn),但此類必須也聲明為抽象類。既是抽象類,當然也不能實例化。E.abstractclass是interface與Class的中介。interface是完全抽象的,只能聲明方法,并且只能聲明pulic的方法,不能聲明private及protected的方法,不能定義方法體,也不能聲明實例變量。然而,interface卻可以聲明常量變量,并且在JDK中不難找出這種例子。但將常量變量放在interface中違反了其作為接口的作用而存在的宗旨,也混淆了interface與類的不同價值。假如的確需要,可以將其放在相應的abstractclass或Class中。abstractclass在interface及Class中起到了承上啟下的作用。一方面,abstractclass是抽象的,可以聲明抽象方法,以規(guī)范子類必須實現(xiàn)的功能;另一方面,它又可以定義缺省的方法體,供子類直接使用或覆蓋。此外,它還可以定義自己的實例變量,以供子類通過繼承來使用。3>.interface的應用場合A.類與類之前需要特定的接口進行協(xié)調(diào),而不在乎其如何實現(xiàn)。B.作為可以實現(xiàn)特定功能的標記存在,也可以是什么接口方法都沒有的純粹標記。C.需要將一組類視為單一的類,而調(diào)用者只通過接口來與這組類發(fā)生聯(lián)系。D.需要實現(xiàn)特定的多項功能,而這些功能之間也許完全沒有任何聯(lián)系。4>、abstractclass的應用場合一句話,在既需要統(tǒng)一的接口,又需要實例變量或缺省的方法的情況下,就可以使用它。最常見的有:A.定義了一組接口,但又不想逼迫每個實現(xiàn)類都必須實現(xiàn)所有的接口??梢杂茫醔stractclass定義一組方法體,甚至可以是空方法體,然后由子類選擇自己所感愛好的方法來覆蓋。B.某些場合下,只靠純粹的接口不能滿足類與類之間的協(xié)調(diào),還必需類中表達狀態(tài)的變量來區(qū)別不同的關(guān)系。abstract的中介作用可以很好地滿足這一點。C.規(guī)范了一組互相協(xié)調(diào)的方法,其中一些方法是共同的,與狀態(tài)無關(guān)的,可以共享的,無需子類分別實現(xiàn);而另一些方法卻需要各個子類根據(jù)自己特定的狀態(tài)來實現(xiàn)特定的功能22、接口是否可繼承接口?抽象類是否可實現(xiàn)(implements)接口?抽象類是否可繼承實體類(concreteclass)?接口可以繼承接口。抽象類可以實現(xiàn)(implements)接口。抽象類是否可繼承實體類,但前提是實體類必須有明確的構(gòu)造函數(shù)。23、構(gòu)造器Constructor是否可被override?構(gòu)造器Constructor不能被繼承,因此不能重寫Overrid

溫馨提示

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

最新文檔

評論

0/150

提交評論