java default修饰符_2019最新java面试题附答案
筆者在今年上半年為所在公司陸陸續續面試了一些前來求職的程序員,一起來看看筆者都出了些什么題目來考他們吧!
1.JAVA中的幾種基本類型,各占用多少字節?
下圖單位是bit,非字節 1B=8bit
2.ArrayList 和 LinkedList 有什么區別。
ArrayList和LinkedList都實現了List接口,有以下的不同點:
1、ArrayList是基于索引的數據接口,它的底層是數組。它可以以O(1)時間復雜度對元素進行隨機訪問。與此對應,LinkedList是以元素列表的形式存儲它的數據,每一個元素都和它的前一個和后一個元素鏈接在一起,在這種情況下,查找某個元素的時間復雜度是O(n)。
2、相對于ArrayList,LinkedList的插入,添加,刪除操作速度更快,因為當元素被添加到集合任意位置的時候,不需要像數組那樣重新計算大小或者是更新索引。
3、LinkedList比ArrayList更占內存,因為LinkedList為每一個節點存儲了兩個引用,一個指向前一個元素,一個指向下一個元素。
3.講講類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,當 new 的時候, 他們的執行順序。
此題考察的是類加載器實例化時進行的操作步驟(加載–>連接->初始化)。
父類靜態代變量、
父類靜態代碼塊、
子類靜態變量、
子類靜態代碼塊、
父類非靜態變量(父類實例成員變量)、
父類構造函數、
子類非靜態變量(子類實例成員變量)、
子類構造函數。
測試demo:http://blog.csdn.net/u014042066/article/details/77574956
參閱我的博客《深入理解類加載》:http://blog.csdn.net/u014042066/article/details/77394480
4.用過哪些 Map 類,都有什么區別,HashMap 是線程安全的嗎,并發下使用的 Map 是什么,他們內部原理分別是什么,比如存儲方式, hashcode,擴容, 默認容量等。
hashMap是線程不安全的,HashMap是數組+鏈表+紅黑樹(JDK1.8增加了紅黑樹部分)實現的,采用哈希表來存儲的,
參照該鏈接:https://zhuanlan.zhihu.com/p/21673805
JAVA8 的 ConcurrentHashMap 為什么放棄了分段鎖,有什么問題嗎,如果你來設計,你如何設計。
參照:https://yq.aliyun.com/articles/36781
5.有沒有有順序的 Map 實現類, 如果有, 他們是怎么保證有序的。
TreeMap和LinkedHashMap是有序的(TreeMap默認升序,LinkedHashMap則記錄了插入順序)。
參照:http://uule.iteye.com/blog/1522291
6.抽象類和接口的區別,類可以繼承多個類么,接口可以繼承多個接口么,類可以實現多個接口么。
1、抽象類和接口都不能直接實例化,如果要實例化,抽象類變量必須指向實現所有抽象方法的子類對象,接口變量必須指向實現所有接口方法的類對象。
2、抽象類要被子類繼承,接口要被類實現。
3、接口只能做方法申明,抽象類中可以做方法申明,也可以做方法實現
4、接口里定義的變量只能是公共的靜態的常量,抽象類中的變量是普通變量。
5、抽象類里的抽象方法必須全部被子類所實現,如果子類不能全部實現父類抽象方法,那么該子類只能是抽象類。同樣,一個實現接口的時候,如不能全部實現接口方法,那么該類也只能為抽象類。
6、抽象方法只能申明,不能實現。abstract void abc();不能寫成abstract void abc(){}。
7、抽象類里可以沒有抽象方法
8、如果一個類里有抽象方法,那么這個類只能是抽象類
9、抽象方法要被實現,所以不能是靜態的,也不能是私有的。
10、接口可繼承接口,并可多繼承接口,但類只能單根繼承。
7.繼承和聚合的區別在哪。
繼承指的是一個類(稱為子類、子接口)繼承另外的一個類(稱為父類、父接口)的功能,并可以增加它自己的新功能的能力,繼承是類與類或者接口與接口之間最常見的關系;在Java中此類關系通過關鍵字extends明確標識,在設計時一般沒有爭議性;
聚合是關聯關系的一種特例,他體現的是整體與部分、擁有的關系,即has-a的關系,此時整體與部分之間是可分離的,他們可以具有各自的生命周期,部分可以屬于多個整體對象,也可以為多個整體對象共享;比如計算機與CPU、公司與員工的關系等;表現在代碼層面,和關聯關系是一致的,只能從語義級別來區分;
參考:http://www.cnblogs.com/jiqing9006/p/5915023.html
8.請結合 OO 設計理念,談談訪問修飾符 public、private、protected、default 在應用設計中的作用。
訪問修飾符,主要標示修飾塊的作用域,方便隔離防護
同一個類同一個包不同包的子類不同包的非子類Private√
Default√√
Protected√√√
Public√√√√
public: Java語言中訪問限制最寬的修飾符,一般稱之為“公共的”。被其修飾的類、屬性以及方法不
僅可以跨類訪問,而且允許跨包(package)訪問。
private: Java語言中對訪問權限限制的最窄的修飾符,一般稱之為“私有的”。被其修飾的類、屬性以
及方法只能被該類的對象訪問,其子類不能訪問,更不能允許跨包訪問。
protect: 介于public 和 private 之間的一種訪問修飾符,一般稱之為“保護形”。被其修飾的類、
屬性以及方法只能被類本身的方法及子類訪問,即使子類在不同的包中也可以訪問。
default:即不加任何訪問修飾符,通常稱為“默認訪問模式“。該模式下,只允許在同一個包中進行訪
問。
9.JVM 的內存結構,Eden 和 Survivor 比例。
eden 和 survior 是按8比1分配的
http://blog.csdn.net/lojze_ly/article/details/49456255
10.jvm 中一次完整的 GC 流程是怎樣的,對象如何晉升到老年代,說說你知道的幾種主要的jvm 參數。
11.你知道哪幾種垃圾收集器,各自的優缺點,重點講下 cms,包括原理,流程,優缺點
12.垃圾回收算法的實現原理。
13.當出現了內存溢出,你怎么排錯。
14.JVM 內存模型的相關知識了解多少,比如重排序,內存屏障,happen-before,主內存,工作內存等。
15.簡單說說你了解的類加載器。
16.講講 JAVA 的反射機制。
由于篇幅限制,需要剩下問題答案的朋友可以私信我“java面試題”獲取答案
喜歡這篇文章的話,可以為作者點個贊同,點下關注,每天都會分享Java相關文章!
還有不定時的福利贈送,包括整理的學習資料,源碼等~~
總結
以上是生活随笔為你收集整理的java default修饰符_2019最新java面试题附答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python调用perl_在Perl、S
- 下一篇: modbus 0x06 连续写_这篇很实