面試過程是一個由淺入深的過程,面試官先給求職者拋出一個相對簡單的問題,而後經過一環套一環的追問深刻考察求職者對知識點的理解掌握程度。java
以下是一個實際的關於redis知識點的面試場景:mysql
面試官: 你用過redis嗎?你:用過面試
面試官:你知道redis是單線程仍是多線程呢?redis
你:在4.0以前是單線程,可是在4.0以後開始支持多線程了。算法
面試官:爲何redis使用了單線程仍是那麼快?sql
你:單線程能夠避免多線程競爭,內存操做,I/O多路複用機制...數據庫
面試官:Redis是如何保證數據不丟失的?編程
你:redis持久化主要經過AOF、RDB、以及4.0後提供的混合持久化方式實現的緩存
......安全
經過上面的例子能夠看出,一個知識點能夠牽扯出不少關聯的小知識點,而要掌握全部的面試點是很難的,因此我們不要輕易說吊打面試官了,一不當心就會被面試官吊起來打,畢竟問題永遠比方法多,對吧。
本文結合本人蔘與的相關面試以及做爲面試官對別人的面試,精心挑選十幾道高級開發面試題,每一個題目都涵蓋不少知識點。
若是你是面試官,能夠將此文涉及的面試點歸入本身的面試題庫,藉此考察求職者的技術深度;
若是你是求職者,能夠經過此文的面試點準備面試,按我我的的經驗來講,雖不說100%經過,若是都能答好的話經過幾率起碼85%以上。
若是你不是面試官,也不是求職者,也能夠經過此文的面試點夯實技術水平,以文促學,帶着問題學技術會讓你事半功倍。
數據庫篇
MySQL數據庫相關
-
MySQL有哪些常見的存儲引擎?
-
索引的原理是什麼?
-
MySQL三種日誌分別起到什麼做用?(redoLog,undoLog,binLog)
-
爲何選擇B+樹索引?
-
什麼狀況下會出現索引失效?
-
如何查看執行計劃?
-
如何優化SQL查詢?
-
MySQL主從複製原理?
-
數據庫死鎖的緣由?如何快速定位並解決?
事務隔離級別
-
事務有哪些隔離級別?
-
每種隔離級別會致使什麼問題?
-
mysql 和 oracle默認狀況下分別採用哪一種隔離級別?
-
mysql如何解決幻讀的?
中間件篇
MQ的相關問題
-
你用過消息隊列嗎?用了哪一個消息隊列?
-
在使用MQ的時候怎麼確保消息 100% 不丟失?
-
怎麼解決消息的重複消費問題?
-
如何實現順序消息?
-
如何解決引入消息後的事務問題?
分庫分表相關問題
-
你用過度庫分表嗎?
-
如何實現單個維度的非sharding-key 的查詢問題?好比經過userID 做爲 sharding-key,那麼如何實現基於userName進行查詢?(映射法、基因法)
-
如何實現多個維度的多個字段非 sharding-key 如何查詢?時間、用戶名、類別等...
-
多維度查詢須要配合其餘查詢引擎,那麼如何實現數據同步?如何保證雙寫的一致性?
-
不少狀況下並非一開始就實現分庫分表,等咱們須要分庫分表的時候如何進行數據遷移?
Redis
-
用過Redis嗎?Redis支持哪些常見的數據結構?
-
Redis的線程模型
-
Redis如何保證數據不丟失的(如何實現持久化)?
-
AOF 和 RDB的實現原理?
-
Redis如何實現高可用?
-
什麼是緩存穿透,緩存擊穿,緩存雪崩?分別如何預防解決?
分佈式鎖相關問題
-
用過度布式鎖嗎?用什麼實現的分佈式鎖?
-
有沒有用過基於redis分佈式鎖?有沒有用過基於Zookeeper的分佈式鎖?
-
如何給鎖設置合理的加鎖時間?鎖超時了怎麼辦?Redisson看門狗的原理?
-
Redis如何解決集羣狀況下分佈式鎖的可靠性?
-
RedLock算法的原理?
併發編程篇
鎖相關
-
說一下synchronized 底層實現原理?
-
說一下synchronized、volatile、CAS 的區別?
-
synchronized 和 Lock 有什麼區別?
-
什麼是CAS,CAS的原理?
-
CAS有什麼缺點?如何解決CAS中常見的ABA問題?
-
AQS的原理,AQS的實現過程是什麼?
-
有沒有用過讀寫鎖ReentrantReadWriteLock,說一下ReentrantReadWriteLock的原理?
線程池相關
-
有哪幾類線程池?如何建立線程池?
-
解釋一下線程池的核心參數,線程池的執行過程?
-
若是提交任務時,線程池隊列已滿,這時候會發生什麼?
-
線程池線上參數如何優化?
分佈式篇
分佈式理論
-
說說你對CAP理論的理解?
-
說說你用過的註冊中心,分別使用了什麼模型?(AP,CP)
-
說說你對BASE理論的理解?
分佈式事務相關
-
如何解決分佈式事務問題?你用過哪些解決分佈式事務的方案?
-
說一下對2PC,3PC協議的理解?
-
有沒有用過SEATA,SEATA的實現過程是什麼?
-
如何基於MQ實現最終一致性?
實戰篇
-
如何設計接口並保證他們的安全?
-
如何快速定位CPU溢出?
-
如何設計實現一個限流組件?
-
如何讓系統能抗住預定搶購活動的流量壓力?
以上就是我推薦給大家的十幾道面試題,你都能答好嗎?歡迎留言評論喲!
本文分享自微信公衆號 - JAVA日知錄(javadaily)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。