博主本專業電氣,今年3月下定決心轉向互聯網行業,本來想依仗自己比較自信的學習能力自學成才的,不過學了一段時間感覺還是需要一個人來指點,不僅僅是指點一些技術性的問題,更是需要有人來指點一下方向性的問題。后來狠了狠心花了大價錢報了一個培訓班------達內,當時也真的很擔心被騙呀,因為知乎上各種黑,不過好在身邊有鮮活的從達內出來后來取得成功的例子,以及咨詢老師真誠的態度,才下定了決心進去學習。幾個月,學完了java基礎、javaweb、框架以及和分布式系統相關的一些技術,最后還順利參加了達內舉辦的項目峰會,8個人6天完成了一個完整的項目,具體的項目已經部署到了我的阿里雲上,訪問www.haoj.club(PC端效果比較好)就可以訪問到,這個項目是仿照今日頭條做的,基本上今日頭條有的功能:新聞瀏覽、新聞推薦、短信注冊登錄等等這些功能都有了,而且就用了6天。怎么說呢,這幾個月的成長個人感覺是非常迅速了,因為幾個月之前java一點不懂,而現在已經可以獨立的完成數據庫設計、前台編寫、后台編寫、環境搭建和項目部署這一整套的流程了,雖然完成的項目和企業真正的大型分布式項目還是沒法比(畢竟一個人的能力是有限的),但是基本的開發能力已經具備了。培訓班就是這個好處吧,可以帶你迅速入行,少走很多彎路,一些基本的配置不用自己花一些不必要的時間去摸索,一些很實用的開發經驗和開發竅門都可以迅速獲得。
之后博主就憑借這個項目以及已有的一些技術去參加面試了,心里也很明確,全中國的IT公司只想去阿里,因為阿里真的是中國程序員的朝聖地,進去真的能學很多。最終經歷了5輪面試,順利拿到了offer。這里和大家分享一下我的面試經驗。
首先是一次不記名面試,這里我也真的很感謝這場不記名面試了,如果沒有這場不記名面試,我可能真的一面就結束了。因為我之前是沒有任何找工作的面試經驗的,再加上去阿里對我來說真的是一件幾個月做夢都會夢到的事情,我把它看的太重了,所以在面試之前我經歷人生中最緊張最緊張的一段時間,導致這次面試基本是全面GG。我先來說一下這次面試的過程吧。
面試我的是一位小姐姐(這是我之前沒想到的,因為我覺得肯定是個男生),我先是自我介紹,然后我感覺我介紹的很着急,而且沒有邏輯性(充分暴露了我的准備不足),介紹完就感覺很不好,此時已經感覺有點涼了。然后就問了第一個問題:springcloud的三個原則是什么?我不知道啊,springcloud我才學了一天啊,只會用啊,所以第一個問題就GG了,我更緊張了。之后小姐姐問我,你對哪塊有比較深入的研究,我因為之前對redis看了不少,所以我就說redis還仔細研究過一點,然后就又問了一個問題,那個問題中關於redis的名詞我都沒聽過,這個時候我已經完全慌了,兩個問題都沒答出來。后來又聊着聊着說到了多線程,第三個問題:一個線程銷毀之后還能再start嘛?我:能吧?(我沒有注意過啊)所以相當於問了三個問題都沒答出來,小姐姐似乎感覺到我的水平了,所以就沒再多問了,就講起了我這幾個月的生活,早起看算法,白天聽課,晚上調電路還得復習白天的,每天已經用盡了我最大的力氣了,我也說到了自己面的不好,(事實上第一是因為我很緊張,第二我確實有的地方掌握的不是很深入)。她很親切的說沒關系,幾個月能成這樣已經不錯了。然后最后聊了聊別的就結束了。其實后來我才知道這個小姐姐是清華的,更加堅定了我去阿里的決心,我渴望去一個周圍都是大神的地方磨煉自己!
結束之后我仔細分析今天的面試,總結了一些經驗,而且深刻的明白是要稍微准備一下,尤其是並發編程這塊的知識點,所以接下來的幾天我瘋狂彌補之前的一些知識漏洞,等待接下來的正式面試。
幾天后是一面,一面整體的節奏比較緩,主要是以技術問題為主,沒有加入太多的聊天內容,面的也比較久,一共面了一個多小時,下面是一面的題目:
1、線程實現的方式
2、線程池的理解
3、hashmap的底層,你怎么了解的
4、jvm底層
5、垃圾回收機制
6、怎么理解mvc
7、排序算法選一種(我選的快排)
8、單點登錄引出來的一個問題,如果通過A域名訪問了A系統,通過B域名訪問了B系統,B系統如何知道此客戶端也訪問了A系統
9、類加載機制
10、說一說ThreadLocal的理解
11、爬蟲用什么做的,怎么做的
12、如果爬取到的數據格式不一致怎么辦(針對我的那個新聞網站)
13、你對你這個項目的數據有沒有一些其他想法?如果讓你重新做,你會有哪些改善
14、你這個項目的架構說一說
整體來說,一面的基礎性問題比較多,所以博主基本都答出來了,准備過還是有些用處的。所以一面完了感覺還不錯,接着第二天下午就二面了。
二面是我最慌的面試,因為二面是最關鍵的,是最大的主管面試,所以非常關鍵,整體來說,二面的節奏非常快,和一面完全不同,面試官很希望我言簡意賅的說完答案,所以面的不算很好,當時完了又以為GG了,好在最后還是幸運的過了,面試問題如下:
1、靜態方法和實例方法的同步有什么不同?
2、future類的作用
3、紅黑樹比平衡二叉樹的優勢
4、知道最大堆,最小堆嘛?描述一下堆排序
5、redis是單線程還是多線程的,說說redis的優勢
6、了解AOP嘛,基於什么原理的
7、3點15分的夾角是多少度
二面面試官問的很急,我答的也快,所以有兩個問題答的不好,但是面試官讓我覺得有一種肅然起敬的感覺,因為他說話比較快,但是都能說到點子上,最關鍵的說的話非常讓人容易接受。二面過了,當天晚上我就接到了三面的電話(阿里的效率真的讓我瞠目結舌)
三面是交叉面試了,基本都圍繞我的項目展開,我經過前面幾次的面試之后,這個時候已經擁有了很高的面試經驗值了,所以三面的時候我一點不慌了,回答問題非常穩重(一面剛開始的時候腿在抖。。。),三面的問題如下:
1、介紹以下你項目的特色
2、說說你這個項目的分工,以及在團隊協作之間遇到的問題
3、用java爬蟲有什么不好
4、談談你對mycat的理解以及如何進行數據庫的雙機熱備
5、談談redis如何構建集群,數據在底層是如何進行同步的
6、網絡連接和斷開的過程?為什么是4次揮手不是3次?
7、數據庫事務的四個特性
8、volatile關鍵字的作用
9、估算一下7的128次多少位(這個數學問題,我當時沒想出思路,只估算了個100,雖然蒙對了,但是思路沒給出,事實上這個題的思路有點難的)
三面還算比較順利,基本都是我在說,所以也很快過了,第二天早上就收到了HR終面,兩天4面,鬼知道我那兩天經歷了什么。。。
HR就基本問一些基本情況了,沒有技術問題,只要人不是不正常感覺都沒啥問題。
總結一下面試經驗吧,雖然我只經歷了阿里的面試,但是這幾場面試足以讓我總結出面試的門道了:
1、自我介紹非常重要,基本上是主導你的整個面試的過程的東西了,一定要好好准備自我介紹,把面試官往你熟悉的地方引
2、見機行事,如果面試官不急,你就不要急,回到的時候多說一點,盡量把只是穿起來,往你熟悉的地方引,比如博主的1面,問我HashMap的底層,我就不僅說了它底層是一個數組加鏈式棧,還說了鏈式棧的目的是解決哈希沖突,還說了解決哈希沖突有兩種方法:一種拉鏈法,一種線性探測法,hashmap采用了前者,(我現在還知道了ThreadLocalMap采用后者,這個知道的人不多,如果你順着引出來,加分很多)。如果面試官比較急,證明他有很多人面,他希望在最短的時間里讓你說出關鍵的東西,比如博主的二面,我們就不需要擴展說,言簡意賅即可
3、一定要好好准備,對一些常用的內容進行深入的探究,比如現在面試必問的多線程高並發,JVM底層,數據結構和算法,一定要 挑一些進行深入的探究
4、最好有一個完整的項目或者有一個擔任重要角色的項目,對這個項目非常熟悉,並且要想好項目開發過程中遇到的問題以及如何解決的
5、不裝,會就是會,不會就是不會,不要猜,我二面就犯了錯,面試官問我redis單線程還是多線程,我隨口一說:多線程吧?面試官:猜的吧?我:是。。。。面試官:不會不要猜!所以我當時慌的一批!
大概就是這么多吧,這次轉行對我個人而言,除了提升了知識之外,更多的是磨煉出了一種敢於從原有的圈子跳出來的勇氣、決心和毅力以及迅速適應新的環境的能力,今后的生活不確定性仍然很多,但是我現在反而很期待這種不確定性帶給我的一種緊張和興奮的感覺,以及成功之后的那種走路腳下生風、激動的睡不覺的興奮。
