Java面試題,陸續(xù)更新


一、Java 面向?qū)ο?

1. 面向?qū)ο蠖加心男┨匦砸约澳銓?duì)這些特性的理解

? ? ? ? ? ? 封裝:其實(shí)本質(zhì)就是隱藏一切可以隱藏的屬性,主對(duì)外提供簡(jiǎn)單的接口

? ? ? ? ? ? 繼承:繼承是從已有類(lèi)得到繼承信息創(chuàng)建新類(lèi)的過(guò)程。

? ? ? ? ? ? 多態(tài):多態(tài)性是指允許不同子類(lèi)型的對(duì)象對(duì)同一消息作出不同的響應(yīng)

2.訪問(wèn)權(quán)限修飾符public、private、protected, 以及不寫(xiě)(默認(rèn))時(shí)的區(qū)別



3. 如何理解clone對(duì)象

? ? ? ? ? ? 3.1?為什么要使用clone對(duì)象

????????????當(dāng)我們?cè)诰幊痰倪^(guò)程中,有的時(shí)候我們?cè)谑褂肁對(duì)象的時(shí)候。有的時(shí)候需要用到?A對(duì)象中的屬性和值和對(duì)這些屬性值,進(jìn)行更改

? ? ? ? ? ? 所以這個(gè)時(shí)候我們就需要一個(gè)和A一模一樣的B對(duì)象,實(shí)現(xiàn)這個(gè)功能的方法有很多,但是clone是最高效的手段

? ? ? ? ? ?3.2 new 一個(gè)對(duì)象的過(guò)程和 clone 一個(gè)對(duì)象的過(guò)程區(qū)別

????????????????new操作符的本質(zhì)是分配新的內(nèi)存,在new操作符執(zhí)行的過(guò)程中,我們首先要考慮new后邊的類(lèi)型,因?yàn)槲覀冎挥兄懒耍?/p>

? ? ? ? ? ? ? ? 我們才知道分配多少空間,分配完之后我們?cè)谡{(diào)用構(gòu)造函數(shù)。在填充各個(gè)對(duì)象,這個(gè)過(guò)程叫做對(duì)象初始化。構(gòu)造方法返回后,

????????????????一個(gè)對(duì)象創(chuàng)建完畢,可以把他的引用(地址)發(fā)布到外部,在外部就可以使用這個(gè)引用操縱這個(gè)對(duì)象。

? ??????????????clone在第一步是和new相似的,都是分配內(nèi)存,調(diào)用clone方法時(shí),分配的內(nèi)存和原對(duì)象(即調(diào)用clone方法

????????????????????的對(duì)象)相同,然后再使用原對(duì)象中對(duì)應(yīng)的各個(gè)域,填充新對(duì)象的域,填充完成之后,clone方法返回,一個(gè)新的相同

? ? ? ? ? ? ? ? ? ? ?的對(duì)象被創(chuàng)建,同樣可以把這個(gè)新對(duì)象的引用發(fā)布到外部。

? ? ? ? ? ? ? ? 3.3?深度拷貝和淺度拷貝

? ???????????? ? ? 深度拷貝:這個(gè)對(duì)象必須要實(shí)現(xiàn)Cloneable接口,實(shí)現(xiàn)clone方法,并且在 clone 方法內(nèi)部,把該對(duì)象引用的其他對(duì)象也要 clone 份,

? ? ? ? ? ? ? ? ? ? ?這就要求這個(gè)被引用的對(duì)象必須也要實(shí)現(xiàn)Cloneable接口并且實(shí)現(xiàn)clone方法

二、JavaSE 語(yǔ)法


? ? ? ? 1. Java有沒(méi)有g(shù)oto語(yǔ)句

? ??????????????goto是Java 中的保留字,在目前版本的Java中沒(méi)有使用。,其中有 goto 和 const,但是這兩個(gè)是目前

????????????????無(wú)法使用的關(guān)鍵字,

? ? ? ? ? 2. & 和 && 的區(qū)別

? ? ? ? ? ? ?&&是短路與 ,當(dāng)前一個(gè)條件不里的時(shí)候,后邊的????

? ? ? ? ? 3. 在Java中,如何跳出當(dāng)前的多重嵌套循環(huán)? ??

? ? ? ? ? ? ? ? 主要有兩種,一種是break跳出循環(huán),可以在循環(huán)外定義標(biāo)記break到標(biāo)記.但是這種會(huì)讓程序不太優(yōu)雅,所以不這么使用

? ? ? ? ? ? ? ? 第二種就是continue,意義就是跳出本次循環(huán)

? ??????????4. 兩個(gè)對(duì)象值相同 (x.equals(y) == true) ,但卻可有不同的hashCode,這句話對(duì)不對(duì)?? ? ? ? ? ? ??

? ? ? ? ? ? ? ? 不對(duì),如果兩個(gè)對(duì)象,滿足x.equals(y) == true,那么它們的hashCode一定相同向同,如果hashCode相同,x.equals(y) == true

????????????????不一定成立。想詳細(xì)理解可可以觀看一下《Effective Java》這本書(shū)

? ? ? ? ? ? 5. 是否可以繼承String

? ? ? ? ? ? ? ? ? ?不可以?因?yàn)镾tring是final類(lèi),不可以被繼承

? ? ? ? ? ? 6. 當(dāng)一個(gè)對(duì)象被當(dāng)作參數(shù)傳遞到一個(gè)方法后,此方法可改變這個(gè)對(duì)象的屬性,并可返回變化后的結(jié)果,那? ? ? ????????????????么這里到底是值傳遞還是引用傳遞?

? ? ? ? ? ? ? ? ? ? ? ? 值傳遞,java語(yǔ)言的方法調(diào)用只支持值傳遞,

? ? ? ? ? ? ? 7. 重載(overload)和重寫(xiě)(override)的區(qū)別?重載的方法能否根據(jù)返回類(lèi)型進(jìn)行區(qū)分?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1. 重載是發(fā)生在一個(gè)類(lèi)或者子父類(lèi)中的,方法的重寫(xiě)只能發(fā)生在子父類(lèi)中

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2.?重載和重寫(xiě)方法名都必須一致,重載,參數(shù)列表中的順序,類(lèi)型,個(gè)數(shù)不同,重寫(xiě),參數(shù)必須一致?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3.重寫(xiě),方法的返回值相同,不能比父類(lèi)聲明更多的異常,重載對(duì)返回類(lèi)型沒(méi)有特殊要求

? ? ? ? ? ? ?8. 為什么函數(shù)不能根據(jù)返回類(lèi)型來(lái)區(qū)分重載

? ? ? ? ? ? ? ? ? ? ? ?因?yàn)樵谡{(diào)用的時(shí)候不能給返回值類(lèi)型,如果根據(jù)編譯器上下文判斷,在有些時(shí)候調(diào)用并不使用值進(jìn)行接收,

? ? ? ? ? ? ?9. char 型變量中能不能存儲(chǔ)一個(gè)中文漢字,為什么?

? ? ? ? ? ? ? ? ? ? ? ? ? ? 可以,因?yàn)閖ava中使用的編碼是Unicode,一個(gè)char類(lèi)型占兩個(gè)字節(jié),所以存放一個(gè)漢字沒(méi)有問(wèn)題

? ? ? ? ? ? ? ? ? ? ? ? Unicode:不選擇任何特定的編碼,直接使用字符在字符集中編碼,知識(shí)統(tǒng)一的方法

? ? ? ? ? ? ?10. 抽象類(lèi)(abstract class)和接口(interface)有什么異同?

? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.抽象類(lèi)可以定義構(gòu)造器。接口不可以定義構(gòu)造器

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.抽象類(lèi)可以有普通成員變量,接口分鐘沒(méi)有普通成員變量

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?3.抽象類(lèi)中可以有非抽象方法,接口中不可以

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?4.接口中的抽象方法都是public,抽象不受約束

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?5.抽象類(lèi)可以包含靜態(tài)方法,接口不能包含靜態(tài)方法(jdk1.7以前)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?6.抽象類(lèi)中靜態(tài)成員變量的訪問(wèn)類(lèi)型可以任意,接口中只能是public static?final?類(lèi)型,并且默認(rèn)即為public static final

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?7.一個(gè)抽象類(lèi)只能繼承一個(gè)類(lèi),但是接口可以多實(shí)現(xiàn)

? ? ? ? ? ? ? ? ?11. 抽象的(abstract)方法是否可同時(shí)是靜態(tài)的(static), 是否可同時(shí)是本地方法 (native),是否可同時(shí)被synchronized

? ? ? ? ? ? ? ? ? ? ? ? 都不能,抽象方法需要子類(lèi)重寫(xiě),而靜態(tài)方法是無(wú)法重寫(xiě)的,因此二者是矛盾的,本地方法是由本地代碼(C?實(shí)現(xiàn)的)實(shí)現(xiàn)的方法

? ? ? ? ? ? ? ? ? ? ? ? 而抽象方法是沒(méi)有實(shí)現(xiàn)的,也是矛盾的,synchronized?和方法的實(shí)現(xiàn)細(xì)節(jié)有關(guān),抽象方法不涉及實(shí)現(xiàn)細(xì)節(jié),因此也是相互矛盾的

? ??????????????12. 闡述靜態(tài)變量和實(shí)例變量的區(qū)別?

? ? ? ? ? ? ? ? ? ? 靜態(tài)變量:是被static修飾符修飾的變量,也稱(chēng)類(lèi)變量,它屬于類(lèi),不屬于類(lèi)的任何一個(gè)對(duì)象,一個(gè)類(lèi)不管創(chuàng)建多少個(gè)對(duì)象,靜態(tài)

? ? ? ? ? ? ? ? ? ? 變量在內(nèi)存中有且僅有一個(gè)拷貝,靜態(tài)變量可以實(shí)現(xiàn)讓多個(gè)對(duì)象共享內(nèi)存

? ? ? ? ? ? ? ? ? ?實(shí)例變量:必須依賴(lài)于某一實(shí)例,需要先創(chuàng)建對(duì)象然后通過(guò)對(duì)象才能訪問(wèn)到它,

? ? ? ? ? ? ? ? 13. ==和equals的區(qū)別

? ? ? ? ? ? ? ? ? ? ? ? ==:比較的是內(nèi)存地址

? ? ? ? ? ? ? ? ? ? ? ? equals:比較的是值

? ? ? ? ? ? ? ? ? 14.String s = "Hello";s = s + " world!";這兩行代碼執(zhí)行后,原始的String對(duì)象 中的內(nèi)容到底變沒(méi)?

? ? ? ? ? ? ? ? ? ? ? ? ? ? 沒(méi)變。因?yàn)镾tring是被設(shè)計(jì)成不可變的類(lèi),所以它的所有對(duì)象都是不可變的。如果想有可變的可以用,StringBulider

? ? ? ? ? ? ? 三、Java 中的多態(tài)

? ? ? ? ? ? ? ? ? ? ?1. Java中實(shí)現(xiàn)多態(tài)的機(jī)制是什么?????

? ? ? ? ? ? ? ? ? ? ? ? ? ? 通過(guò)具體的實(shí)現(xiàn)類(lèi)對(duì)對(duì)象,指向父類(lèi)或接口,

? ? ? ? ? ? ? ?四、Java 的異常處理

? ? ? ? ? ? ? ? ? ?1. Java中異常分為哪些種類(lèi)?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1)?編譯時(shí)異常,也叫強(qiáng)制性異常,和CheckedException

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (2)運(yùn)行時(shí)異常,也叫沒(méi)強(qiáng)制性異常和RuntimeException

? ? ? ? ? ? ? ??

? ? ? ? ? ? ? ? ? ? ? ???

?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法,類(lèi)相關(guān)的語(yǔ)法,內(nèi)部類(lèi)的語(yǔ)法,繼承相關(guān)的語(yǔ)法,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚(yú)_t_閱讀 34,734評(píng)論 18 399
  • (一)Java部分 1、列舉出JAVA中6個(gè)比較常用的包【天威誠(chéng)信面試題】 【參考答案】 java.lang;ja...
    獨(dú)云閱讀 7,265評(píng)論 0 62
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,806評(píng)論 3 93
  • 我戀物癖,還是得該扔就扔! 最近看了一部電影《我的家中空無(wú)一物》,女主人公麻子是一個(gè)遭遇失戀打擊的生活廢柴。 既然...
    麥芽余魚(yú)閱讀 1,270評(píng)論 1 13
  • 今天在快手上看了這一句話,心里頗為感受 現(xiàn)在的我也出去幾個(gè)年頭了在外也住了無(wú)數(shù)個(gè)房子,可是卻沒(méi)有一個(gè)是溫暖的 從小...
    15年子墨閱讀 1,575評(píng)論 0 1

友情鏈接更多精彩內(nèi)容