前言
在接觸 Java 之前我接觸的比較多的語言就是C和C++,對Java語言的學習也有稍有的涉獵。到了今年疫情,在競爭的壓力下,我才選擇正式改行 Java ,到目前爲止接觸Java大概有一年多的時間,所以Java開發水平算不上很好。
剛開始投遞的時候,我並沒有直接就投遞阿里,畢竟心裏還是有一點點小害怕的。於是,我就先投遞了幾個不算大的公司來練手,就是想着刷刷經驗而已或者說是練練手。面了一個月其他公司後,我找了一個博主的朋友幫助內推,就有了後面這次面試。
面試阿里之前我對自己的併發知識不太有信心,就花時間看了幾本併發方面的書籍,網上也找了好多博客來看。
下面簡單的說一下我的這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點接到面試電話,感覺像是部門或者項目主管。 這個和之前的面試不大相同,感覺面試官主要考察的是你解決問題的能力、學習能力和團隊協作能力。
- 讓我講一個自己覺得最不錯的項目。然後就巴拉巴拉的聊,我記得主要是問了項目是如何進行協作的、遇到問題是如何解決的、與他人發生衝突是如何解決的這些。感覺聊了挺久。
- 出現 OOM 後你會怎麼排查問題?
- 自己平時是如何學習新技術的?除了 Java 還回去了解其他技術嗎?
- 上一段實習經歷的收穫。
- NginX如何做負載均衡、常見的負載均衡算法有哪些、一致性哈希的一致性是什麼意思、一致性哈希是如何做哈希的
- 你有什麼問題問我嗎?
- 還有一些其他的,想不起來了,感覺這一面不是偏向技術來問。
五面(HR面)
- 自我介紹(主要講能突出自己的經歷,會的編程技術一語帶過)。
- 你覺得你有什麼優點和缺點?如何克服這些缺點?
- 說一件大學裏你自己比較有成就感的一件事情,爲此付出了那些努力。
- 你前面跟其他面試官講過一些你做的項目吧?可以給我講講嗎?你要考慮到我不是一個做技術的人,怎麼讓我也聽得懂。項目中有什麼問題,你怎麼解決的?你最大的收穫是什麼?
- 你目前有面試過其他公司嗎?如果讓你選,這些公司和阿里,你選哪個?(送分題,回答不好可能送命)
- 你期望的工作地點是哪裏?
- 你有什麼問題嗎?
以上問題的答案我已經整理好了,點擊這裏下載!!!
面試刷題
分享這麼些天來收集了一些java面試資料供大家學習,BAT必備面試題含答案(希望對你有幫助)
1、Java基礎
2、JVM
3、多線程併發
4、SSM框架
5、數據庫
6、網絡
7、系統面試題題庫(Java基礎、JVM、Redis、Mysql、Spring、多線程、分佈式、數據庫、設計模式、數據結構與算法等)
以上面試題和答案,點擊這裏下載!!!
總結
- 可以看出面試官問我的很多問題都是比較常見的問題,所以記得一定要提前準備,還要深入準備,不要回答的太皮毛。很多時候一個問題可能會牽扯出很多問題,遇到不會的問題不要慌,冷靜分析,如果你真的回答不上來,也不要擔心自己是不是就要掛了,很可能這個問題本身就比較難。
- 表達能力和溝通能力太重要了,一定要提前練一下,我自身就是一個不太會說話的人,所以,面試前我對於自我介紹、項目介紹和一些常見問題都在腦子裏練了好久,確保面試的時候能夠很清晰和簡潔的說出來。
- 等待面試的過程和麪試的過程真的好熬人,那段時間我壓力也比較大,好在我私下找到學長聊了很多,心情也好了很多。
- 面試之後及時總結,面的好的話,不要得意,儘快準備下一場面試吧!
我覺得我還算是比較幸運的,最後也祝大家都能獲得心儀的Offer!