個人2017是忙碌的一年,從年初備戰實習春招,年三十都在死磕JDK源碼,三月份經歷了阿里五次面試,四月順利收到實習offer。而後五月懷着忐忑的心情開始了螞蟻金服的實習。八月,又經歷了兩輪面試,總算拿到轉正offer。到此爲止,我總算能夠盡情地享受最後的校園時光了。
但願個人經歷與感悟能幫助到你們。html
阿里是我讀研階段的一個重要目標,剛上研一的時候我便立下Flag,計劃了讀研三年要作的事情、要學的東西。翻翻個人博客,竟然還能找到當時寫的讀研計劃(想一想時間過的真的好快呀)。阿里在我心中一直是技術者的朝聖地,彙集了一羣技術狂熱分子,爲了提高一點點的性能能夠廢寢忘食。在立下這個flag後,我便把我要去阿里的想法告訴了身邊的全部人。我不想給本身留有後路,既然牛逼吹出去了,那就得落實到行動上。前端
我當時的計劃是這樣的,研一玩命作項目,畢竟寫代碼是一項孰能生巧的技術,多寫代碼天然能加深對技術的理解。事實也確實證實了這一點。我大四畢業的那個暑假,第一次接觸《深刻理解JVM虛擬機》,當時看完以後是一臉懵逼的,全部的漢字都認識,但連成一條句子後咋就不明白呢?而後懷着這種一臉懵逼的狀態,強行把這本書看完了,但因爲理解的不夠深入,很快就忘記了。而後通過一年瘋狂作項目,當我再抱起這本書時,我對這本書的感受有了180度的轉變,通俗易懂啊。我懷疑本身當時爲何這麼傻。而在這一年以內,我一共作了四個項目。因此說,寫代碼能潛移默化地提高你對技術的理解程度。java
記得咱們學校考研結果公佈是在三月底,得知我錄取了,短暫的高興了一下,次日便去了導師實驗室,參與到項目中去。由於我心理很清楚,個人目標是阿里。
剛去實驗室的時候感受本身徹底是一隻小白,師兄們開會討論的東西我居然一個字都聽不懂,剛開始分到的工做也很難順利的完成。但我是一個天生不服的人,我越是不懂,我越是要征服。(PS:追女生也同樣,當時看上了一個高冷型女神。越是高冷,我越要拿下……省略一萬字……最後成功了)。我漸漸跟上了師兄們的步伐,從第二個項目開始,我一直是項目負責人了。
我給本身定的方向是Java,而實驗室的項目五花八門,Qt、C++、圖像圖形……,但我內心清楚,這些項目能夠拓寬個人視野,能夠鍛鍊個人學習能力、思惟方式,但要深刻理解的技術仍是Java。因此我利用項目空窗期,看了不少Java方面的書籍,文末我列了一份清單供你們參考。程序員
研一作了一年項目以後,感受本身解決問題的能力、快速上手新技術的能力有所提高,但作項目一味求快、一味趕時間,我對不少技術的理解僅停留表面。因此更多時候我感受本身是在搬磚,很難寫出高質量的代碼。當時我決定,研二的上半學期必定要好好穩固基礎,深刻理解技術背後的原理,放慢作項目的節奏,不一味地盲目求快。web
然而研二由於種種緣由,我去了一家創業公司實習。既然我沒法選擇,那我就擁抱變化。既來之則安之,我但願本身所花的時間都有所收穫。因此我全身心投入到工做中去。公司安排我作前端,雖然這並非我想幹的事情,但當前別無選擇,既然作那就得作好。我花了一個月的時間怒刷前端知識,學習Angular、React,瞭解它們的設計思想,學習JS背後的原理,也看到了前端目前的發展情況。前端的技術迭代速度很快,但技術背後的原理都是相似的,因此抓住技術背後的本質纔是最重要的。
這段實習一直持續到了今年一月,我心理清楚,二月底三月初阿里的實習招聘就要開始,因此我擠出中午休息時間、晚上下班後的時間、週末的時間,複習我以前積累的東西。面試
三月三號,人生的第一次面試,在看到杭州的電話時,那一刻的心情既忐忑又興奮。在此以前,我並不清楚本身的水平在全部應屆生中處於一個怎樣的層次,在電話接通以前我已經作好了充分的心理準備,想象了各類被面試官吊打的畫面。第一次面試持續了54分鐘,面試官彷佛破有耐心,整個面試過程相談甚歡。那一次的面試給了我巨大的信心,由於我清楚,我離個人目標更近了一步。
在接下來的一個月中,我陸陸續續接到了五次面試電話,每一次面試都是一次學習的機會,能發現本身的不足,在與面試官交流的過程當中也能瞭解到最新的技術、最佳的實現方法。算法
四月十四,記得那天剛替導師給本科生上完算法課,晚飯事後便收到的阿里的offer。當時的喜悅之情溢於言表,這麼久的努力沒有白費。但我內心也清楚,阿里的實習轉正率向來很低,要想經過實習留下來也不是一件容易的事。因此在收到阿里offer以後的那晚,我從新規劃了接下來的學習計劃,將個人短時間目標更新成:拿下阿里轉正offer。數據庫
5.20,一個美好的日子,我懷着憧憬、忐忑、興奮的心情走進了支付寶大樓,開始了我三個月的實習生涯。這三個月的實習讓我學到了不少,我看到了天天的進步,也看到了本身的不足。這100天經歷了太多的事情,有太多的體會,有空我再單獨寫一篇實習期間的感悟與你們分享。編程
9.1晚上11點,個人狀態從『面試中』變成了『待跟進offer』,我會心一笑,我達成了人生第一階段的目標。那一刻我沒有太多的激動,在通過了2017年8個月的持久做戰以後,這個offer早已在個人意料之中。設計模式
次日是週六,這個週末我給本身放了兩天的假。雖然在杭州已經呆了102天,雖然支付寶大樓就在西湖邊,但天天兩點一線的工做,我並無去過西湖。那一晚個人基友得知我收到offer後便當即買票,坐了一晚上的火車來杭州爲我慶祝。也託他的福,在這個週末我第一次遊覽了這座美麗的城市。
最後的校園時光,我給本身定了一個新的目標,這個目標也許充滿了挑戰、充滿了艱辛與困難,但我想若是能達成,個人人生將會有很大的改變。在人生的路上,我還在奮鬥。但願與各位共勉。
在面試阿里的過程當中,博客幫了我很大的忙。並非說有博客在面試中會加分,而是寫博客的過程能加深你對知識的理解,並且回顧起來也特別高效(畢竟是本身寫的東西)。
我從研一開始便養成了寫博客的習慣,如今先過頭來,這兩年我一共寫了185篇文章,有22W的訪問量,也很榮幸稱爲專家博主。個人博客如今已經成爲我一筆最寶貴的財富,記錄了我技術的整個體系結構,也記錄了學習技術的心路歷程。
可能不少同窗都有寫博客的經歷,但能長期堅持的少之又少。我想告訴你們,任何事情都貴在堅持。只要堅持21天就能養成習慣。有的時候對這件事缺少興趣了很難再持續下去,但想一想本身的目標,咬咬牙堅持下去,養成習慣你就贏了。
個人博客通常都是看完一本書後的總結,我會把一本書中最核心的東西,按照個人理解把它們記錄下來。每一本書我都會看三遍,第一遍是快速瀏覽,瞭解整本書的體系結構、做者的行文思路,知道書中重要的、不重要的內容,也就是要創建起全局觀。第二遍我會精讀,把那些我認爲重要的內容挑選出來着重閱讀、反覆理解、吃透。第三遍閱讀,每每會冒出新的理解,我時常有這種『書讀百遍,其義自見』的感受。三遍讀完後,我便按照本身的理解,把核心內容寫成博客。因爲是本身的寫的東西,因此在複習的時候只要花上三五分鐘通讀一遍,全部的知識點又被喚醒。
本文是根據個人面試經驗,爲你們整理Java程序猿面試所需的知識體系。
互聯網大廠都至關重視程序員的基本功,也就是計算機基礎知識。一個程序員能走多遠、爬多高,很大程度上取決於基本功是否紮實。對於應屆生而言,大都比較缺少實戰項目經驗,雖然會有必定的項目經驗,但這些課程設計、實驗室項目的質量與公司實際的項目有着巨大的差距。所以,基礎知識便成爲面試考量的一大重點,並且基礎紮實的程序員可塑性比較高,作什麼都能比較容易快速上手。
計算機基礎包含以下幾門課程,相信計算機專業的同窗確定都已經學過。但互聯網公司面試的考點可能和大家期末考試的考點有一些不一樣,我都作了整理。
大學課程中的計算機網絡通常都按照OSI七層參考模型介紹,然而因爲互聯網公司的特性,他們更加關注平常開發所涉及到的傳輸層和應用層,因此須要重點掌握傳輸層和應用層中所涉及到的全部知識點。
【考點】
HTTP協議
HTTPS協議
【資料整理】
熟練掌握數據結構是程序員最最最基本的素養,在實際開發中選擇合適的數據結構將極大影響程序的效率。面試官通常並不會直接問數據結構的問題,而是經過出一些包含數據結構的算法題來考察你對數據結構的理解程度以及在實際項目中是否可以靈活應用。你能夠經過刷算法題來提高這部分能力,推薦《劍指offer》和《程序員面試金典》(注意是金典!)。不少公司的算法題庫都選自這兩本書。
固然,刷這兩本書的目的並非讓你死記硬背題目,題目變幻無窮,面試官能夠隨意改變。刷算法題最重要的是培養解決問題的思路和解決實際問題的能力。在刷題的過程當中要多多總結,再次強調,切忌死記硬背!
和數據結構同樣,算法通常也經過具體的算法題來考察,你也能夠經過刷《劍指offer》和《程序員面試金典》中的算法題來提升這方面的技能。但在刷這些算法題以前,你須要掌握幾類基礎的算法,並理解他們解決問題的思路(這纔是最爲關鍵的)。這些算法我已經在下面整理。
【考點】
【資料整理】
【考點】
【資料整理】
做爲一名合格的Java程序員,僅瞭解如何使用Java是遠遠不夠的。你可以熟練使用Java只能說明你已經成爲一名合格的碼農,可以利用Java實現某些功能。而公司做爲盈利機構,須要用最少的資源實現效益最大化,這就須要程序員具有高質量代碼的能力,而可否寫出高質量代碼取決於你對技術背後原理的理解程度。只有在理解Java背後的原理,你才能根據Java的特性,寫出更加高效的代碼。這在實際業務中是很是有價值的事情。互聯網大廠服務海量用戶,更加註重系統的性能,也更加註重程序員對原理的理解。
關於Java的基礎知識和如何使用,這裏我就不提了,隨便一本Java書籍都有詳細的介紹。這裏我整理了Java原理性的知識點,這些知識點將會成爲你面試的加分項。
【考點】
Java虛擬機內存模型特色和做用
【知識點資源整理】
【考點】
【知識點資源整理】