Java面試經驗+最新BAT面試資料分享給大家(小結)

前言
致那些迷茫的JAVA面試者(特別是南京的1-4年經驗),致那些奮發(fā)的年輕人,致自己。寫這篇博文主要也是對我的成長道路的記錄,面試受挫后的反思,及對自己的勉勵。
Java面試經驗總結
最近3個月一口氣面了十幾家公司的Java開發(fā)崗,大大小小的面試筆試加起來快20場,收獲很多。本人即將畢業(yè),在一家國企實習做java開發(fā),感覺自己很水,剛開始面試時發(fā)現(xiàn)自己掌握的東西與外面企業(yè)流行的技術有些代差,所以一邊面試一邊總結,感覺面試時問的東西明顯和自己平常了解的不太一樣,所以給自己做了一個總結,希望對以后的面試有所啟發(fā)。
一 面試到底在問些什么東西?
首先你要明確的是面試官所問的內容一定和你簡歷所寫的東西是緊密聯(lián)系的,一般你沒有寫在簡歷上的技能,面試官很少會去提問。
面試大體上包括下面幾方面知識類型:
- Java基礎、多線程、IO與NIO、虛擬機、設計模式
- 數(shù)據(jù)結構與算法(要有手寫算法的能力)
- 計算機網絡(TCP三次握手和四次揮手)
- 數(shù)據(jù)通信(RESTful、RPC、消息隊列)
- 操作系統(tǒng)(Linux的基本命令以及使用)
- 主流框架(Spring底層原理與源碼問的很多)
- 數(shù)據(jù)存儲(最常見的是MySQL、Redis)
- 分布式
除了這些東西還有什么其他問題:
- 實際場景題
- 生活方面的問題
- 性格/其他方面的問題
二、面試常問的知識點
1)集合相關問題(必問)
- HashMap、LinkedHashMap、ConcurrentHashMap、ArrayList、LinkedList的底層實現(xiàn)
- HashMap和Hashtable的區(qū)別
- ArrayList、LinkedList、Vector的區(qū)別
- HashMap和ConcurrentHashMap的區(qū)別
- HashMap和LinkedHashMap的區(qū)別
- HashMap是線程安全的嗎
- ConcurrentHashMap是怎么實現(xiàn)線程安全的
- HashMap 的長度為什么是2的冪次方
2)多線程并發(fā)相關問題(必問)
- 創(chuàng)建線程的3種方式
- 什么是線程安全
- Runnable接口和Callable接口的區(qū)別
- wait方法和sleep方法的區(qū)別
- synchronized、Lock、ReentrantLock、ReadWriteLock
- 介紹下CAS(無鎖技術),什么是悲觀鎖和樂觀鎖
- volatile關鍵字的作用和原理
- 什么是ThreadLocal
- 創(chuàng)建線程池的4種方式
- ThreadPoolExecutor的內部工作原理
- 分布式環(huán)境下,怎么保證線程安全
- synchronized和lock區(qū)別以及volatile和synchronized的區(qū)別
3)JVM相關問題
- 介紹下垃圾收集機制(在什么時候,對什么,做了什么)。
- 垃圾收集有哪些算法,各自的特點。
- 類加載的過程。
- 雙親委派模型。
- 有哪些類加載器。
- 能不能自己寫一個類叫java.lang.String。
4)設計模式相關問題(必問)
設計模式比較常見的就是讓你手寫一個單例模式(注意單例模式的幾種不同的實現(xiàn)方法)或者讓你說一下某個常見的設計模式在你的項目中是如何使用的,另外面試官還有可能問你抽象工廠和工廠方法模式的區(qū)別、工廠模式的思想這樣的問題。
另外,建議把代理模式、觀察者模式、(抽象)工廠模式好好看一下,這三個設計模式很有用。
5)數(shù)據(jù)庫相關問題,針對MySQL(必問)
- 給題目讓你手寫SQL。
- 有沒有SQL優(yōu)化經驗。
- MySQL索引的數(shù)據(jù)結構。
- SQL怎么進行優(yōu)化。
- SQL關鍵字的執(zhí)行順序。
- 有哪幾種索引。
- 什么時候該(不該)建索引。
- Explain包含哪些列。
6)框架相關問題
- Hibernate和Mybatis的區(qū)別。
- Spring MVC和Struts2的區(qū)別。
- Spring用了哪些設計模式。
- Spring中AOP主要用來做什么。
- Spring注入bean的方式。
- 什么是IOC,什么是依賴注入。
- Spring是單例還是多例,怎么修改。
- Spring事務隔離級別和傳播性。
- 介紹下Mybatis/Hibernate的緩存機制。
- Mybatis的mapper文件中#和$的區(qū)別。
- Mybatis的mapper文件中resultType和resultMap的區(qū)別。
7)其他遇到問題
- 介紹下棧和隊列。
- IO和NIO的區(qū)別。
- 接口和抽象類的區(qū)別。
- int和Integer的自動拆箱/裝箱相關問題。
- 常量池相關問題。
- ==和equals的區(qū)別。
- 什么是JDK?什么是JRE?什么是JVM?三者之間的聯(lián)系與區(qū)別
- Java和C++的區(qū)別
- 重載和重寫的區(qū)別。
- String和StringBuilder、StringBuffer的區(qū)別。
- 靜態(tài)變量、實例變量、局部變量線程安全嗎,為什么。
- try、catch、finally都有return語句時執(zhí)行哪個。
- 介紹下B樹、二叉樹。
- 分布式鎖的實現(xiàn)。
- 分布式session存儲解決方案。
- 常用的linux命令。
四、一些經驗分享
- 先投一些普通公司,等面出了心得再去投理想的公司。
- 不熟悉的技術不要主動提。
- 對于那種實習期6個月還打8折的公司,除非你沒有其他選擇了,否則不要去。 另外,小公司喜歡在薪水上壓你,開的時候適當提高。
- 不要去參加招聘會,純粹是浪費時間。
- 把面試當作一次技術的交流,不要太在意是否能被錄取。
- 公司一般面完就決定是否錄取了,讓你回去等消息這種情況一般沒戲,無論你自己覺得面的有多好。
- 盡量少通過電話面試,效果不好。
- 在面試的日子里,要保持每天學習,無論是學習新東西還是復習舊東西。
- 拿到offer了,問問自己這個公司讓自己100%滿意了嗎,如果不是,請繼續(xù)努力找更好的。
- 通過面試官可以大概判斷這家公司的情況。
- 問到自己有深入研究過的知識,抓住機會好好表現(xiàn),不要輕易放過。
相關文章
- 本文給大家分享小編的2年面試經驗,針對linux c++,非常不錯,具有一定的參考借鑒價值,需要的朋友參考下2019-04-25
- 很多人去面試之前都很做足準備,下面就分享一次,從面試中,其實可以看得出來現(xiàn)在的公司對于面試者的知識體系要求,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-09
- 這篇文章主要介紹了牛人5次面試騰訊不成功的經驗分享,那么面試的時候到底發(fā)生了什么,有什么情況出現(xiàn),怎么會失敗,又有什么建議分享給大家呢?下面就和小編一起看看吧2018-02-09
- 入行時間不長,積累的經驗和創(chuàng)造的價值都不多,甚至沒幾件拿得出手的上線作品。如果你還是個不太能說會道的人,那么很抱歉,想在下一份工作中拿高薪是沒啥可能了。所以下面2016-10-13
- 今年2月20日,我發(fā)了一篇文章,招募想刷題的朋友才參與我的Leetcode刷題計劃,截止2019年5月10日,刷題熱任務已經全部完成,共計383題。寫這篇文章是相對這次的打卡活動做2019-05-13