Java面試題彙總

沒有什麼套路,就是直接上乾貨!!!最新Java面試題彙總整理連答案一起分享給你們,但願對你們有幫助~html

以後還會推出Java面試題系列文章,敬請關注!java

按照技術模塊:Java熱點技術、多線程、微服務、JVM、Redis、消息隊列、SQL相關的面試題。不要走開,稍後更精彩!面試

一、面向對象的特色有哪些?算法

抽象、繼承、封裝、多態。

二、接口和抽象類有什麼聯繫和區別?sql

三、重載和重寫有什麼區別?數據庫

四、java有哪些基本數據類型?編程

五、數組有沒有length()方法?String有沒有length()方法?segmentfault

數組沒有length()方法,它有length屬性。
String有length()方法。
集合求長度用size()方法。

六、Java支持的數據類型有哪些?什麼是自動拆裝箱?設計模式

七、int 和 Integer 有什麼區別?數組

八、Java類的實例化順序?

父類靜態成員和靜態代碼塊 -> 子類靜態成員和靜態代碼塊 -> 父類非靜態成員和非靜態代碼塊 -> 父類構造方法 -> 子類非靜態成員和非靜態代碼塊 -> 子類構造方法

九、什麼是值傳遞和引用傳遞?

十、String能被繼承嗎?爲何?

十一、String和StringBuilder、StringBuffer的區別?

  • StringBuilder:適用於單線程下在字符緩衝區進行大量操做的狀況(是線程不安全的)
  • StringBuffer:適用多線程下在字符緩衝區進行大量操做的狀況(通常不多)(是線程安全的)
  • 首先說運行速度,或者說是執行速度,在這方面運行速度快慢爲:StringBuilder > StringBuffer > String

十二、Java集合框架的基礎接口有哪些?

1三、Java集合框架是什麼?說出一些集合框架的優勢?

1四、HashMap 與HashTable有什麼區別?

1五、ArrayList 和 LinkedList 有什麼區別?

1六、簡單介紹Java異常框架?Error與Exception有什麼區別?

1七、java中的throw 和 throws關鍵字有什麼區別?

1八、列舉幾個你瞭解的幾個常見的運行時異常?

1九、final, finally, finalize有什麼區別?

20、描述Java內存模型?

2一、java中垃圾收集的方法有哪些?

2二、如何判斷一個對象是否存活?(或者GC對象的斷定方法)?

2三、Java GC是在何時,對什麼東西,作了什麼事情?

2四、什麼是類加載器雙親委派模型機制?

2五、類加載器有哪些?

2六、描述類加載器工做機制?

2七、分別寫出堆內存溢出與棧內存溢出的程序?

2八、Java 8 內存模型進行了哪些改進?

2九、簡述java內存分配與回收策率以及Minor GC和Major GC?

30、JVM,JDK和JRE有什麼區別與聯繫?

3一、Java線程同步的方式有哪些?

3二、解釋一下鎖的一些基本概念:可重入鎖、可中斷鎖、公平鎖、讀寫鎖?

3三、synchronized什麼狀況下會釋放鎖?

  1. 獲取鎖的線程執行完了該代碼塊,而後線程釋放對鎖的佔有;
  2. 線程執行發生異常,此時JVM會讓線程自動釋放鎖。
  3. 調用wait方法,在等待的時候當即釋放鎖,方便其餘的線程使用鎖.

3四、synchronized和lock有什麼區別?

3五、使用過哪些數據庫鏈接池,分別有什麼優勢和缺點?

3六、Java CAS(Compare And Swap) 無鎖算法?

CAS(Compare And Swap) 無鎖算法: CAS是樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知此次競爭中失敗,並能夠再次嘗試。CAS有3個操做數,內存值V,舊的預期值A,要修改的新值B。當且僅當預期值A和內存值V相同時,將內存值V修改成B,不然什麼都不作。

3七、線程池的做用有哪些?

線程池的做用: 在程序啓動的時候就建立若干線程來響應處理,它們被稱爲線程池,裏面的線程叫工做線程

  1. 下降資源消耗。經過重複利用已建立的線程下降線程建立和銷燬形成的消耗。
  2. 提升響應速度。當任務到達時,任務能夠不須要等到線程建立就能當即執行。
  3. 提升線程的可管理性。

經常使用線程池:ExecutorService 是主要的實現類,其中經常使用的有

  • Executors.newSingleThreadPool(),
  • newFixedThreadPool(),
  • newCachedTheadPool(),
  • newScheduledThreadPool()。

3八、反射建立類實例的三種方式?

3九、反射機制有哪些優勢和缺點?

40、哪些項目中用到了Java反射機制?

  1. jdbc中有一行代碼:Class.forName('com.MySQL.jdbc.Driver.class').newInstance();
  2. 不少框架都用到反射機制,hibernate,struts都是用反射機制實現的。

4一、Java 反射機制的做用?

4二、你瞭解哪些設計模式,列舉幾個?jdk中用到了哪些設計模式?

4三、單例模式用java有哪幾種實現方式?

4四、Java元註解有哪些,都有什麼做用?

4五、jdk自帶了哪些註解,有什麼做用?

4六、Java8有哪些新特性?

4七、簡單介紹原生jdbc執行sql過程?

  1. class.forName()加載數據驅動
  2. DriverManager.getConnection()獲取數據庫鏈接對象。
  3. 根據SQL或sql會話對象,有兩種方式Statement、PreparedStatement。
  4. 執行sql處理結果集,若是有參數就設置參數。
  5. 關閉結果集,關閉會話,關閉資源。

4八、char 型變量中能不能存貯一箇中文漢字,爲何?

char類型能夠存儲一箇中文漢字,由於Java中使用的編碼是Unicode,一個char類型佔2個字節(16比特),因此放一箇中文是沒問題的。

4九、兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?

50、構造器(constructor)是否可被重寫(override)?

「Constructor(構造器)不能被繼承,因此不能被override(重寫),可是能夠被overloading(重載)。

5一、什麼是線程安全?

5二、什麼是死鎖?

5三、synchronized的實現原理是什麼?

5四、有了synchronized,還須要volatile作什麼事?

5五、synchronized的鎖優化是怎麼處理的?

(強烈推薦兩本書《 java併發編程的藝術》、《 深刻理解Java虛擬機》)
Synchronized和Volatile的區別:
一、Volatile 僅能使用在變量級別;
Synchronized則可使用在變量、方法、和同步代碼塊等類級別的。
二、Volatile僅能實現變量的修改可見性和有序性,並不能保證原子性(複合操做的原子性);
Synchronized則能夠保證變量的可見性、有序性、原子性。
三、Volatile不會形成線程的阻塞;
Synchronized可能會形成線程的阻塞。
四、Volatile標記的變量不會被編譯器優化(由於這是由cpu指令完成);
Synchronized標記的變量能夠被編譯器優化(JAVA1.6後性能優化不少)。

5六、JMM是什麼?

5七、Java併發包都有哪些?

5八、什麼是fail-fast?

5九、什麼是fail-safe?

60、什麼是CopyOnWrite?

6一、什麼是AQS呢?

6二、什麼是CAS呢?

6三、樂觀鎖是怎樣的?

6四、樂觀鎖悲觀鎖區別是什麼?

6五、數據庫如何實現悲觀鎖和樂觀鎖?

6六、數據庫鎖和隔離級別有什麼關係?

6七、數據庫鎖和索引有什麼關係?

6八、什麼是聚簇索引?

6九、什麼是非聚簇索引?

70、索引最左前綴是什麼?

7一、什麼是B+樹索引?(有點長,值得一看)

7二、什麼是聯合索引?

7三、什麼是回表?

7四、分佈式鎖有了解嗎?

7五、Redis怎麼實現分佈式鎖?

7六、爲何要用Redis?

由於傳統的關係型數據庫如Mysql已經不能適用全部的場景了,好比秒殺的庫存扣減,APP首頁的訪問流量高峯等等,都對數據庫提出了更高的要求,因此引入了緩存中間件,目前市面上比較經常使用的緩存中間件有Redis 和 Memcached 不過中和考慮了他們的優缺點,最後選擇了Redis。

7七、Redis和memcache區別是什麼?

7八、Zookeeper怎麼實現分佈式鎖?

7九、什麼是Zookeeper?(漫畫版)

80、什麼是CAP?

8一、什麼是BASE?和CAP什麼區別?

8二、CAP怎麼推導?如何取捨?

8三、分佈式系統怎麼保證數據一致性?

8四、什麼是分佈式事務?分佈式事務方案?

8五、線程安全的單例?

8六、不用synchronized和lock能實現線程安全的單例嗎?

8七、什麼是Paxos算法?

8八、ArrayList和LinkedList和Vector的區別·

8九、談一下計模式遵循的面向對象設計原則!

90、Arrays.asList得到的List使用時須要注意什麼

9一、List和原始類型List之間的區別?

在編譯時編譯器不會對原始類型進行類型安全檢查,卻會對帶參數的類型進行檢查。

9二、List<?>和List<T>之間的區別是什麼?

9三、synchronized是如何實現的?

9四、BIO、NIO和AIO的區別、三種IO的用法與原理

9五、ConcurrentSkipListMap

9六、String.valueOf和Integer.toString的區別

9七、Integer的緩存機制

9八、Set如何保證元素不重複?

9九、Java中如何保證線程安全?

100、你使用過JVM相關的參數,列舉幾個

相關文章
相關標籤/搜索