沒有什麼套路,就是直接上乾貨!!!最新Java面試題彙總整理連答案一起分享給你們,但願對你們有幫助~html
以後還會推出Java面試題系列文章,敬請關注!java
按照技術模塊:Java熱點技術、多線程、微服務、JVM、Redis、消息隊列、SQL相關的面試題。不要走開,稍後更精彩!面試
一、面向對象的特色有哪些?算法
抽象、繼承、封裝、多態。
五、數組有沒有length()方法?String有沒有length()方法?segmentfault
數組沒有length()方法,它有length屬性。
String有length()方法。
集合求長度用size()方法。
六、Java支持的數據類型有哪些?什麼是自動拆裝箱?設計模式
父類靜態成員和靜態代碼塊 -> 子類靜態成員和靜態代碼塊 -> 父類非靜態成員和非靜態代碼塊 -> 父類構造方法 -> 子類非靜態成員和非靜態代碼塊 -> 子類構造方法
十一、String和StringBuilder、StringBuffer的區別?
1五、ArrayList 和 LinkedList 有什麼區別?
1六、簡單介紹Java異常框架?Error與Exception有什麼區別?
1七、java中的throw 和 throws關鍵字有什麼區別?
1九、final, finally, finalize有什麼區別?
2二、如何判斷一個對象是否存活?(或者GC對象的斷定方法)?
2九、簡述java內存分配與回收策率以及Minor GC和Major GC?
3二、解釋一下鎖的一些基本概念:可重入鎖、可中斷鎖、公平鎖、讀寫鎖?
3三、synchronized什麼狀況下會釋放鎖?
3六、Java CAS(Compare And Swap) 無鎖算法?
CAS(Compare And Swap) 無鎖算法: CAS是樂觀鎖技術,當多個線程嘗試使用CAS同時更新同一個變量時,只有其中一個線程能更新變量的值,而其它線程都失敗,失敗的線程並不會被掛起,而是被告知此次競爭中失敗,並能夠再次嘗試。CAS有3個操做數,內存值V,舊的預期值A,要修改的新值B。當且僅當預期值A和內存值V相同時,將內存值V修改成B,不然什麼都不作。
3七、線程池的做用有哪些?
線程池的做用: 在程序啓動的時候就建立若干線程來響應處理,它們被稱爲線程池,裏面的線程叫工做線程
經常使用線程池:ExecutorService 是主要的實現類,其中經常使用的有
40、哪些項目中用到了Java反射機制?
4二、你瞭解哪些設計模式,列舉幾個?jdk中用到了哪些設計模式?
4七、簡單介紹原生jdbc執行sql過程?
4八、char 型變量中能不能存貯一箇中文漢字,爲何?
char類型能夠存儲一箇中文漢字,由於Java中使用的編碼是Unicode,一個char類型佔2個字節(16比特),因此放一箇中文是沒問題的。
4九、兩個對象值相同(x.equals(y) == true),但卻可有不一樣的hash code,這句話對不對?
50、構造器(constructor)是否可被重寫(override)?
「Constructor(構造器)不能被繼承,因此不能被override(重寫),可是能夠被overloading(重載)。
5四、有了synchronized,還須要volatile作什麼事?
(強烈推薦兩本書《 java併發編程的藝術》、《 深刻理解Java虛擬機》)
Synchronized和Volatile的區別:
一、Volatile 僅能使用在變量級別;
Synchronized則可使用在變量、方法、和同步代碼塊等類級別的。
二、Volatile僅能實現變量的修改可見性和有序性,並不能保證原子性(複合操做的原子性);
Synchronized則能夠保證變量的可見性、有序性、原子性。
三、Volatile不會形成線程的阻塞;
Synchronized可能會形成線程的阻塞。
四、Volatile標記的變量不會被編譯器優化(由於這是由cpu指令完成);
Synchronized標記的變量能夠被編譯器優化(JAVA1.6後性能優化不少)。
7六、爲何要用Redis?
由於傳統的關係型數據庫如Mysql已經不能適用全部的場景了,好比秒殺的庫存扣減,APP首頁的訪問流量高峯等等,都對數據庫提出了更高的要求,因此引入了緩存中間件,目前市面上比較經常使用的緩存中間件有Redis 和 Memcached 不過中和考慮了他們的優缺點,最後選擇了Redis。
8六、不用synchronized和lock能實現線程安全的單例嗎?
8八、ArrayList和LinkedList和Vector的區別·
90、Arrays.asList得到的List使用時須要注意什麼
9一、List和原始類型List之間的區別?
在編譯時編譯器不會對原始類型進行類型安全檢查,卻會對帶參數的類型進行檢查。