資源描述:
《2018年最新java面試題整理》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、word資料下載可編輯1基礎(chǔ)篇1.1基本功1.1.1面向?qū)ο筇卣鞣庋b,繼承,多態(tài)和抽象1、封裝封裝給對(duì)象提供了隱藏內(nèi)部特性和行為的能力。對(duì)象提供一些能被其他對(duì)象訪問(wèn)的方法來(lái)改變它內(nèi)部的數(shù)據(jù)。在Java當(dāng)中,有3種修飾符:public,private和protected。每一種修飾符給其他的位于同一個(gè)包或者不同包下面對(duì)象賦予了不同的訪問(wèn)權(quán)限。下面列出了使用封裝的一些好處:1)通過(guò)隱藏對(duì)象的屬性來(lái)保護(hù)對(duì)象內(nèi)部的狀態(tài)。2)提高了代碼的可用性和可維護(hù)性,因?yàn)閷?duì)象的行為可以被單獨(dú)的改變或者是擴(kuò)展。3)禁止對(duì)象之間
2、的不良交互提高模塊化2、繼承繼承給對(duì)象提供了從基類(lèi)獲取字段和方法的能力。繼承提供了代碼的重用行,也可以在不修改類(lèi)的情況下給現(xiàn)存的類(lèi)添加新特性。3、多態(tài)多態(tài)是編程語(yǔ)言給不同的底層數(shù)據(jù)類(lèi)型做相同的接口展示的一種能力。一個(gè)多態(tài)類(lèi)型上的操作可以應(yīng)用到其他類(lèi)型的值上面。4、抽象抽象是把想法從具體的實(shí)例中分離出來(lái)的步驟,因此,要根據(jù)他們的功能而不是實(shí)現(xiàn)細(xì)節(jié)來(lái)創(chuàng)建類(lèi)。Java支持創(chuàng)建只暴漏接口而不包含方法實(shí)現(xiàn)的抽象的類(lèi)。這種抽象技術(shù)的主要目的是把類(lèi)的行為和實(shí)現(xiàn)細(xì)節(jié)分離開(kāi)。1.1.2final,finally,fina
3、lize的區(qū)別1、final修飾符(關(guān)鍵字)如果一個(gè)類(lèi)被聲明為final,意味著它不能再派生出新的子類(lèi),不能作為父類(lèi)被繼承。因此一個(gè)類(lèi)不能既被聲明為abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們?cè)谑褂弥胁槐桓淖?。被聲明為final的變量必須在聲明時(shí)給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載。2、finally在異常處理時(shí)提供finally塊來(lái)執(zhí)行任何清除操作。如果拋出一個(gè)異常,那么相匹配的catch子句就會(huì)執(zhí)行,
4、然后控制就會(huì)進(jìn)入finally塊(如果有的話)。3、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)用的。專(zhuān)業(yè)技術(shù)資料word資料下載可編輯1.1.1int和Integer有什么區(qū)別
5、int是基本數(shù)據(jù)類(lèi)型?,而Integer是其包裝類(lèi),注意是一個(gè)類(lèi)。?為什么要提供包裝類(lèi)呢????一是為了在各種類(lèi)型間轉(zhuǎn)化,通過(guò)各種方法的調(diào)用。否則你無(wú)法直接通過(guò)變量轉(zhuǎn)化。1.1.2重載和重寫(xiě)的區(qū)別override(重寫(xiě)) 1.方法名、參數(shù)、返回值相同?! ?.子類(lèi)方法不能縮小父類(lèi)方法的訪問(wèn)權(quán)限?! ?.子類(lèi)方法不能拋出比父類(lèi)方法更多的異常(但子類(lèi)方法可以不拋出異常)?! ?.存在于父類(lèi)和子類(lèi)之間?! ?.方法被定義為final不能被重寫(xiě)。overload(重載) 1.參數(shù)類(lèi)型、個(gè)數(shù)、順序至少有一個(gè)不
6、相同?! ?.不能重載只有返回值不同的方法名?! ?.存在于父類(lèi)和子類(lèi)、同類(lèi)中。區(qū)別點(diǎn)重載重寫(xiě)(覆寫(xiě))英文OverloadingOveriding定義方法名稱(chēng)相同,參數(shù)的類(lèi)型或個(gè)數(shù)不同方法名稱(chēng)、參數(shù)類(lèi)型、返回值類(lèi)型全部相同權(quán)限對(duì)權(quán)限沒(méi)要求被重寫(xiě)的方法不能擁有更嚴(yán)格的權(quán)限范圍發(fā)生在一個(gè)類(lèi)中發(fā)生在繼承類(lèi)中1.1.3抽象類(lèi)和接口有什么區(qū)別接口是公開(kāi)的,里面不能有私有的方法或變量,是用于讓別人使用的,而抽象類(lèi)是可以有私有方法或私有變量的,另外,實(shí)現(xiàn)接口的一定要實(shí)現(xiàn)接口里定義的所有方法,而實(shí)現(xiàn)抽象類(lèi)可以有選擇地重
7、寫(xiě)需要用到的方法,一般的應(yīng)用里,最頂級(jí)的是接口,然后是抽象類(lèi)實(shí)現(xiàn)接口,最后才到具體類(lèi)實(shí)現(xiàn)。?還有,接口可以實(shí)現(xiàn)多重繼承,而一個(gè)類(lèi)只能繼承一個(gè)超類(lèi),但可以通過(guò)繼承多個(gè)接口實(shí)現(xiàn)多重繼承,接口還有標(biāo)識(shí)(里面沒(méi)有任何方法,如Remote接口)和數(shù)據(jù)共享(里面的變量全是常量)的作用。1.1.4說(shuō)說(shuō)反射的用途及實(shí)現(xiàn)Java反射機(jī)制主要提供了以下功能:在運(yùn)行時(shí)構(gòu)造一個(gè)類(lèi)的對(duì)象;判斷一個(gè)類(lèi)所具有的成員變量和方法;調(diào)用一個(gè)對(duì)象的方法;生成動(dòng)態(tài)代理。反射最大的應(yīng)用就是框架Java反射的主要功能:?-確定一個(gè)對(duì)象的類(lèi)?-取出
8、類(lèi)的modifiers,數(shù)據(jù)成員,方法,構(gòu)造器,和超類(lèi).?-專(zhuān)業(yè)技術(shù)資料word資料下載可編輯找出某個(gè)接口里定義的常量和方法說(shuō)明.?-創(chuàng)建一個(gè)類(lèi)實(shí)例,這個(gè)實(shí)例在運(yùn)行時(shí)刻才有名字(運(yùn)行時(shí)間才生成的對(duì)象).?-取得和設(shè)定對(duì)象數(shù)據(jù)成員的值,如果數(shù)據(jù)成員名是運(yùn)行時(shí)刻確定的也能做到.?-在運(yùn)行時(shí)刻調(diào)用動(dòng)態(tài)對(duì)象的方法.?-創(chuàng)建數(shù)組,數(shù)組大小和類(lèi)型在運(yùn)行時(shí)刻才確定,也能更改數(shù)組成員的值.反射的應(yīng)用很多,很多框架都有用到spring的ioc/di也是反射…