2021年面試大盤點!金三銀四Java春招面試高頻考點總結,附答案!

寫在前面:

  • 算是對本身最近經歷的一些面試的小小總結吧,小張要繼續加油呀 🤣 🤣
  • 項目:
  • 介紹項目的背景、架構、功能、目前完成的狀況、部署方案?
  • 項目實現過程當中的難點以及如何解決的?
  • 哪一個項目收穫更大?
  • 爲何用xx框架/技術來實現?
  • 在項目中主要承擔了哪些工做?
  • 若是你的項目中服務端同時有大量請求,如何處理?
    java

    下面爲你們整理了金三銀四java春招高頻考點總結以及我總結的答案,但願對你們有幫助!

Java基礎:

  • String、StringBuffer、StringBuilder的區別?
  • JDK1.7和JDK1.8有哪些區別?
  • Java中有哪些經常使用的容器類?
  • HashMap底層是如何實現的?JDK1.8和JDK1.7的HashMap的實現有哪些區別?
  • HashMap擴容爲何都要擴展爲原來的2倍?
  • 高併發狀況下使用HashMap會出現哪些問題?如何解決?
  • JDK1.7中ConcurrentHashMap的底層結構?
  • JDK1.8對ConcurrentHashMap作了哪些改進?
  • JDK1.8中ConcurrentHashMap保證併發安全的原理?
  • ArrayList和LinkedList的區別?
  • LinkedList的底層數據結構?插入刪除元素的時空複雜度分析?
  • ArrayList的擴容機制?
  • 什麼是Fast-fail?
  • 什麼是序列化?如何實現序列化?
  • transient關鍵字的做用?
  • Java中有哪些IO流?字節流和字符流如何進行轉換?
  • Java的反射機制?爲何須要反射?反射主要用於哪些場景?
  • 使用反射建立實例和new一個對象的區別?
  • 講一下線程池的做用?爲何須要線程池?建立線程爲何比較耗時?線程池的核心參數有哪些?線程池中建立一個線程的時機?

Java併發:

  • Java中如何建立一個線程?實現Collable接口和實現Runnable的區別?
  • 建立一個線程時,會在哪些區域分配空間?
  • Java中線程間通訊的方式有哪些?
  • 保證線程同步的機制有哪些?
  • 什麼是ThreadLocal?實現原理?
  • 什麼是AQS?AQS有什麼做用?常見的基於AQS的組件有哪些?
  • java的內存模型?
  • 指令重排序是什麼?
  • happens-before規則是什麼?做用?有哪些規則?
  • volatile關鍵字的做用?實現原理?
  • 什麼是synchronized?實現原理?
  • synchronized能夠修飾哪些內容,分別鎖定的是什麼?
  • JDK1.6後synchronized關鍵字底層作了哪些優化?
  • 如何基於雙重檢查鎖實現單例模式?volatile關鍵字的做用?爲何要兩次加鎖?

JVM:

  • 運行時數據分區:
  • JVM將數據區域劃分爲哪些部分,分別存儲哪些內容?
  • 哪些區域是線程私有的,哪些是線程公有的?
  • 什麼是TLAB?做用?
  • 垃圾回收機制:
  • JVM運行時數據分區有哪些?分別存儲哪些內容?有什麼特色?
  • 垃圾回收主要回收哪些區域?
  • 如何判斷一個對象是否可回收?
  • 可達性分析後發現一個對象不在引用鏈上,那它必定會被回收嗎?
  • 垃圾回收算法有哪些?
  • 經常使用的垃圾回收器有哪些?
  • G1回收器採用了什麼樣的回收算法?
  • 何時會觸發Full GC?
  • 服務器運行過程當中頻繁發生Full GC,可能存在哪些問題?如何排查?
  • 類加載機制:
  • 自定義一個String類,能夠被加載到嗎?爲何?
  • 什麼是雙親委派機制?
  • 若是想要加載到自定義的String類,應該怎麼作?(如何打破雙親委派機制?)
  • 哪些狀況會觸發類的初始化?
  • 類加載的過程?
  • 什麼狀況下兩個類是相等的?

MySQL:

  • SQL執行過程、性能分析:
  • MySQL包括哪些組件?(鏈接器、查詢緩存、分析器、優化器、執行器)(Server層+存儲引擎)
  • 爲何不推薦使用查詢緩存功能?爲何MySQL 8.0版本刪除了查詢緩存?
  • 查詢sql語句的執行過程?
  • 更新sql語句的執行過程?
  • 什麼是crash-safe?
  • MySQL實現crash-safe的原理?(binlog、redolog、undolog、WAL機制、兩階段提交)
  • 更新SQL語句執行流程中,總共須要寫3個日誌,這3個是否是都須要,能不能進行簡化?
  • 兩階段提交的方式會存在什麼問題?解決方法?
  • 什麼是組提交?用於解決什麼問題?
  • 假設事務提交過程當中,MySQL進程忽然奔潰,重啓後是怎麼保證數據不丟失的?
  • 如何查看SQL的執行狀況?(執行計劃、explain指令)
  • 如何在MySQL中查找效率慢的SQL語句呢?(慢查詢日誌)面試

    死鎖:

  • MySQL的InnoDB存儲引擎支持哪些類型的鎖?
  • 什麼是死鎖?MySQL中哪些狀況下會發生死鎖?
  • 如何解決死鎖?(超時等待、wait-for graph)
  • 如何避免死鎖的發生?
  • 如何檢查是否發生了死鎖?(死鎖日誌)算法

    索引機制:

  • InnoDB存儲引擎的索引機制底層採用了什麼結構?
  • B+樹的特色有哪些?
  • Hash索引和B+索引對比分析?
  • 添加索引時須要注意什麼?什麼狀況下不適合添加索引?
  • 使用索引必定可以提升查詢的性能嗎?爲何?
  • 什麼是最左前綴原則?sql

    事務機制:

    什麼是事務?事務的特性?
    事務的隔離級別有哪幾種?
    併發事務會帶來哪些問題?不一樣的隔離級別分別能夠避免哪些問題的發生?
    幻讀發生時的情形?
    MySQL默認的事務級別是什麼?能夠避免哪些問題?
    事務回滾在MySQL中是如何實現的?
    MyISAM和InnoDB存儲引擎有哪些區別?
    瀏覽器

計網:

  • TCP/UDP:
  • TCP和UDP的特色?
  • TCP三次握手的過程?
  • 四次揮手的過程?
  • 爲何須要三次握手?
  • 三次握手若是每次對方都沒有收到會怎麼樣?分狀況介紹。
  • 爲何鏈接的時候是三次握手,關閉的時候倒是四次握手?
  • 揮手時客戶端爲何最後還要等待2MSL?
  • 若是已經創建了鏈接,可是客戶端忽然出現故障了怎麼辦?(保活計時器)
  • TCP依靠哪些機制來保證可靠傳輸?
  • 數據分塊傳輸
  • 數據包校驗
  • 失序數據包重排序
  • 應答機制
  • 流量控制:滑動窗口機制(接收窗口)
  • 擁塞控制:慢開始、擁塞避免、快重傳、快恢復(擁塞窗口)
  • 超時重傳
  • 使用UDP時若是想要保證可靠性,能夠如何實現?
  • TCP和UDP分別對應的應用層協議有哪些?
  • HTTP/HTTPS:
  • 如何理解HTTP協議是無狀態的?HTTP如何保存用戶狀態?
  • Cookie的做用是什麼?和Session有什麼區別?
  • HTTP和HTTPS的區別?(安全性、資源消耗、端口等)
  • HTTPS的工做原理?
  • HTTP的常見狀態碼有哪些?分別表示什麼?
  • OSI七層體系結構每一層的做用?以及每層常見的協議。
  • 瀏覽器輸入URL回車後發生了什麼?

操做系統:

  • 進程間通訊的方式有哪些?基本原理?
  • 管道/匿名管道:
  • 有名管道:
  • 信號
  • 消息隊列
  • 信號量
  • 共享內存
  • 套接字
  • 進程調度算法有哪些?
  • 死鎖:
  • 什麼是死鎖?死鎖產生的緣由?死鎖產生的必要條件?(互斥、不可剝奪、請求與保持、循環等待)
  • 死鎖的處理基本策略和經常使用方法?
  • 頁面置換算法有哪些?

Spring全家桶:

  • Spring和SpringBoot有什麼區別嗎?爲何須要SpringBoot?
  • 什麼是MVC?SpringMVC處理請求的流程?
  • Spring中AOP的實現的方式有哪些?
  • Cglib和JDK動態代理的區別?
  • Spring運行過程當中如何旋轉使用的代理?
  • Spring中IoC的實現原理?
  • 單例Bean是併發安全的嗎?爲何?
  • Spring中事務是如何實現的?
  • Spring中Controller是單例仍是多例?如何保證併發的安全?

其餘:

  • 排序算法:時空複雜度、實現原理?
  • 什麼是分佈式一致性算法?Raft算法的原理?
  • 一致性哈希算法?
  • HDFS的架構,讀寫流程?若是一個DataNode掛掉了怎麼辦?NameNode掛掉怎麼辦?如何容災?
  • 什麼是RPC?實現一個RPC框架主要須要考慮哪些方面?
  • and so on......
  • (至少要十分熟悉兩三個框架/組件,能夠是項目中用到的,也能夠是目前比較主流的,好比Redis、Netty、Hadoop、RPC框架等)

最後

只有技術過硬,在哪兒都不愁就業,「萬般帶不去,惟有業隨身」學習原本就不是在課堂那幾年說了算,而是在人生的旅途中不間斷的事情。
人生短暫,別稀裏糊塗的活一生,不要將就。
文章內容中涉及到的Java面試題、源碼文檔,技術筆記等學習資料,都可以避免費分享給你們學習,只需你動動手多多支持便可!
有須要的朋友歡迎關注公衆號:前程有光,回覆資料領取!緩存

相關文章
相關標籤/搜索