


版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java 基礎(chǔ)面試知識(shí)點(diǎn)java 中 = 和 equals 和 hashCode 的區(qū)別int 、char 、long 各占多少字節(jié)數(shù)byte 1字節(jié) 最小值是-128(-2八7);最大值是127(2八7-1);boolean 至少 1 字節(jié) 這種類型只作為一種標(biāo)志來記錄 true/false 情況 ;short 2 字節(jié)最小值是-32768(-2X5);最大值是 32767(2X5 - 1);char 2 字節(jié) 最小值是 u0000( 即為 0);最大值是 ?(即為 65,535);int 4字節(jié) 最小值是-2,147,483,648(-231);最大值是2,147,483,647(231-
2、1);float 4 字節(jié) 單精度浮點(diǎn)數(shù)字長(zhǎng) 32 位,尾數(shù)長(zhǎng)度 23 ,指數(shù)長(zhǎng)度 8 ,指數(shù)偏移量 127;long 8 字節(jié)最小值是-9,223,372,036,854,775,808(-263);最大值是 9,223,372,036,854,775,807(263 -1);double 8 字節(jié) 雙精度浮點(diǎn)數(shù)字長(zhǎng) 64位,尾數(shù)長(zhǎng)度 52 ,指數(shù)長(zhǎng)度 11,指數(shù)偏移量 1023;英文字母字節(jié)數(shù) : 1; 編碼 GB2312字節(jié)數(shù) : 1; 編碼 GBK字節(jié)數(shù) : 1; 編碼 ISO-8859-1字節(jié)數(shù) : 1; 編碼 UTF-8中文漢字 字節(jié)數(shù) : 2; 編碼 GB2312字節(jié)數(shù) : 2;
3、 編碼 GBK字節(jié)數(shù) : 1; 編碼 ISO-8859-1字節(jié)數(shù) : 3; 編碼 UTF-8int 與 integer 的區(qū)別Ingeter 是 int 的包裝類, int 的初值為 0,Ingeter 的初值為 null;初始化的時(shí)候, int i=1;Integer i=new Integer(1);(要把 integer 當(dāng)做一個(gè)類看);但由于有了自動(dòng)裝箱和拆箱使得對(duì) Integer 類也可使用 Integer i=1;int 是基本數(shù)據(jù)類型 (面向過程留下的痕跡,不過是對(duì) java 的有益補(bǔ)充 ), Integer 是一個(gè)類,是 int 的擴(kuò)展,定義了很多的轉(zhuǎn)換方法Integer 是對(duì)
4、象, 用一個(gè)引用指向這個(gè)對(duì)象, 而 int 是基本類型, 直接存儲(chǔ)數(shù) 值。對(duì) java 多態(tài)的理解多態(tài)繼承父類的子類重寫父類的某個(gè)方法, 不同的子類調(diào)運(yùn)同一個(gè)方法可以, 產(chǎn)生不同的結(jié)果。多態(tài)的三個(gè)必要條件 :繼承父類重寫父類的方法父類的引用指向子類對(duì)象面向?qū)ο蟮娜筇匦苑庋b、繼承、多態(tài)。從某種程度來看,封裝、繼承就是 為了多態(tài)準(zhǔn)備的,也是最重要的知識(shí)點(diǎn)。實(shí)現(xiàn)多態(tài)的技術(shù)動(dòng)態(tài)綁定, 是指在執(zhí)行期間, 根據(jù)引用對(duì)象實(shí)際指向的對(duì)象, 來執(zhí)行對(duì)應(yīng)的方法。多態(tài)的作用消除類型之間的耦合關(guān)系。多態(tài)的好處可替換行多態(tài)對(duì)已存在的代碼有可替換性 (重寫 );擴(kuò)展性多態(tài)對(duì)代碼具有擴(kuò)展性 ;接口性多態(tài)是父類通過方法簽名
5、,為子類提供的共同接口,由子類去完善或靈活性它在應(yīng)用中體現(xiàn)了靈活多樣的操作,提高了使用效率簡(jiǎn)化性。Java中多態(tài)的實(shí)現(xiàn)方式實(shí)現(xiàn)接口,繼承父類進(jìn)行方法重寫,同一個(gè) 類中進(jìn)行方法的重載。什么是內(nèi)部類 ?內(nèi)部類的作用定義 將一個(gè)類定義在一個(gè)類或者一個(gè)方法里面,這樣的類稱著內(nèi)部類內(nèi)部類的種類有 4 種1、成員內(nèi)部類2、靜態(tài)內(nèi)部類靜態(tài)內(nèi)部類就是在成員內(nèi)部類多加了一個(gè) static 關(guān)鍵字。3、匿名內(nèi)部類4、局部?jī)?nèi)部類內(nèi)部類的作用1、內(nèi)部類可以很好的實(shí)現(xiàn)隱藏非內(nèi)部類是不可以使用 private 和 protected 修飾的,但是內(nèi)部類卻可以, 從而達(dá)到隱藏的作用。 同時(shí)也可以將一定邏輯關(guān)系的類組織在一起
6、, 增強(qiáng)可讀性。2、間接的實(shí)現(xiàn)多繼承。每個(gè)內(nèi)部類都能獨(dú)立地繼承自一個(gè) (接口的 )實(shí)現(xiàn),所以無論外部類是否已經(jīng) 繼承了某個(gè) (接口的 )實(shí)現(xiàn),對(duì)于內(nèi)部類都沒有影響。如果沒有內(nèi)部類提供的可以 繼承多個(gè)具體的或抽象的類的能力,一些設(shè)計(jì)與編程問題就很難解決。所以說內(nèi) 部類間接的實(shí)現(xiàn)了多繼承。抽象類和接口區(qū)別 ?抽象類1:有 abstract 修飾的 class ,絕對(duì)就是抽象類。2:抽象類中可以有抽象方法, 也可以沒有抽象方法, 但是有抽象方法的 class , 就一定會(huì)是抽象類。3:抽象類是不能創(chuàng)建實(shí)例對(duì)象的。4:如果有子類繼承這個(gè)抽象類,則必須要實(shí)現(xiàn)父類中的抽象方法,如果不實(shí) 現(xiàn)的話,則這個(gè)字類
7、也必須定義為抽象類。接口1:接口只能實(shí)現(xiàn)不能夠繼承,比如,一個(gè)類可以實(shí)現(xiàn)多個(gè)接口,但是只能繼 承一個(gè)父類,也可以這樣理解,一個(gè)類可以有多個(gè)干爹 (實(shí)現(xiàn)接口 ),但是只能有 一個(gè)親爹 (繼承父類 )。2:如果要實(shí)現(xiàn)這個(gè)接口,則該接口中的方法必須要實(shí)現(xiàn)。因?yàn)槲覀兌x接口 中的方法時(shí),系統(tǒng)是默認(rèn)這些方法是抽象的方法,也就是說這些方法是有 public abstract 這個(gè)來修飾的。3: 在接口中定義的變量必須是全局變量的,也就是說有 public static final 修飾的抽象類的意義抽象類與接口的應(yīng)用場(chǎng)景抽象類是否可以沒有方法和屬性 ?泛型中 extends 和 super 的區(qū)別和是 J
8、ava 泛型中的“通配符 (Wildcards) ”和“邊界 (Bounds) ”的概念是指 “上界通配符 (Upper Bounds Wildcards) ”是指 “下界通配符 (Lower Bounds Wildcards) ”父類的靜態(tài)方法能否被子類重寫 ?先給一個(gè)答案,不能,父類的靜態(tài)方法能夠被子類繼承,但是不能夠被子類 重寫,即使子類中的靜態(tài)方法與父類中的靜態(tài)方法完全一樣,也是兩個(gè)完全不同 的方法。重寫指的是根據(jù)運(yùn)行時(shí)對(duì)象的類型來決定調(diào)用哪個(gè)方法,而不是根據(jù)編譯時(shí) 的類型。對(duì)于靜態(tài)方法和靜態(tài)變量來說,雖然在上述代碼中使用對(duì)象來進(jìn)行調(diào)用,但 是底層上還是使用父類來調(diào)用的,靜態(tài)變量和靜態(tài)
9、方法在編譯的時(shí)候就將其與類 綁定在一起。既然它們?cè)诰幾g的時(shí)候就決定了調(diào)用的方法、變量,那就和重寫沒 有關(guān)系了。靜態(tài)屬性和靜態(tài)方法是否可以被繼承可以被繼承,如果子類中有相同的靜態(tài)方法和靜態(tài)變量,那么父類的方法以及變量就會(huì)被覆蓋。要想調(diào)用就就必須使用父類來調(diào)用。從上述代碼可以看出,子類中覆蓋了父類的靜態(tài)方法的話,調(diào)用的是子類的方法,這個(gè)時(shí)候要是還想調(diào)用父類的靜態(tài)方法,應(yīng)該是用父類直接調(diào)用。如果子類沒有覆蓋,則調(diào)用的是父類的方法。靜態(tài)變量與此相似。進(jìn)程和線程的區(qū)別 ?進(jìn)程是系統(tǒng)進(jìn)行資源分配的獨(dú)立單元1設(shè)計(jì)思想為了允許多個(gè)程序同時(shí)在內(nèi)存中運(yùn)行特點(diǎn)進(jìn)程是程序的一次執(zhí)行過程。若程序執(zhí)行兩次甚至多次,則需要
10、兩個(gè)甚至多個(gè)進(jìn)程。進(jìn)程是是正在運(yùn)行程序的抽象。它代表運(yùn)行的 CPU,也稱進(jìn)程是對(duì)CPU的抽象。 (虛擬技術(shù)的支持,將一個(gè) CPU 變幻為多個(gè)虛擬的 CPU)系統(tǒng)資源(如內(nèi)存、文件 )以進(jìn)程為單位分配操作系統(tǒng)為每個(gè)進(jìn)程分配了獨(dú)立的地址空間操作系統(tǒng)通過“調(diào)度”把控制權(quán)交給進(jìn)程。線程cpu 調(diào)度的基本單元1設(shè)計(jì)思想在一個(gè)進(jìn)程內(nèi)也需要并行執(zhí)行多個(gè)程序,實(shí)現(xiàn)不同的功能。進(jìn)程切換的代價(jià)、開銷比較大 ;在進(jìn)程內(nèi)創(chuàng)建、終止線程比創(chuàng)建、終止進(jìn)程要快。同一進(jìn)程內(nèi)的線程間切換 比進(jìn)程間的切換要快 ,尤其是用戶級(jí)線程間的切換。 線程之間相互通信無須通過內(nèi) 核 ( 同一進(jìn)程內(nèi)的線程共享內(nèi)存和文件 )final , fi
11、nally , finalize 的區(qū)別序列化的方式 ?Serializable 和 Parcelable 的區(qū)別 ?哪些情況下的對(duì)象會(huì)被垃圾回收機(jī)制處理掉 ?靜態(tài)代理和動(dòng)態(tài)代理的區(qū)別,什么場(chǎng)景使用 ? 靜態(tài)代理通常只代理一個(gè)類,動(dòng)態(tài)代理是代理一個(gè)接口下的多個(gè)實(shí)現(xiàn)類。 靜態(tài)代理事先知道要代理的是什么,而動(dòng)態(tài)代理不知道要代理什么東西,只有在運(yùn)行時(shí)才知道。動(dòng)態(tài)代理是實(shí)現(xiàn) JDK 里的 InvocationHandler 接口的 invoke 方法,但注意的是代理的是接口,也就是你的業(yè)務(wù)類必須要實(shí)現(xiàn)接口,通過 Proxy 里的newProxyInstance 得到代理對(duì)象。Java 的異常體系Jav
12、a 把異常作為一種類, 當(dāng)做對(duì)象來處理。 所有異常類的基類是 Throwable 類,兩大子類分別是 Error 和 Exception 。系統(tǒng)錯(cuò)誤由 Java 虛擬機(jī)拋出,用 Error 類表示。 Error 類描述的是內(nèi)部系統(tǒng) 錯(cuò)誤,例如 Java 虛擬機(jī)崩潰。這種情況僅憑程序自身是無法處理的, 在程序中也 不會(huì)對(duì) Error 異常進(jìn)行捕捉和拋出。異常 (Exception) 又分為 RuntimeException( 運(yùn)行時(shí)異常 )和 CheckedException( 檢查時(shí)異常 ) ,兩者區(qū)別如下RuntimeException 程序運(yùn)行過程中才可能發(fā)生的異常。一般為代碼的邏輯 錯(cuò)誤
13、。 例如類型錯(cuò)誤轉(zhuǎn)換, 數(shù)組下標(biāo)訪問越界, 空指針異常、 找不到指定類等等。CheckedException 編譯期間可以檢查到的異常, 必須顯式的進(jìn)行處理 (捕獲 或者拋出到上一層 )。例如 IOException, FileNotFoundException等等。談?wù)勀銓?duì)解析與分派的認(rèn)識(shí)。方法在程序真正運(yùn)行之前就有一個(gè)可以確定的調(diào)用版本,并且這個(gè)方法的調(diào) 用版本在運(yùn)行期是不可改變的, 即“編譯期可知, 運(yùn)行期不可變”,這類目標(biāo)的方 法的調(diào)用稱為解析 (Resolve) 。靜態(tài)分派靜態(tài)分派只會(huì)涉及重載 (Oveload) ,而重載是在編譯期間確定的,那么靜態(tài) 分派自然是一個(gè)靜態(tài)的過程 (因?yàn)?/p>
14、還沒有涉及到 Java 虛擬機(jī) )。靜態(tài)分派的最直接 的解釋是在重載的時(shí)候是通過參數(shù)的靜態(tài)類型而不是實(shí)際類型作為判斷依據(jù)的。 因此在編譯階段, Javac 編譯器會(huì)根據(jù)參數(shù)的靜態(tài)類型決定使用哪個(gè)重載版本。動(dòng)態(tài)分派動(dòng)態(tài)分派的一個(gè)最直接的例子是重寫 (Override) 。對(duì)于重寫,我們已經(jīng)很熟 悉了,那么 Java 虛擬機(jī)是如何在程序運(yùn)行期間確定方法的執(zhí)行版本的呢 ?Java 中實(shí)現(xiàn)多態(tài)的機(jī)制是什么 ?靠的是父類或接口定義的引用變量可以指向子類或具體實(shí)現(xiàn)類的實(shí)例對(duì)象, 而程序調(diào)用的方法在運(yùn)行期才動(dòng)態(tài)綁定,就是引用變量所指向的具體實(shí)例對(duì)象的 方法,也就是內(nèi)存里正在運(yùn)行的那個(gè)對(duì)象的方法,而不是引用變
15、量的類型中定義 的方法。如何將一個(gè) Java 對(duì)象序列化到文件里 ?將對(duì)象序列化到文件對(duì)象需要實(shí)現(xiàn) Seralizable 接口通過 ObjectOutputStream 的 writeObject() 方法寫入和ObjectInputStream 的 readObject() 方法來進(jìn)行讀取/ 存進(jìn)去Java 反射的理解簡(jiǎn)單的來說,反射機(jī)制其實(shí)就是指程序在運(yùn)行的時(shí)候能夠獲取自身的信息。 如果知道一個(gè)類的名稱或者它的一個(gè)實(shí)例對(duì)象, 就能把這個(gè)類的所有方法和變量 的信息 (方法名,變量名,方法,修飾符,類型,方法參數(shù)等等所有信息 )找出來。 如果明確知道這個(gè)類里的某個(gè)方法名 + 參數(shù)個(gè)數(shù) 類型,
16、還能通過傳遞參數(shù)來運(yùn)行 那個(gè)類里的那個(gè)方法,這就是反射。Java 注解的理解定義注解 (Annotation) ,也叫元數(shù)據(jù)。一種代碼級(jí)別的說明。它是 JDK5 及 以后版本引入的一個(gè)特性, 與類、接口、枚舉是在同一個(gè)層次。 它可以聲明在包、 類、字段、方法、局部變量、方法參數(shù)等的前面,用來對(duì)這些元素進(jìn)行說明,注元注解元注解的作用就是負(fù)責(zé)注解其他注解。 Java0 定義了 4 個(gè)標(biāo)準(zhǔn)的meta-annotation類型,它們被用來提供對(duì)其它annotation 類型作說明。JavaO定義的元注解Target,Retention,Documented,Inherited說說你對(duì)依賴注入的理解這也
17、就說明了為啥要依賴注入,因?yàn)榭梢越怦钜蕾囎⑷胫饕饔?依賴注入能夠讓相互協(xié)作的軟件組件保持松散耦合泛型原理,并舉例說明Java 的泛型是偽泛型。在編譯期間,所有的泛型信息都會(huì)被擦除掉。Java 中的泛型基本上都是在編譯器這個(gè)層次來實(shí)現(xiàn)的。在生成的 Java 字節(jié) 碼中是不包含泛型中的類型信息的。使用泛型的時(shí)候加上的類型參數(shù),會(huì)在編譯 器在編譯的時(shí)候去掉。這個(gè)過程就稱為類型擦除。Java 中 String 的了解一、 String 是不可變對(duì)象java.lang.String 類使用了 final 修飾,不能被繼承。 Java 程序中的所有字面 值,即雙引號(hào)括起的字符串,如如"abc&
18、quot;,都是作為String類的實(shí)例實(shí)現(xiàn)的。String 是常量,其對(duì)象一旦構(gòu)造就不能再被改變。換句話說, String 對(duì)象是不可變的, 每一個(gè)看起來會(huì)修改 String 值的方法,實(shí)際上都是創(chuàng)造了一個(gè)全新的 String 對(duì) 象,以包含修改后的字符串內(nèi)容。 而最初的 String 對(duì)象則絲毫未動(dòng)。 String 對(duì)象 具有只讀特性,指向它的任何引用都不可能改變它的值,因此,也不會(huì)對(duì)其他的 引用有什么影響。、String 常量池常量池 (constant pool) 指的是在編譯期被確定,并被保存在已編譯的 .class 文件中的一些數(shù)據(jù)。它包括了關(guān)于類、方法、接口等中的常量,也包括字符
19、串常 量。 Java 為了提高性能,靜態(tài)字符串 (字面量/常量/常量連接的結(jié)果 )在常量池中 創(chuàng)建,并盡量使用同一個(gè)對(duì)象, 重用靜態(tài)字符串。 對(duì)于重復(fù)出現(xiàn)的字符串直接量, JVM 會(huì)首先在常量池中查找,如果常量池中存在即返回該對(duì)象。三、 String 、StringBuffer 和 StringBuilder 的區(qū)別對(duì)象的可變與不可變String 類中使用字符數(shù)組來保存數(shù)據(jù),因?yàn)橛小?final ”修飾符,所以 string 對(duì)象是不可變的。如下private final char value;StringBuilder 與 StringBuffer 都繼承自 AbstractStringBuilder 類,在 AbstractStringBuilder 中也是使用字符數(shù)組保存數(shù)據(jù),這兩種對(duì)象都是可變的。 如下
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 傳媒公司協(xié)議合同范本
- 制作簡(jiǎn)易合同范本
- 農(nóng)戶貸款保證合同范本
- 農(nóng)村住宅設(shè)計(jì)合同范本
- 上海植物租擺合同范本
- 公積金租房合同范本
- 五人合伙合同范本
- 二手公寓房購(gòu)買合同范本
- 正規(guī)合同范本買賣
- 倉(cāng)庫(kù)貨品保管合同范本
- 年處理量48萬噸重整裝置芳烴精餾的工藝設(shè)計(jì)-二甲苯塔
- CRPS電源設(shè)計(jì)向?qū)?CRPS Design Guide r-2017
- 16防沖工題庫(kù)題庫(kù)(238道)
- SH/T 1627.1-1996工業(yè)用乙腈
- GB/T 5534-2008動(dòng)植物油脂皂化值的測(cè)定
- GB/T 3452.2-2007液壓氣動(dòng)用O形橡膠密封圈第2部分:外觀質(zhì)量檢驗(yàn)規(guī)范
- GB/T 30797-2014食品用洗滌劑試驗(yàn)方法總砷的測(cè)定
- GB/T 20057-2012滾動(dòng)軸承圓柱滾子軸承平擋圈和套圈無擋邊端倒角尺寸
- GB/T 19808-2005塑料管材和管件公稱外徑大于或等于90mm的聚乙烯電熔組件的拉伸剝離試驗(yàn)
- GB/T 12771-2019流體輸送用不銹鋼焊接鋼管
- 工程驗(yàn)收及移交管理方案
評(píng)論
0/150
提交評(píng)論