日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018java多线程面试题_2018JAVA面试题附答案

發布時間:2025/4/16 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018java多线程面试题_2018JAVA面试题附答案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA基礎

1.JAVA中的幾種基本類型,各占用多少字節?

2.String能被繼承嗎?為什么?

不可以,因為String類有final修飾符,而final不能被繼承的,實現細節不允許改變。平常我們定義的String str = " a ";其實和String str = new String("a");還是有差異的。

前者默認調用的String.valueof來返回String的實例對象,至于調用哪個則取決于你的賦值,比如String num = 1;調用的是public static String valueOf(int i){

return?Integer.toString(i);

}

后者則是調用如下部分:

public String(String original) {

this.value = original.value;

this.hash = original.hash;

}

最后我們的變量都存儲在一個char數組中。

private final char value[];

3.String, Stringbuffer, StringBuilder 的區別。

String 字符串常量(final修飾,不可被繼承),String是常量,當創建之后即不能更改。(可以通過StringBuffer和StringBuilder創建String對象(常用的兩個字符串操作類)。)

StringBuffer 字符串變量(線程安全),其也是final類別的,不允許被繼承,其中的絕大多數方法都進行了同步處理,包括常用的Append方法也做了同步處理。其自jdk1.0起就已經出現。其toString方法會進行對象緩存,以減少元素的復制開銷。

public synchronized String toString() {

if (toStringCache == null) {

toStringCache = Arrays.copyOfRange(value, 0, count);

}

return new String(toStringCache, true);

}

StringBuilder 字符串變量,(非線程安全)其自jdk1.5起開始出現。與StringBuffer一樣都繼承和實現同一個接口和類,方法除了沒有使用synch修飾以外基本一致,不同之處在于最后toString的時候,會直接返回一個新對象。

public String toString() {

// Create a copy, don’t share the array

return new String(value, 0, count);

}

4.ArrayList 和 LinkedList 有什么區別。

ArrayList和LinkedList都實現了List接口,有以下的不同點:

1.ArrayList是基于索引的數據接口。它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問。以此對應,LinkedList是以元素列表的形式存儲的數據,每一個元素都和它的前一個后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復雜度是O(n)。

2.相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。

3.LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。

5.講講類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,當 new 的時候, 他們的執行順序。

父類靜態代變量、

父類靜態代碼塊、

子類靜態變量、

子類靜態代碼塊、

父類非靜態變量(父類實例成員變量)、

父類構造函數、

子類非靜態變量(子類實例成員變量)、

子類構造函數。

6.用過哪些 Map 類,都有什么區別,HashMap 是線程安全的嗎,并發下使用的 Map 是什么,他們內部原理分別是什么,比如存儲方式, hashcode,擴容, 默認容量等。

hashMap是線程不安全的,HashMap是數組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實現的,采用哈希表來存儲的,

JAVA8 的 ConcurrentHashMap 為什么放棄了分段鎖,有什么問題嗎,如果你來設計,你如何設計。

有沒有順序的Map實現類,如果有,他們是怎么保證有序的。

TreeMap和LinkedHashMap是有序的(TreeMap默認升序,LinkedHashMap則記錄了插入順序)。

7.抽象類和接口的區別,類可以繼承多個類么,接口可以繼承多個接口么,類可以實現多個接口么。

1、抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向實現所有抽象方法的子類對象,接口變量必須指向實現所有接口方法的類對象。

2、抽象類要被子類繼承,接口要被類實現。

3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現

4、接口里定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。

5、抽象類里的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那么該子類只能是抽象類。同樣,一個實現接口的時候,如不能全部實現接口方法,那么該 ? ? ? ?類也只能為抽象類。

6、抽象方法只能申明,不能實現。abstract void abc();不能寫成abstract void abc(){}。

7、抽象類里可以沒有抽象方法 。

8、如果一個類里有抽象方法,那么這個類只能是抽象類 。

9、抽象方法要被實現,所以不能是靜態的,也不能是私有的。

10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。

8.繼承和聚合的區別在哪。

繼承指的是一個類(稱為子類、子類接口)繼承另外一個類(稱為父類、父接口)的功能,并可以增加它自己的新功能,繼承是類與類或者接口之間最常見的關系。在java中此類關系通過關鍵字exetents明確標識,在設計時候一般沒有爭議性。

總結

以上是生活随笔為你收集整理的2018java多线程面试题_2018JAVA面试题附答案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。