搞清楚這 10 幾個後端面試問題,工作穩了!

面試過程是一個由淺入深的過程,面試官先給求職者拋出一個相對簡單的問題,然後通過一環套一環的追問深入考察求職者對知識點的理解掌握程度。

如下是一個實際的關於redis知識點的面試場景:

面試官:你用過redis嗎?
你:用過
面試官:你知道redis是單線程還是多線程呢?
你:在4.0之前是單線程,但是在4.0之後開始支持多線程了。
面試官:爲什麼redis使用了單線程還是那麼快?
你:單線程可以避免多線程競爭,內存操作,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溢出?
  • 如何設計實現一個限流組件?
  • 如何讓系統能抗住預約搶購活動的流量壓力?

以上就是我推薦給你們的十幾道面試題,你都能答好嗎?歡迎留言評論喲!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章