本文首發於微信公眾號——世界上有意思的事,搬運轉載請註明出處,否則將追究版權責任。微訊號:a1018998632,交流qq群:859640274
Java知識
java是Android開發的基礎,在BAT的初面中,會涉及到比較多的java基礎知識,所以比較重要,下面我介紹的書籍內容是由淺到深。
- 1.Thinking in java:這本書被稱為Java的三大聖經之一,雖然書比較厚,裡面的例子也比較冗長。但是如果細細去翻閱並且把例子都敲一遍的話,那麼我想你的java基礎會變得非常紮實。
- 2.Effective java:很多人會把Thinking in java 和這本書進行比較,但是我覺得兩本書的側重點還是不同的,TIJ側重的是java基礎,而EJ中會介紹大量的設計模式和最佳程式設計技巧。所以說這本書的層次比TIJ稍微高一點。這本書比較薄,所以看起來也不會很吃力。
- 3.深入理解Java虛擬機器:前兩本書都是介紹java,所以最後一本書我們需要了解java執行的基礎,而這本書就是一本很好的材料。JVM族語言是一個大家庭,瞭解了JVM和位元組碼,那麼你的視野就不再被java語言所限制了,你會了解到更多與Java同族的語言,這些語言比java優美同時又能使用豐富的java類庫。
- 4.Java併發程式設計:雖然Effective java和Thinking in java中都有花一些時間講併發,但是裡面講的都不夠深入。併發程式設計是一個非常難的事情,所以需要通過一本專門的書籍來學習。
下面是我看上面幾本書寫的筆記和總結,大家可以看看我著重看了哪幾章,然後根據自己的需求觀看書籍。
Android知識
BAT對於Android知識的要求不僅僅停留在呼叫表層的API,在面試的時候他們經常會問一些Framwork層面的知識,所以Android Framwork層的原始碼是必須要看的,但是該看到什麼程度呢?這時候就需要一些書籍來對你進行指導,下面的書籍的內容是由淺到深,大家把握一下自己的層次酌情選擇。
- 1.android群英雄傳:這本書其實也沒有涉及太多的Android原始碼,但是對一些API有比較深的解讀,如果你入門Android已經有1年了,可以讀讀這本書。
- 2.android開發藝術探索:這本書就涉及到了很多Android原始碼了,每一章都會由淺到深,從API的呼叫講到具體原始碼的執行流程,所以讀這本書需要一點耐心,建議入門android 2到3年的開發者觀看。
- 3.Android系統原始碼情景分析:這本書我也沒看多少,裡面全是講Framwork的原始碼的工作機制甚至還會深入到Linux驅動,所以大家可以選擇性觀看。
下面是我看上面幾本書寫的筆記和總結,大家可以看看我著重看了哪幾章,然後根據自己的需求觀看書籍。
java設計模式知識
設計模式面試的時候不常靠,但是如果問到了,都是必須要回答出來的,要不然很丟分。這裡結合Android也介紹一本書
- Android原始碼設計模式解析與實戰:這本書以Android的原始碼例子來講java的設計模式,起到了一舉兩得的作用,非常適合大家學習設計模式。
下面是我看上面幾本書寫的筆記和總結,大家可以看看我著重看了哪幾章,然後根據自己的需求觀看書籍。
演算法和資料結構知識
演算法和資料結構是大家老生常談的一塊,不管什麼面試筆試他們都會佔據較大的比例。所以這裡我就推薦一本書
- 演算法導論:這本書非常厚,裡面也有許多艱深的演算法知識。我們不需要全部看完,抓住幾個章節並用java語言將虛擬碼全書實現一遍,那麼你的演算法能力就不會弱。以下是我推薦實現的演算法章節
- 1.第二章 演算法基礎,演算法全部實現,課後題全做
- 2.第四章 分治策略,演算法全部實現,課後題全做
- 3.第六章 堆排序,演算法全部實現,課後題全做
- 4.第七章 快速排序,演算法全部實現,課後題選做
- 5.第八章 線性時間排序,演算法全部實現,課後題選做
- 6.第九章 中位數順序統計量,演算法全部實現,課後題選做
- 7.第十章,基本資料結構,沒有資料結構基礎的人,演算法全部實現,課後題選做。有基礎略過
- 8.第十一章,雜湊表,沒有資料結構基礎的人,演算法全部實現,課後題選做。有基礎略過
- 9.第十二章,二叉搜尋樹,演算法全部實現,課後題選做
- 10.第十三章,紅黑樹,演算法全部實現,課後題選做
- 11.第十五章,動態規劃,演算法全部實現,課後題選做
- 12.第十六章,貪心演算法,演算法全部實現,課後題選做
- 13.第十八章,B樹,演算法全部實現,課後題選做
- 14.第二十二章,基本的圖演算法,演算法全部實現,課後題選做
- 15.第二十三章,最小生成樹,演算法全部實現,課後題選做
- 16.第二十四章,單源最短路徑,演算法全部實現,課後題選做
計算機系統知識
BAT面試的時候有機率會問到計算機系統的知識,比如程式和執行緒,虛擬記憶體,檔案系統之類的知識。所以需要在這方面補充一下知識。
- 現代作業系統:這本書挺厚的,所以大家只要看一些常考的知識塊就行了:
- 1.程式和執行緒
- 2.記憶體管理
- 3.檔案管理
- 4.死鎖
下面是我看上面幾本書寫的筆記和總結,大家可以看看我著重看了哪幾章,然後根據自己的需求觀看書籍。
資料庫知識
BAT常常會讓一些做java的面試官去面Android,所以此時資料庫知識就常常會被當成廣度知識來考察面試者。因為我是使用Mysql比較多所以這裡就介紹一本書
- Mysql高效能筆記:這本書也比較厚,所以我們也只需要抓重點來看。重點有以下內容
- 1.Mysql概述相關章節
- 2.索引相關章節
- 3.SQL優化有關章節
計算機網路知識
計算機網路也是BAT面試官常考的地方,這個也是很多人講爛了的東西,所以就不介紹書籍了,給大家畫畫重點
- 1.HTTP相關知識,包括一個Http請求的內部結構,Http各個版本的不同,Http的特性等等。
- 2.TCP相關知識,包括三次握手、四次揮手、視窗滑動、擁塞控制等等
- 3.IP相關知識
- 4.5層和7層網路架構知識,這裡只需要瞭解框架就行,各個層的具體協議除了上面說的其他都不需要特別瞭解。
Android開源專案知識
在BAT面試的時候,面試官常常會問到專案中使用過什麼開源框架,如圖片載入框架、HTTP請求框架等等。此時你光會用是遠遠不夠的,你需要將開源框架的架構和原始碼分析一遍,這樣才會給面試官帶來好的印象。我這裡推薦幾個開源框架,大家可以去看看他們的原始碼,在面試的時候也好有一些說的材料。
- 1.Http請求框架:Volley、OkHttp、Retrofit、NoHttp
- 2.圖片載入框架:Fresco、Picasso、Glide
- 3.非同步框架:RxJava
- 4.架構框架:Databinding
下面是我翻譯Fresco原始碼專案的總結和databinding的原始碼解析,大家對這個有興趣的可以看看
不販賣焦慮,也不標題黨。分享一些這個世界上有意思的事情。題材包括且不限於:科幻、科學、科技、網際網路、程式設計師、計算機程式設計。下面是我的微信公眾號:世界上有意思的事,乾貨多多等你來看。