做者:ppxyn。本文來自讀者投稿。該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所須要掌握的核心知識的文檔類項目),地址:
https://github.com/Snailclimb... 。以爲不錯的話,記得點個Star。
在接觸 Java 以前我接觸的比較多的是硬件方面,用的比較多的語言就是C和C++。到了大三我才正式選擇 Java 方向,到目前爲止使用Java到如今大概有一年多的時間,因此Java算不上很好。剛開始投遞的時候,實習剛辭職,也沒準備筆試面試,不少東西都忘記了。因此,剛開始我並無直接就投遞阿里,畢竟內心仍是有一點點小懼怕的。因而,我就先投遞了幾個不算大的公司來練手,就是想着刷刷經驗而已或者說是練練手(ps:仍是挺對不起那些公司的)。面了一個月其餘公司後,我找了我實驗室的學長內推我,後面就有了這5次面試。git
下面簡單的說一下個人這5次面試:4次技術面+1次HR面,但願個人經歷能對你有所幫助。程序員
一面(技術面)
- 自我介紹(主要講本身會的技術細節,項目經驗,經歷那些就一語帶過,後面面試官會問你的)。
- 聊聊項目(就是一個很普通的分佈式商城,本身作了一些改進),讓我畫了整個項目的架構圖,而後針對項目拋了一系列的提升性能的問題,還問了我作項目的過程當中遇到了那些問題,如何解決的,差不讀就這些吧。
- 多是我前面說了我會數據庫優化,而後面試官就開始問索引、事務隔離級別、悲觀鎖和樂觀鎖、索引、ACID、MVVC這些問題。
- 瀏覽器輸入URL發生了什麼? TCP和UDP區別? TCP如何保證傳輸可靠性?
- 講下跳錶怎麼實現的?哈夫曼編碼是怎麼回事?非遞歸且不用額外空間(不用棧),如何遍歷二叉樹
- 後面又問了不少JVM方面的問題,好比Java內存模型、常見的垃圾回收器、雙親委派模型這些
- 你有什麼問題要問嗎?
二面(技術面)
- 自我介紹(主要講本身會的技術細節,項目經驗,經歷那些就一語帶過,後面面試官會問你的)。
- 操做系統的內存管理機制
- 進程和線程的區別
- 說下你對線程安全的理解
- volatile 有什麼做用 ,sychronized和lock有什麼區別
- ReentrantLock實現原理
- 用過CountDownLatch麼?什麼場景下用的?
- AQS底層原理。
- 形成死鎖的緣由有哪些,如何預防?
- 加鎖會帶來哪些性能問題。如何解決?
- HashMap、ConcurrentHashMap源碼。HashMap是線程安全的嗎?Hashtable呢?ConcurrentHashMap有了解嗎?
- 是否能夠實習?
- 你有什麼問題要問嗎?
三面(技術面)
- 有沒有參加過 ACM 或者他競賽,有沒有拿過什麼獎?( 我說我沒參加過ACM,本科參加過數學建模競賽,名次並很差,沒拿過什麼獎。面試官好像有點失望,而後我又趕忙補充說我和老師一塊兒作過一個項目,目前已經投入使用。面試官還比較感興趣,後面又和他聊了一下這個項目。)
- 研究生期間,作過什麼項目,發過論文嗎?有什麼成果嗎?
- 你以爲你有什麼優勢和缺點?你以爲你相比於那些比你更優秀的人欠缺什麼?
- 有讀過什麼源碼嗎?(我說我讀過 Java 集合框架和 Netty 的,面試官說 Java 集合前幾面必定問的差很少,就不問了,而後就問我 Netty的,我當時很慌啊!)
- 介紹一下本身對 Netty 的認識,爲何要用。說說業務中,Netty 的使用場景。什麼是TCP 粘包/拆包,解決辦法。Netty線程模型。Dubbo 在使用 Netty 做爲網絡通信時候是如何避免粘包與半包問題?講講Netty的零拷貝?巴拉巴拉問了好多,我記得有好幾個我都沒回答上來,內心想着涼涼了啊。
- 用到了那些開源技術、在開源領域作過貢獻嗎?
- 常見的排序算法及其複雜度,現場寫了快排。
- 紅黑樹,B樹的一些問題。
- 講講算法及數據結構在實習項目中的用處。
- 本身的將來規劃(就簡單描述了一下本身將來的設想啊,說的還挺誠懇,面試官好像還挺滿意的)
- 你有什麼問題要問嗎?
四面(半個技術面)
三面面完當天,晚上9點接到面試電話,感受像是部門或者項目主管。 這個和以前的面試不大相同,感受面試官主要考察的是你解決問題的能力、學習能力和團隊協做能力。github
- 讓我講一個本身以爲最不錯的項目。而後就巴拉巴拉的聊,我記得主要是問了項目是如何進行協做的、遇到問題是如何解決的、與他人發生衝突是如何解決的這些。感受聊了挺久。
- 出現 OOM 後你會怎麼排查問題?
- 本身平時是如何學習新技術的?除了 Java 還回去了解其餘技術嗎?
- 上一段實習經歷的收穫。
- NginX如何作負載均衡、常見的負載均衡算法有哪些、一致性哈希的一致性是什麼意思、一致性哈希是如何作哈希的
- 你有什麼問題問我嗎?
- 還有一些其餘的,想不起來了,感受這一面不是偏向技術來問。
五面(HR面)
- 自我介紹(主要講能突出本身的經歷,會的編程技術一語帶過)。
- 你以爲你有什麼優勢和缺點?如何克服這些缺點?
- 說一件大學裏你本身比較有成就感的一件事情,爲此付出了那些努力。
- 你前面跟其餘面試官講過一些你作的項目吧?能夠給我講講嗎?你要考慮到我不是一個作技術的人,怎麼讓我也聽得懂。項目中有什麼問題,你怎麼解決的?你最大的收穫是什麼?
- 你目前有面試過其餘公司嗎?若是讓你選,這些公司和阿里,你選哪一個?(送分題,回答很差可能送命)
- 你指望的工做地點是哪裏?
- 你有什麼問題嗎?
總結
- 能夠看出面試官問個人不少問題都是比較常見的問題,因此記得必定要提早準備,還要深刻準備,不要回答的太皮毛。不少時候一個問題可能會牽扯出不少問題,遇到不會的問題不要慌,冷靜分析,若是你真的回答不上來,也不要擔憂本身是否是就要掛了,極可能這個問題自己就比較難。
- 表達能力和溝通能力過重要了,必定要提早練一下,我自身就是一個不太會說話的人,因此,面試前我對於自我介紹、項目介紹和一些常見問題都在腦子裏練了很久,確保面試的時候可以很清晰和簡潔的說出來。
- 等待面試的過程和麪試的過程真的好熬人,那段時間我壓力也比較大,好在我私下找到學長聊了不少,心情也好了不少。
- 面試以後及時總結,面的好的話,不要得意,儘快準備下一場面試吧!
我以爲我還算是比較幸運的,最後也祝你們都能得到心儀的Offer。面試
專一Java知識和麪試技能分享!我已經整理好了一份Java 學習必備的書籍+視頻+文檔彙總,內容比較多,你能夠在公衆號後臺回覆關鍵「1」,我會免費無套路把這些都給你。