1111111 面試題 自測

Java基礎

一、List 和 Set 的區別html

二、HashSet 是如何保證不重複的redis

三、HashMap 是線程安全的嗎,爲何不是線程安全的(最好畫圖說明多線程環境下不安全)?算法

四、HashMap 的擴容過程數據庫

五、HashMap 1.7 與 1.8 的 區別,說明 1.8 作了哪些優化,如何優化的?apache

    1.7在極端狀況下(保存多全部元素都hash到一個位置,時間複雜度退化爲O(n))segmentfault

    1.8將鏈式方式在元素大於8個的時候保存到紅黑樹中。設計模式

六、final finally finalizeapi

七、強引用 、軟引用、 弱引用、虛引用數組

八、Java反射緩存

九、Arrays.sort 實現原理和 Collection.sort 實現原理

    不管是Collections.sort方法或者是Arrays.sort方法,底層實現都是TimSort實現的,這是jdk1.7新增的,之前是歸併排序。TimSort算法就是找到已經排好序數據的子序列,而後對剩餘部分排序,而後合併起來

十、LinkedHashMap的應用

十一、cloneable接口實現原理

    若是一個類重寫了 Object 內定義的 clone() ,須要同時實現 Cloneable 接口(雖然這個接口內並無定義 clone() 方法),不然在調用 clone() 時會報 CloneNotSupportedException 異常,也就是說, Cloneable 接口只是個合法調用 clone() 的標識(marker-interface)。

事實上,若想實現對象的克隆,你不得不重寫 Object 的 clone() 方法,還得實現 Cloneable 接口,這樣就有點麻煩了。

簡單的作法,藉助 Apache Commons 能夠直接實現:

簡單的克隆,也能夠經過 copy-constructor (拷貝構造方法) 實現,詳情參考 Effective Java 做者 Josh Bloch 的這篇訪談:Copy Constructor Versus Cloning

其中也談到了 Cloneable 接口的不少缺點。

Cloneable 自己就是個比較雞肋的接口,儘可能避免使用。

十二、異常分類以及處理機制

1三、wait和sleep的區別

1四、數組在內存中如何分配

 

Java 併發

一、synchronized 的實現原理以及鎖優化?

二、volatile 的實現原理?

三、Java 的信號燈?

四、synchronized 在靜態方法和普通方法的區別?

五、怎麼實現全部線程在等待某個事件的發生纔會去執行?

六、CAS?CAS 有什麼缺陷,如何解決?

七、synchronized 和 lock 有什麼區別?

八、Hashtable 是怎麼加鎖的 ?

九、HashMap 的併發問題?

十、ConcurrenHashMap 介紹?1.8 中爲何要用紅黑樹?

十一、併發包中 A*S (*爲鍵盤上O👉那個字母,傻B系統)

十二、如何檢測死鎖?怎麼預防死鎖?

    將線程的等待資源保存成圖,看是否是有環圖

    http://blog.csdn.net/ls5718/article/details/51896159

1三、Java 內存模型?

1四、如何保證多線程下 i++ 結果正確?

1五、線程池的種類,區別和使用場景?

1六、分析線程池的實現原理和線程的調度過程?

1七、線程池如何調優,最大數目如何確認??

1八、ThreadLocal原理,用的時候須要注意什麼?

1九、CountDownLatch 和 CyclicBarrier 的用法,以及相互之間的差異?

20、LockSupport工具??

    https://segmentfault.com/a/1190000008420938

2一、Condition接口及其實現原理??

2二、Fork/Join框架的理解??

2三、分段鎖的原理,鎖力度減少的思考

2四、八種阻塞隊列以及各個阻塞隊列的特性??

 

Spring

一、BeanFactory 和 FactoryBean?

二、Spring IOC 的理解,其初始化過程?

三、BeanFactory 和 ApplicationContext?

四、Spring Bean 的生命週期,如何被管理的?

五、Spring Bean 的加載過程是怎樣的?

六、若是要你實現Spring AOP,請問怎麼實現?

七、若是要你實現Spring IOC,你會注意哪些問題?

八、Spring 是如何管理事務的,事務管理機制?

九、Spring 的不一樣事務傳播行爲有哪些,幹什麼用的?

十、Spring 中用到了那些設計模式?

十一、Spring MVC 的工做原理?

十二、Spring 循環注入的原理?

1三、Spring AOP的理解,各個術語,他們是怎麼相互工做的?

1四、Spring 如何保證 Controller 併發的安全?

 

Netty

一、BIO、NIO和AIO

二、Netty 的各大組件

三、Netty的線程模型

四、TCP 粘包/拆包的緣由及解決方法

五、瞭解哪幾種序列化協議?包括使用場景和如何去選擇

六、Netty的零拷貝實現

七、Netty的高性能表如今哪些方面

 

 

分佈式相關

一、Dubbo的底層實現原理和機制

二、描述一個服務從發佈到被消費的詳細過程

三、分佈式系統怎麼作服務治理

四、接口的冪等性的概念

        冪等接口的內部實現須要有對內保護機制, 通常狀況是用相似於樂觀鎖的版本機制.版本重點是體現時間的前後.

        或者將非等冪操做轉化成等冪實現如:

            當用戶點擊贊同時,將答案的贊同數量+1。

            改成:
            當用戶點擊贊同時,確保答案贊同表中存在一條記錄,用戶、答案。
            贊同數量由答案贊同表統計出來。

五、消息中間件如何解決消息丟失問題

六、Dubbo的服務請求失敗怎麼處理

七、重連機制會不會形成錯誤

八、對分佈式事務的理解

九、如何實現負載均衡,有哪些算法能夠實現?

十、Zookeeper的用途,選舉的原理是什麼?

十一、數據的垂直拆分水平拆分。

十二、zookeeper原理和適用場景

1三、zookeeper watch機制

1四、redis/zk節點宕機如何處理

1五、分佈式集羣下如何作到惟一序列號

1六、如何作一個分佈式鎖

1七、用過哪些隊列,怎麼用的,和其餘隊列比較有什麼優缺點,隊列的鏈接是線程安全的嗎

1八、隊列系統的數據如何保證不丟失

1九、列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題

20、zookeeper的選舉策略

2一、全局ID

 

 

數據庫

一、mys*l分頁有什麼優化

二、悲觀鎖、樂觀鎖

三、組合索引,最左原則

四、mys*l 的表鎖、行鎖

五、mys*l 性能優化

六、mys*l的索引分類:B+,hash;什麼狀況用什麼索引

七、事務的特性和隔離級別

 

 

緩存

一、Redis用過哪些數據數據,以及Redis底層怎麼實現

二、Redis緩存穿透,緩存雪崩

三、如何使用Redis來實現分佈式鎖

四、Redis的併發競爭問題如何解決??

五、Redis持久化的幾種方式,優缺點是什麼,怎麼實現的

六、Redis的緩存失效策略

七、Redis集羣,高可用,原理

八、Redis緩存分片??

九、Redis的數據淘汰策略

 

 

JVM

一、詳細jvm內存模型

二、講講什麼狀況下回出現內存溢出,內存泄漏? 

三、說說Java線程棧

四、JVM 年輕代到年老代的晉升過程的判斷條件是什麼呢?

五、JVM 出現 full GC 很頻繁,怎麼去線上排查問題?

六、類加載爲何要使用雙親委派模式,有沒有什麼場景是打破了這個模式?

七、類的實例化順序

八、JVM垃圾回收機制,什麼時候觸發MinorGC等操做

九、JVM 中一次完整的 GC 流程(從 ygc 到 fgc)是怎樣的

十、各類回收器,各自優缺點,重點CMS、G1

十一、各類回收算法

十二、OOM錯誤,stackoverflow錯誤,permgen space錯誤

 

---------------------------

線程池相關

  • 單機上一個線程池正在處理服務,若是突然斷電了怎麼辦(正在處理和阻塞隊列裏的請求怎麼處理)?

  • 爲何要使用線程池?

  • 線程池有什麼做用?

  • 說說幾種常見的線程池及使用場景。

  • 線程池都有哪幾種工做隊列?

  • 怎麼理解無界隊列和有界隊列?

  • 線程池中的幾種重要的參數及流程說明。

JVM相關

  • 說一下對jvm的理解,jvm的組成部分,各個部分的存儲內容以及常見的jvm的問題排查步驟。

  • 對JVM熟不熟悉?簡單說說類加載過程,裏面執行的那些操做?

  • JVM方法區存儲內容 是否會動態擴展 是否會出現內存溢出 出現的緣由有哪些。

  • 介紹介紹CMS。

  • 介紹介紹G1。

  • 爲何jdk8用metaspace數據結構用來替代perm?

  • 簡單談談堆外內存以及你的理解和認識。

  • JVM的內存模型的理解,threadlocal使用場景及注意事項?

  • JVM老年代和新生代的比例?

  • jstack,jmap,jutil分別的意義?如何線上排查JVM的相關問題?

  • Java虛擬機中,數據類型能夠分爲哪幾類?

  • 怎麼理解棧、堆?堆中存什麼?棧中存什麼?

  • 爲何要把堆和棧區分出來呢?棧中不是也能夠存儲數據嗎?

  • 在Java中,什麼是是棧的起始點,同是也是程序的起始點?

  • 爲何不把基本類型放堆中呢?

  • Java中的參數傳遞時傳值呢?仍是傳引用?

  • Java中有沒有指針的概念?

  • Java中,棧的大小經過什麼參數來設置?

  • 一個空Object對象的佔多大空間?

  • 對象引用類型分爲哪幾類?

  • 講一講垃圾回收算法。

  • 如何解決內存碎片的問題?

  • 如何解決同時存在的對象建立和對象回收問題?

  • 講一講內存分代及生命週期。

  • 什麼狀況下觸發垃圾回收?

  • 如何選擇合適的垃圾收集算法?

  • JVM中最大堆大小有沒有限制?

  • 堆大小經過什麼參數設置?

  • JVM有哪三種垃圾回收器?

  • 吞吐量優先選擇什麼垃圾回收器?響應時間優先呢?

  • 如何進行JVM調優?有哪些方法?

  • 如何理解內存泄漏問題?有哪些狀況會致使內存泄露?如何解決?

相關文章
相關標籤/搜索