本文是根據個人阿里面試經驗,爲你們整理Java程序猿面試所需的知識體系(持續更新中)。html
互聯網大廠都至關重視程序員的基本功,也就是計算機基礎知識。一個程序員能走多遠、爬多高,很大程度上取決於基本功是否紮實。對於應屆生而言,大都比較缺少實戰項目經驗,雖然會有必定的項目經驗,但這些課程設計、實驗室項目的質量與公司實際的項目有着巨大的差距。所以,基礎知識便成爲面試考量的一大重點,並且基礎紮實的程序員可塑性比較高,作什麼都能比較容易快速上手。java
計算機基礎包含以下幾門課程,相信計算機專業的同窗確定都已經學過。但互聯網公司面試的考點可能和大家期末考試的考點有一些不一樣,我都作了整理。程序員
大學課程中的計算機網絡通常都按照OSI七層參考模型介紹,然而因爲互聯網公司的特性,他們更加關注平常開發所涉及到的傳輸層和應用層,因此須要重點掌握傳輸層和應用層中所涉及到的全部知識點。web
熟練掌握數據結構是程序員最最最基本的素養,在實際開發中選擇合適的數據結構將極大影響程序的效率。面試官通常並不會直接問數據結構的問題,而是經過出一些包含數據結構的算法題來考察你對數據結構的理解程度以及在實際項目中是否可以靈活應用。你能夠經過刷算法題來提高這部分能力,推薦《劍指offer》和《程序員面試金典》(注意是金典!)。不少公司的算法題庫都選自這兩本書。面試
固然,刷這兩本書的目的並非讓你死記硬背題目,題目變幻無窮,面試官能夠隨意改變。刷算法題最重要的是培養解決問題的思路和解決實際問題的能力。在刷題的過程當中要多多總結,再次強調,切忌死記硬背!算法
和數據結構同樣,算法通常也經過具體的算法題來考察,你也能夠經過刷《劍指offer》和《程序員面試金典》中的算法題來提升這方面的技能。但在刷這些算法題以前,你須要掌握幾類基礎的算法,並理解他們解決問題的思路(這纔是最爲關鍵的)。這些算法我已經在下面整理。數據庫
做爲一名合格的Java程序員,僅瞭解如何使用Java是遠遠不夠的。你可以熟練使用Java只能說明你已經成爲一名合格的碼農,可以利用Java實現某些功能。而公司做爲盈利機構,須要用最少的資源實現效益最大化,這就須要程序員具有高質量代碼的能力,而可否寫出高質量代碼取決於你對技術背後原理的理解程度。只有在理解Java背後的原理,你才能根據Java的特性,寫出更加高效的代碼。這在實際業務中是很是有價值的事情。互聯網大廠服務海量用戶,更加註重系統的性能,也更加註重程序員對原理的理解。編程
關於Java的基礎知識和如何使用,這裏我就不提了,隨便一本Java書籍都有詳細的介紹。這裏我整理了Java原理性的知識點,這些知識點將會成爲你面試的加分項。設計模式