這些經驗是我金三銀四時經歷了多次Java面試得到的

話不多說,直接開始!

 

一 面試是要了解什麼東西

首先你要明確的是面試官所問的內容一定和你簡歷所寫的東西是緊密聯繫的,一般你沒有寫在簡歷上的技能,面試管很少會去提問。

面試大體上包括下面幾方面知識類型:

  • Java基礎、多線程、IO與NIO、虛擬機、設計模式
  • 數據結構與算法(要有手寫算法的能力)
  • 計算機網絡(TCP三次握手和四次揮手)
  • 數據通信(RESTful、RPC、消息隊列)
  • 操作系統(Linux的基本命令以及使用)
  • 主流框架(Spring底層原理與源碼問的很多)
  • 數據存儲(最常見的是MySQL、Redis)
  • 分佈式

除去技術問題還有什麼問題?

  • 實際場景題
  • 生活方面的問題
  • 性格/其他方面的問題

二 一般的面試流程

  • 自我介紹;
  • 問Java基礎知識;
  • 對你寫在簡歷上的項目進行大量提問;
  • 情景問題,例如:你的一個功能上了生產環境後,服務器壓力驟增,該怎麼排查;
  • 你有什麼想問面試官的

三 知識點總結

1)集合相關問題(必問)

  • HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現。
  • HashMap和Hashtable的區別。
  • ArrayList、LinkedList、Vector的區別。
  • HashMap和ConcurrentHashMap的區別。
  • HashMap和LinkedHashMap的區別。
  • HashMap是線程安全的嗎。
  • ConcurrentHashMap是怎麼實現線程安全的。
  • HashMap 的長度爲什麼是2的冪次方

2)多線程併發相關問題(必問)

  • 創建線程的3種方式。
  • 什麼是線程安全。
  • Runnable接口和Callable接口的區別。
  • wait方法和sleep方法的區別。
  • synchronized、Lock、ReentrantLock、ReadWriteLock。
  • 介紹下CAS(無鎖技術)。
  • volatile關鍵字的作用和原理。
  • 什麼是ThreadLocal。
  • 創建線程池的4種方式。
  • ThreadPoolExecutor的內部工作原理。
  • 分佈式環境下,怎麼保證線程安全。

3)JVM相關問題

  • 介紹下垃圾收集機制(在什麼時候,對什麼,做了什麼)。
  • 垃圾收集有哪些算法,各自的特點。
  • 類加載的過程。
  • 雙親委派模型。
  • 有哪些類加載器。
  • 能不能自己寫一個類叫java.lang.String。

4)設計模式相關問題(必問)

  • 先問你熟悉哪些設計模式,然後再具體問你某個設計模式具體實現和相關擴展問題。

5)數據庫相關問題,針對MySQL(必問)

  • 給題目讓你手寫SQL。
  • 有沒有SQL優化經驗。
  • MySQL索引的數據結構。
  • SQL怎麼進行優化。
  • SQL關鍵字的執行順序。
  • 有哪幾種索引。
  • 什麼時候該(不該)建索引。
  • Explain包含哪些列。

6)框架問題

  • Hibernate和Mybatis的區別。
  • Spring MVC和Struts2的區別。
  • Spring用了哪些設計模式。
  • Spring中AOP主要用來做什麼。
  • Spring注入bean的方式。
  • 什麼是IOC,什麼是依賴注入。
  • Spring是單例還是多例,怎麼修改。
  • Spring事務隔離級別和傳播性。
  • 介紹下Mybatis/Hibernate的緩存機制。
  • Mybatis的mapper文件中#和$的區別。
  • Mybatis的mapper文件中resultType和resultMap的區別。

7)遇到的其他問題

  • 介紹下棧和隊列。
  • IO和NIO的區別。
  • 接口和抽象類的區別。
  • int和Integer的自動拆箱/裝箱相關問題。
  • 常量池相關問題。
  • ==和equals的區別。
  • 什麼是JDK?什麼是JRE?什麼是JVM?三者之間的聯繫與區別
  • Java和C++的區別
  • 重載和重寫的區別。
  • String和StringBuilder、StringBuffer的區別。
  • 靜態變量、實例變量、局部變量線程安全嗎,爲什麼。
  • try、catch、finally都有return語句時執行哪個。
  • 介紹下B樹、二叉樹。
  • 分佈式鎖的實現。
  • 分佈式session存儲解決方案。
  • 常用的linux命令。

四 關於面試的一些經驗

  • 先投一些普通公司,等面出了心得再去投理想的公司。
  • 不熟悉的技術不要主動提。
  • 對於那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。
  • 另外,小公司喜歡在薪水上壓你,開的時候適當提高。
  • 不要去參加招聘會,純粹是浪費時間。
  • 把面試當作一次技術的交流,不要太在意是否能被錄取。
  • 公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,無論你自己覺得面的有多好。
  • 儘量少通過電話面試,效果不好。
  • 在面試的日子裏,要保持每天學習,無論是學習新東西還是複習舊東西。
  • 拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續努力找更好的。
  • 通過面試官可以大概判斷這家公司的情況。
  • 拉勾投的簡歷很多會被篩掉,但是拉勾還是面試機會的最主要來源。
  • 理想的公司可以多投幾次,我有好幾次都是第一次投被篩掉,多投幾次就過的經驗。
  • 問到自己有深入研究過的知識,抓住機會好好表現,不要輕易放過。

最後分享出自己總結的面試題目與答案,針對衆多BAT面試愛問的題目都總結出來了,現在免費送給各位!

領取方式:加羣956058372即可免費獲取

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