Java程序員2020剛開始找工作就碰壁?建議看完這份春招面試大綱

本文轉載自:Java程序員2020剛開始找工作就碰壁?建議看完這份春招面試大綱


前言

一年之計在於春 金三銀四已經要到來,2019的新的開始,作爲一個開發人員,你是否面上了自己理想的公司,薪資達到心中理想的高度?

面試:如果不準備充分的面試,完全是浪費時間,更是對自己的不負責。

今天給大家分享下我整理的Java架構面試專題及答案,其中大部分都是大企業面試常問的面試題,可以對照這查漏補缺,當然了,這裏所列的肯定不可能覆蓋全部方式,不過也希望能對即將找工作的朋友起到一些幫助!

Java面試的重點:

數據結構與算法,JVM內存結構、垃圾回收器、回收算法、GC、併發編程相關(多線程、線程池等)、NIO/BIO、性能優化、設計模式、Spring框架:分佈式相關:Redis緩存、一致Hash算法、分佈式存儲、負載均衡等,微服務以及Docker容器等。在這由於文字很多,總結了java面試所涉及到的常問範圍及常問面試題免費分享給大家

面試常問的面試專題

一、JVM與性能優化

  1. 描述一下 JVM 加載 Class 文件的原理機制?
  2. 什麼是類加載器?
  3. 類加載器有哪些?
  4. 什麼是tomcat類加載機制?
  5. 類加載器雙親委派模型機制?
  6. Java 內存分配?
  7. Java 堆的結構是什麼樣子的?
  8. 簡述各個版本內存區域的變化?
  9. 說說各個區域的作用?
  10. Java 中會存在內存泄漏嗎,簡述一下?
  11. Java 類加載過程?
  12. 什麼是GC? 爲什麼要有 GC?
  13. 簡述一下Java 垃圾回收機制?
  14. 如何判斷一個對象是否存活?
  15. 垃圾回收的優點和原理,並考慮 2 種回收機制?基本原理是什麼?
  16. 深拷貝和淺拷貝?
  17. 什麼是分佈式垃圾回收(DGC)?它是如何工作的?
  18. 在 Java 中,對象什麼時候可以被垃圾回收?
  19. 簡述Minor GC 和 Major GC?
  20. Java 中垃圾收集的方法有哪些?
  21. 講講你理解的性能評價及測試指標?
  22. 常用的性能優化方式有哪些?
  23. 說說分佈式緩存和一致性哈希?
  24. 什麼是GC調優?

二、Redis

  1. redis數據結構有哪些?
  2. Redis緩存穿透,緩存雪崩?
  3. 如何使用Redis來實現分佈式鎖?
  4. Redis的併發競爭問題如何解決?
  5. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的?
  6. Redis的緩存失效策略?
  7. Redis集羣,高可用,原理?
  8. Redis緩存分片?
  9. Redis的數據淘汰策略?
  10. redis隊列應用場景?
  11. 分佈式使用場景(儲存session)?

三、網絡編程

  1. TCP建立連接和斷開連接的過程?
  2. HTTP協議的交互流程• HTTP和HTTPS的差異,SSL的交互流程?
  3. TCP的滑動窗口協議有什麼用?
  4. HTTP協議都有哪些方法?
  5. Socket交互的基本流程?
  6. 講講tcp協議(建連過程,慢啓動,滑動窗口,七層模型)?
  7. webservice協議(wsdl/soap格式,與restt辦議的區別)?
  8. 說說Netty線程模型,什麼是零拷貝?
  9. TCP三次握手、四次揮手?
  10. DNS解析過程?
  11. TCP如何保證數據的可靠傳輸的?

四、設計模式與重構

  1. 說說幾個常見的設計模式(23種設計模式)?
  2. 設計一個工廠的包的時候會遵循哪些原則?
  3. 列舉一個使用了 Visitor/ Decorator模式的開源項目/庫?
  4. 如何實現一個單例?
  5. 代理模式(動態代理)?
  6. 單例模式(懶漢模式,惡漢模式,併發初始化如何解決, volatile與lock的使用)?
  7. JDK源碼裏面都有些什麼讓你印象深刻的設計模式使用,舉例看看?

五、分佈式

  1. 什麼是CAP定理?
  2. 說說CAP理論和BASE理論?
  3. 什麼是最終一致性?最終一致性實現方式?
  4. 什麼是一致性Hash?
  5. 講講分佈式事務?
  6. 如何實現分佈式鎖?
  7. 如何實現分佈式 Session?
  8. 如何保證消息的一致性?
  9. 負載均衡的理解?
    10 正向代理和反向代理?
  10. CDN實現原理?
  11. 怎麼提升系統的QPS和吞吐?
  12. Dubbo的底層實現原理和機制?
  13. 描述一個服務從發佈到被消費的詳細過程?
  14. 分佈式系統怎麼做服務治理?
  15. 消息中間件如何解決消息丟失問題?
  16. Dubbo的服務請求失敗怎麼處理?
  17. 對分佈式事務的理解?
  18. 如何實現負載均衡,有哪些算法可以實現?
  19. Zookeeper的用途,選舉的原理是什麼?
  20. 講講數據的垂直拆分水平拆分?
  21. zookeeper原理和適用場景?
  22. zookeeper watch機制?
  23. redis/zk節點宕機如何處理?
  24. 分佈式集羣下如何做到唯一序列號?
  25. 用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連接是線程安全的嗎?
  26. MQ系統的數據如何保證不丟失?
  27. 列舉出能想到的數據庫分庫分表策略?

六、數據結構與算法

  1. 鏈表與數組?
  2. 隊列和棧,出錢與入棧?
  3. 鏈表的刪除、插入、反向?
  4. Hash表的hash函數,衝突解決方法有哪些?
  5. 各種俳序:冒泡、選擇、插入、希爾、歸併、快排、堆俳、桶排、基數的原理、平均時間複雜度、最壞時間複雜度、空間複雜度、是否穩定?
  6. 對冒泡與快排的改進?
  7. 二分查找,與變種二分查找?
  8. 二叉樹、B+樹、AVL樹、紅黑樹、哈夫曼樹?
  9. 二叉樹的前中後續遍歷:遞歸與非遞歸寫法,層序遍歷算法?
  10. KMP算法?
  11. 排列組合問題?
  12. 貪心算法、分治算法?

七、併發編程

  1. 跟 Synchronized 相比,可重入鎖 ReentrantLock 其實現原理有什麼不同?
  2. 那麼請談談 AQS 框架是怎麼回事兒?
  3. 請儘可能詳盡地對比下 Synchronized 和 ReentrantLock 的異同。
  4. ReentrantLock 是如何實現可重入性的?
  5. 除了 ReetrantLock,你還接觸過 JUC 中的哪些併發工具?
  6. 請談談 ReadWriteLock 和 StampedLock。
  7. 如何讓 Java 的線程彼此同步?你瞭解過哪些同步器?請分別介紹下。
  8. CyclicBarrier 和 CountDownLatch 看起來很相似,請對比下呢?
  9. Synchronized 用過嗎,其原理是什麼?
  10. 你剛纔提到獲取對象的鎖,這個“鎖”到底是什麼?如何確定對象的鎖?
  11. 什麼是可重入性,爲什麼說 Synchronized 是可重入鎖?
  12. JVM 對 Java 的原生鎖做了哪些優化?
  13. 爲什麼說 Synchronized 是非公平鎖?
  14. 什麼是鎖消除和鎖粗化?
  15. 爲什麼說 Synchronized 是一個悲觀鎖?樂觀鎖的實現原理又是什麼?什麼是
  16. 樂觀鎖一定就是好的嗎?
  17. 什麼是 Java 的內存模型,Java 中各個線程是怎麼彼此看到對方的變量的?
  18. 請談談 volatile 有什麼特點,爲什麼它能保證變量對所有線程的可見性?
  19. 請對比下 volatile 對比 Synchronized 的異同。
  20. 請談談 ThreadLocal 是怎麼解決併發安全的?
  21. 很多人都說要慎用 ThreadLocal,談談你的理解,使用 ThreadLocal 需要注意些什麼?
  22. Java 中的線程池是如何實現的?
  23. 創建線程池的幾個核心構造參數?
  24. 線程池中的線程是怎麼創建的?
  25. 如何在 Java 線程池中提交線程?

八、開源框架

  1. IOC和DI是什麼?
  2. Spring IOC的理解,其初始化過程?
  3. BeanFactory 和 FactoryBean的區別?
  4. BeanFactory和ApplicationContext的區別?
  5. ApplicationContext上下文的生命週期?
  6. Spring Bean的生命週期?
  7. Spring AOP的實現原理?
  8. Spring是如何管理事務的,事務管理機制?
  9. Spring的不同事務傳播行爲有哪些,幹什麼閈的?
  10. Spring中用到了那些設計模式?
  11. Spring MVC的工作原理?
  12. Spring如何解決循環依賴?
  13. Spring如何保證Controller併發的安全?

九、數據庫

  1. 事務四大特性(ACID)?
  2. 數據庫隔離級別,每個級別會引發什麼問題,mysql默認是哪個級別?
  3. innodb和myisam存儲引擎的區別?
  4. MYSQL的兩種存儲引擎區別(事務、鎖級別等等),各自的適用場景?
  5. 查詢語句不同元素(where、jion、limit, group by、having等等)執行先後順序?
  6. 數據庫的優化(sql語句優化和索引)?
  7. 索引有B+索引和hash索引,各自的區別?
  8. B+索引數據結構,和B樹的區別?
  9. 索引的分類(主鍵索引、唯一索引),最左前綴原則,哪些情況索引會失效?
  10. 聚集索引和非聚集索引區別
  11. 有哪些鎖(樂觀鎖悲觀鎖),select時怎麼加排它鎖?
  12. 關係型數據庫和非關係型數據庫區別?
  13. 數據庫三範式,根據某個場費設計數據表?
  14. 數據庫的讀寫分離、主從複製?
  15. 使用explain優化sql和索引?
  16. long_query怎麼解決?
  17. 死鎖判定原理和具體場景,死鎖怎麼解決?
  18. varchar和char的使用場景?
  19. mysql併發情況下怎麼解決(通過事務、隔離級別、鎖)?
  20. 數據庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌) ?

十、微服務

  1. 什麼是微服務?
  2. 微服務之間是如何獨立通訊的?
  3. springCloud和dubbo 有哪些區別?
  4. springboot和springcloud,請談談對它們的理解?
  5. 什麼是微服務熔斷?什麼是服務降級?
  6. 微服務的優缺點分別是什麼?說下在項目開發中碰到的問題?
  7. 你所知道的微服務技術棧有哪些?
  8. eureka和zookeeper都可以提供服務的註冊和發現的功能,請說說兩者的區別?

本文轉載自:Java程序員2020剛開始找工作就碰壁?建議看完這份春招面試大綱

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