一、JAVA中的幾種基本類型,各占用多少字節(jié)。


二、String能被繼承嗎?為什么?
不可以,因為String類有final修飾符,而final修飾的類是不能被繼承的,實現(xiàn)細節(jié)不允許改變。
三、String, Stringbuffer, StringBuilder 的區(qū)別。
String: 字符串常量(final修飾,不可被繼承),String是常量,當創(chuàng)建之后即不能更改。線程安全
StringBuffer:可變,使用了synchronized 關(guān)鍵字加了同步鎖證,線程安全
StringBuilder:可變,線程不安全
四、ArrayList 和 LinkedList 有什么區(qū)別。
ArrayList和LinkedList都實現(xiàn)了List接口,有以下的不同點:
1、ArrayList是基于索引的數(shù)據(jù)接口,它的底層是數(shù)組。它可以以O(shè)(1)時間復(fù)雜度對元素進行隨機訪問。與此對應(yīng),LinkedList是以元素列表的形式存儲它的數(shù)據(jù),每一個元素都和它的前一個和后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復(fù)雜度是O(n)。
2、相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數(shù)組那樣重新計算大小或者是更新索引。
3、LinkedList比ArrayList更占內(nèi)存,因為LinkedList為每一個節(jié)點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。
五、類的實例化順序,比如父類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,子類靜態(tài)數(shù)據(jù),構(gòu)造函數(shù),字段,當 new 的時候, 他們的執(zhí)行順序。
此題考察的是類加載器實例化時進行的操作步驟(加載–>連接->初始化)。
父類靜態(tài)變量、
父類靜態(tài)代碼塊、
子類靜態(tài)變量、
子類靜態(tài)代碼塊、
父類非靜態(tài)變量(父類實例成員變量)、
父類構(gòu)造函數(shù)、
子類非靜態(tài)變量(子類實例成員變量)、
子類構(gòu)造函數(shù)。
六、 Map 類都有什么區(qū)別;HashMap 是線程安全的嗎,并發(fā)下使用的 Map 是什么,他們內(nèi)部原理分別是什么,比如存儲方式, hashcode,擴容, 默認容量等。
hashMap是線程不安全的,HashMap是數(shù)組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實現(xiàn)的,采用哈希表來存儲的,
HashMap<K,V>:存儲數(shù)據(jù)采用的哈希表結(jié)構(gòu),元素的存取順序不能保證一致。由于要保證鍵的唯一、不重復(fù),需要重寫鍵的hashCode()方法、equals()方法。
LinkedHashMap<K,V>:HashMap下有個子類LinkedHashMap,存儲數(shù)據(jù)采用的哈希表結(jié)構(gòu)+鏈表結(jié)構(gòu)。通過鏈表結(jié)構(gòu)可以保證元素的存取順序一致;通過哈希表結(jié)構(gòu)可以保證的鍵的唯一、不重復(fù),需要重寫鍵的hashCode()方法、equals()方法。
七、有沒有有順序的 Map 實現(xiàn)類, 如果有, 他們是怎么保證有序的。
TreeMap和LinkedHashMap是有序的(TreeMap默認升序,LinkedHashMap則記錄了插入順序)。
八、抽象類和接口的區(qū)別,類可以繼承多個類么,接口可以繼承多個接口么,類可以實現(xiàn)多個接口么。
1、抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向?qū)崿F(xiàn)所有抽象方法的子類對象,接口變量必須指向?qū)崿F(xiàn)所有接口方法的類對象。
2、抽象類要被子類繼承,接口要被類實現(xiàn)。
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現(xiàn)
4、接口里定義的變量只能是公共的靜態(tài)的常量,抽象類中的變量是普通變量。
5、抽象類里的抽象方法必須全部被子類所實現(xiàn),如果子類不能全部實現(xiàn)父類抽象方法,那么該子類只能是抽象類。同樣,一個實現(xiàn)接口的時候,如不能全部實現(xiàn)接口方法,那么該類也只能為抽象類。
6、抽象方法只能申明,不能實現(xiàn)。abstract void abc();不能寫成abstract void abc(){}。
7、抽象類里可以沒有抽象方法
8、如果一個類里有抽象方法,那么這個類只能是抽象類
9、抽象方法要被實現(xiàn),所以不能是靜態(tài)的,也不能是私有的。
10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。
九、final 的用途
類、變量、方法
final 修飾的類叫最終類,該類不能被繼承。
final 修飾的方法不能被重寫。
final 修飾的變量叫常量,常量必須初始化,初始化之后值就不能被修改。
十、訪問修飾符 public、private、protected、default 在應(yīng)用設(shè)計中的作用。

十一、在自己的代碼中,如果創(chuàng)建一個 java.lang.String 對象,這個對象是否可以被類加載器加載?為什么
類加載無須等到“首次使用該類”時加載,jvm允許預(yù)加載某些類。。。