事實上,這本書在我面試 Facebook 的時候給我提供了很大的幫助。為此,我專門為這本書寫了這樣一篇書評,同時也跟大家分享一下我自己的經歷。
2012 年的時候以交換生的身份進入了美國普渡大學攻讀碩士。2015 年畢業,之後加入第一家公司 VMware,在那裡工作了近 4 年時間。今年年初,我參加了 Facebook 的面試,並且順利地通過成為了一名 Facebook 的軟體工程師。和很多人一樣,我最初知道郭霖,是通過他 CSDN 的博客。那時候我還在 VMware 工作,並且剛剛從 Windows UWP 組轉到 Android 組。由於工作內容發生了很大變化,在開發過程中我遇到了很多問題。也許是機緣巧合吧,我在網上搜索 Android 學習資料的時候,正好在 CSDN 上看到了郭霖的技術博客。他的文章寫得很有邏輯感,思路清晰,總結得也很好,而且基本都有代碼展示,非常實用。看了郭霖的博客,我連續解決了幾個之前不太懂的地方,而且還比較系統地了解了 Android 的知識。可以說郭霖的博客堪稱我 Android 學習之路上的「一盞明燈」。後來得知郭霖要把博客內容整理出版,我就特別期待。《第一行代碼——Android》第 2 版出版以後,我第一時間就在國內購買了,並託朋友帶了過來,也算是海淘國貨了。事實上,《第一行代碼——Android》這本書在我面試的時候幫了我的大忙。美國軟體工程師的面試和國內可能不太一樣。面試的內容主要分為算法、相關專業知識、系統設計,還有 Behavior Question,俗稱 BQ。有的公司可能還會直接讓你寫一個 App 出來。面試的具體形式是什麼樣子的,面試官會提前跟你說清楚。而面試 Facebook 時,我的 Android 主要備考資料就是《第一行代碼——Android》,事實證明這本書派上了很大的用場。我是在 2019 年年初開始準備面試的,總共面了 Facebook、LinkedIn、Airbnb 和一家西雅圖的初創公司 OfferUp。這幾家全部都是美國西海岸的公司,而我從美國東海岸飛過去需要四個半小時的時間。於是,每一次面試的時候,我都在飛機上複習一下前面幾章關於 UI 方面的知識,然後到酒店之後再複習一下後面的內容,第二天面試一般都是十點開始。在面試之前,我又會翻開書來隨機看一看。可以說《第一行代碼——Android》完全成了我的 Android 複習資料。就我自己的面試經歷來說,《第一行代碼——Android》覆蓋了絕大部分的 Android 面試題目,尤其是 UI 相關的問題,很多都在這本書裡面講到了。但是由於我籤了 NDA,所以不能透露具體哪一家公司考了哪些題目。其中 Facebook有一道題目我印象非常深刻,當時我把《第一行代碼——Android》中總結的知識點都說了出來,面試官大喜,說這是他面過的所有人當中回答得最好的!其實,當時我還在亞馬遜買了一些美國的流行 Android 教材,比如 Big Nerd Ranch 什麼的。美國的教材特點是普遍篇幅很長,動輒 700 多頁,甚至上千頁。書中有很多細節和截圖,非常適合一步一步地跟隨學習。但是這樣的大部頭簡直就像是字典一樣,看起來非常不方便,對於想要快速入門或者準備面試的人來講可能並不是一個很好的選擇,因為這兩種情景都需要在很短的時間裡面把知識點總結出來,那么篇幅太長、充滿太多細節的書顯然不太適合這些場景。
而《第一行代碼——Android》是一本有細節同時又高屋建瓴的一本書。在知識點的取捨上面,作者拿捏得恰到好處;在內容章節的安排上,也做得非常科學與合理。這本書在有限的篇幅裡講明白了關於 Android 基本所有必需的知識點,甚至還有業界的 Best Practice,這和美式的圖書形成了鮮明的對比。
《第一行代碼——Android》被讀者們親切地稱為「Android 學習第一書」,因為它對於新手來說非常友好,內容上由淺入深,語言上通俗易懂。這本書先討論了 Android 的整體框架,使讀者對整個 Android 的歷史還有運行的機制有一個大概的了解。這些內容雖然對開發沒有直接的作用,但其實非常重要,對於讀者形成一個框架思考模式很有幫助,在以後的學習和實踐過程中也可以起到一定的指導作用。然後討論了能很快看到反饋的 UI 的知識,提升讀者的閱讀興趣。接下來分別對 Android 的四大組件進行了較為深入的討論。本書特別值得稱道的一點是對四大組件的討論並不是毫無聯繫地、孤立地去闡述,而是通過 Intent、AndroidManifest 等內容把四大組件串在了一起。另外,每一個章節都有實戰的內容,親自動手實踐下會非常有好處。就連官方內容之外的一些知識點書裡也有介紹。這些知識點很多都是業界常用的, 比如 OkHttp、Glide,等等。這些開源庫,如果沒有相關的開發經驗,只是看官方文檔,就很難知道為什麼要使用它們,在面試的時候就很容易回答不上來。而這本書將所有的這些知識點都結合應用在了實戰當中,幫助讀者去更好地理解。當然,限於篇幅的原因,《第一行代碼——Android》並不能覆蓋到所有的知識點,比如關於 memory leak 等方面的討論還比較欠缺,所以準備面試的時候還是要單獨準備一些常考的知識點。但就概率來講,能把這本書看完大半,就已經足夠應付初級程式設計師的面試了。自 Android N 之後,Android 系統本身也進化了不少,開發的方式也有了一些變化,比如現在 Google 已經首推使用 Kotlin 來進行開發了。聽說《第一行代碼——Android》要推出第 3 版,我也非常期待。同時也希望能夠翻譯成英文版,賣到美國來,這樣子可以讓美國的同行們了解一下中國程式設計師思考問題的方式以及對知識架構的理解。當然了,紙上得來終覺淺,絕知此事要躬行。在學習本書或者說任何技術類圖書的時候,動手總是最重要的。如果僅僅是看了書就想當然地覺得自己學會了的話,就很容易在實踐尤其是面試中吃虧,因為在實際的編程過程中總會出現這樣那樣的小問題,尤其是一些公司面試喜歡直接上手寫 App,如果平時沒有大量的練習的話,就很難在這樣實操型的面試中勝出。
《第一行代碼——Android》的代碼很有代表性,絕大部分示例都推薦你親自去實現一遍,如果記不住,就算是上機抄一下代碼也是極好的。此外作者郭霖的微信公眾號也經常發很多高質量的乾貨文章,推薦關注。
seanlitow
2019 年 7 月於 Menlo Park
經典暢銷,累計重印 23 次。
《第一行代碼——Android(第2版)》,最受歡迎的入門書全新升級,將所有知識點都在最新的 Android 系統上進行了重新適配,使用全新的 Android Studio 開發工具代替之前的 Eclipse,並添加了對 Material Design、運行時權限、Gradle、RecyclerView、百分比布局、OkHttp、Lambda 表達式等全新知識點的詳細講解。最後還會帶你一起開發一個天氣預報程序,並教會你如何將程序發布到應用商店,以及如何在程序中嵌入廣告盈利。