掃清Android面試障礙--面試前的準備
轉載文章,希望對大家有所幫助!
有的時候我們在職場上會碰到各種各樣的坑…… 不管是創業公司倒閉啦,新同事合不來啦,氛圍太差受不了啦。如果說女人的安全感來自於獨立,那麼程式設計師的安全感就是手中有技術,心中有原始碼。想飛得更高,有哪些是你平時可以做的呢?
本篇接上一篇 掃清面試障礙。上篇主要拋磚引玉,提到了許多技術和非技術相關的面試技巧等。本篇講述面試前的準備,這不僅是技術實力的積累,還有相當一部分軟實力的積累。即使是暫時沒有跳槽想法的技術人,也應當生於憂患之中。行業的發展非常迅速,逆水行舟不進則退。危機意識很重要,厚積薄發才能更上一層樓。
面試前的準備可分為長期準備,和短期準備。首先宣告,文中提到的書籍以及公眾號,部落格等,都是我自己覺得特別優秀的,絕沒收任何廣告費。。。
長期準備:
1. 訂閱幾個高質量的公眾號
很多大廠都有自己的微信訂閱號,很多人的閱讀時間非常瑣碎,那麼你就可以在地鐵上、在等公交車的間隙去刷刷最新技術的發展。訂閱號貴精不貴多,某個訂閱號裡的文章一天也最多一篇,不然就容易粗製濫造。這裡推薦幾個高質量的android公眾號:
騰訊Bugly: weixinBugly。
騰訊bugly,專門做效能監控的平臺,裡面的文章也都是總結bugly bbs上企鵝工程師文章的精華。傳送頻率很低,質量都不錯。後期面試中很多關於記憶體洩漏的答案都來自於此。
移動開發前線:bornmobile。info主編徐川個人的微信公眾號,裡面的文章有原創也有很多精華集錦。關鍵是都比較嚴肅,不像某些個人公眾號發展到後期變個人的獨白段子手,乾貨也多,由於大都是搬很多個人部落格和採訪,所以質量還不錯。
Android程式設計師:androidtrending。公眾號所有者應該是湯濤。雖然Android技術公眾號不少,個人感覺這個公眾號是比較能緊跟潮流的。也沒有什麼廢話而是純技術。
程式媛:programgirl。一個程式媛發聲的平臺,更新不定期,歡迎所有女程式設計師都來投稿,投稿地址:[email protected]
2. 加入一個本地android組織
大學時期我開始沉迷於android技術,但當時不善社交自命清高,往往是孤軍奮戰。回過頭看,一個人的力量是有限的,只有交流才能進步,閉關鎖國是沒前途的。結識一批有同樣追求的同行,甚至有很多比自己厲害許多的專家人才,你才能看到你未來努力的方向。人外有人,天外有天,千萬別做井底之蛙。資訊時代資訊的交換是有價值的,小夥伴們一起努力也會將你帶入一個好的氛圍。
但是要謹慎地選擇夥伴。我知道男生聚在一起最容易犯的錯誤是互相影響,比如大家一起去打一盤遊戲啦,,各種吹牛或恭維啦,,這些都是不可取的。低調而務實的小夥伴們聚在一起才有創造力,你們共同完成一個夢想一件事。
這裡舉個例子,https://github.com/LittleFriendsGroup/ 裡的AndroidSdkSourceAnalysis。 他們發起了一個開源專案:18天認領android原始碼解析。這就是共同進步共同成長的典型吶~ 朋友應當是志同道合的,而非沒目標的烏合之眾。
3. 看幾本必看的進階書
市面上入門書籍氾濫,而適合中高階的主流技術書實在太少。一方面是能寫這種書的大牛懶得寫,據我所知每賣出一本技術書,作者才拿到4塊錢稿費。而中高階的受眾面畢竟窄,即使熱賣,賣出一萬本,那麼所拿稿費也不過是4萬。然而有這種水平的開發者根本不缺這幾萬塊錢。寫書是一件特別耗費精力的事,除了內容還要排版,吃力不討好。更何況還會面臨盜版橫行的情況,就更不值了。寫書僅剩的吸引人的價值,恐怕是成書後帶來的名聲與成就感。由於這種客觀情況的存在,市面上粗製濫造的書實在太多,我在此幫大家剔除糟粕,列舉幾本我覺得值得的書。
推薦書單:
《Android開發藝術探索》任玉剛
業界良心!裡面的很多東西面試都被問到了!
《App研發錄》包建強
App研發錄:架構設計、Crash分析和競品技術分析。這是一本非常務實的書,書裡提到的內容都可以直接拿來用在專案上。這個作者原先是搞.net的,工作十多年經驗非常豐富。
摘錄一段讀後感:
> “落地”,是閱讀此書的最大感受,大到技術架構、競品分析、釋出流程,小到每個Crash、員工座位安排、開展技術分享、簡歷篩選,作者總在尋求落地的解決方案,細細閱讀,你不覺得這種方案有多麼高大上,不覺得背後有多麼華麗的理論支撐,但是你會覺得,一切都是踏踏實實、真真切切可落地實踐的,為工作帶來不少的實踐指導。
《Android核心設計思想》
這本書寫得很深,基本是這三本書裡最接近底層的書了,讀起來也比較晦澀。需要有一定的理解能力。
全書從作業系統的基礎知識入手,全面剖析程序/執行緒、記憶體管理、Binder機制、GUI顯示系統、多媒體管理、輸入系統等核心技術在Android中的實現原理。書中講述的知識點大部分來源於工程專案研發,因而具有較強的實用性,希望可以讓讀者“知其然,更知其所以然”。全書分為編譯篇、系統原理篇、應用原理篇、系統工具篇共4篇22章,基本涵蓋了參與Android開發所需具備的知識。
4. 收藏幾個部落格,緊跟幾個專家
有一陣我很迷茫,不知道繼續進步的方向,也不知道我能達到什麼樣的程度。我甚至因為找不到安卓上進步的空間而橫向求索,玩了一年的iOS開發。就在這時,我的偶像來了。偶然間一次搜尋,翻到了 hukai.me。(當然發現作者長得帥也是一個激動的原因)
原來安卓還可以這麼玩~!可以像胡凱一樣緊跟谷歌的最新視訊教程並翻譯它們。 也可以像
程式碼家 那樣寫控制元件造輪子。程式碼家甚至因為輪子造得好而被谷歌發現,發出了工作邀請。
具體你可以關注哪些安卓的優秀部落格可以見 這個連結:
部落格地址 |
---|
柳志超部落格 |
程式碼家 |
胡凱 |
禪 |
方傑 |
技術小黑屋 |
程式亦非猿 |
脈脈不得語 |
5. 寫自己的獨立技術部落格
見賢思齊焉。
有了那麼幾個專家榜樣,我的視野突然變開闊了,也想變成像他們一樣厲害的人。這個時候你已經閱讀了幾本書,也有了一定的積累,自然而然也會想發表自己的看法和見解。
總之,克服瓶頸期的最好的辦法就是六個字——總結、歸納、演繹。把你的收穫都寫到自己的部落格上吧。最好是獨立的部落格,一方面你會收穫到折騰獨立部落格的樂趣,另一方面它也是你的個人品牌,假如你能長期積累、堅持的話。獨立部落格唯一的缺點是導流。當然,你對自己的技術總結,目標是為了精益求精,為了自己的進步成長,至於讀者多不多,倒是其次的。這個後期在面試中也大有裨益。別人剛認識你的時候對你不瞭解,你扔出一個部落格地址,勝過你的千言萬語。
沒事的時候就去寫寫部落格吧,記住__不要寫很多生活瑣事__,而是__記錄進步__。別人不是為了看你的個人秀而來到你的空間,而是搜尋到你對技術新的見解,覺得對他可能會有幫助才過來的。牢騷什麼的,寫到你的社交網站上去。
有的人很勤奮,部落格天天更新。有量而沒有質,感覺很空虛。我主張堅持精品博文才是正道,,畢竟資訊已經那麼氾濫了,不要再為網際網路製造過剩的垃圾辣。。。(真的不是教你懶) 想要寫一個優秀的部落格,不僅要有實際的專案積累和廣泛的閱讀積累以外,uml類圖,流程圖,順序圖等,也是你必不可少的好助手。假如再加上__思維導圖__,不僅使你的思路更清晰,讀者也能一目瞭然,有一個全域性觀。現在就開始試試這些工具吧,會讓你的部落格更嚴謹更正式,更熠熠生輝。
6. 看原始碼
這裡列舉幾個你必須要看的原始碼:
Binder
LruCache
Handler
AsyncTask
EventBus
不要懷疑,這些在面試中一定會被問到的。前期你看過原始碼也會淡忘的,先有一個大致的印象就行。
7. 提交自己的開原始碼
寫什麼樣的開原始碼,有這麼幾個方向。
一是你部落格中的例子。一個好的技術部落格不僅有圖有文字,假如有例子,更勝過蒼白的自然語言。百聞不如一見,說得再多也不如實際一個例子。
二是自定義的控制元件基礎庫。這個主要集中在酷炫的動畫,還有互動更簡潔的自定義控制元件上。這方面的大牛比如很多國外的庫,還有國內程式碼家部落格上提到的開源庫~
三是有關測試方面的工具。像leakCannary, blockCannary等,能讓開發者更好地測試記憶體卡頓洩漏等。
四是一些反編譯的工具。
五是一個完整的上架作品。
短期準備:
1. 去NewCoder刷題
這個網站主要包括了幾套公司真題,比如有 Android的,演算法講解,資料結構。
有時間的可以去上面刷刷題,題量較大~
2. 去極客學院閱讀幾本微書
沒時間閱讀厚重的大部頭怎麼辦?有一些不出版的非紙質微書也是極好的選擇。極客學院有幾個系列 寫得不錯,比如《深入理解 Android 卷》系列,《Java 集合學習指南》等。
做工程的開發者容易陷入埋頭寫程式碼的怪圈,實際上多看一些技術書,吸收別人的思想精華進步會更快。
3. 看幾篇分析原始碼的文章
在長期準備中,你已經接觸過一些原始碼了;當然你可能跳槽時間比較緊,那不如關注一下這個開源專案吧,裡面包括了大量的 android原始碼分析。
如果你有時間,你也可以參與到這個專案中去。
4. 梳理一下知識體系,找出薄弱環節
總結、總結,再總結。
總結是一個人非常重要的品質,在總結中思考自己的不足,完善自我。不僅適用於面試,也適用於職場,日常生活等等。常思考,才可能變成一個智慧的人。
具體有哪些可能的薄弱環節,可以看下一篇整理的30個發散性問題。
簡歷的準備:
寫好簡歷也是一個重要的環節。程式設計師最好常備一份簡歷,以備不時之需。另一方面,更新簡歷的過程中也會明白,哪些經歷是無用功,哪些是加分項。
有幾點
1、儘量避免主觀表述,少一點語義模糊的形容詞,除非是大公司大牛,已經有成果撐腰,否則慎用「熟悉… …」、「使用過… …」
2、多一點表意清楚,語氣肯定的數量詞、名詞、成果描述。一定要將自己的優勢和期望明晰地表達出來,便於招聘方能對候選人有更準確的定位:
介紹技術:最近幾份工作經歷中所參與過的產品、專案、角色
在工作中做的專案的技術細節
克服過的技術難點與細節
感興趣的技術
在程式馬拉松上參加的專案或者是業餘的個人專案(+link)
如果領導過技術團隊,寫下帶的團隊的規模與管理風格
介紹自己:過往有特點經歷、擅長的方向、對網際網路的理解、職業發展規劃
3、突出重點。重要的放前面,不重要的經歷往後排。儘量註明每段經歷的時間,不然技術官或hr會一頭霧水。比如你面試 Android開發,iOS的經歷就放後面一筆帶過,另外時間越遠的優先順序也越低。對了,記得把聯絡方式寫在開頭,不然對方聯絡不到你,可就把你忘了。
3、試試用markdown語法,注意下排版,預覽再提交,版面整潔、乾淨,也是加分項。
4、HR/技術負責人更喜歡看到一份顯示「職業上升趨勢」的簡歷。比如你做開發五年,跳過兩三次槽。那麼你的職位,你所做的技術難度應當是越來越具挑戰,而不是依然羅列各種瑣碎的需求實現。
5、牛人講結果,普通人講過程。話雖如此,你只要不太囉嗦,該列出的事情還是要列出來的。不僅如此,你在該專案中發揮了什麼作用,有什麼反思,也可以寫出來。記住,你出賣的不僅是技術,還有能力。
千萬別…
1、真實的反映你的工作,別浮誇。
因為你的面試官之後一定會問起浮誇的事情,假如你不能自圓其說,會留下非常不好的印象。
2、記得最好不要出現“精通”等詞彙。
很少有人能精通JAVA,精通資料庫,這樣的字眼基本等於自殺。好的辦法是闡述事實。比如用JAVA開發過什麼系統,在什麼專案中深入接觸資料庫等等。
3、簡歷上的所有技術,你必須諳熟於心。
甚至你應當練習幾遍,找出可能發散出去的所有問題。只有你非常熟悉,並且在面試中足夠自信,你才有能力引導面試官問到你想要的坑中。
4、簡歷長度不要超過三頁。最好是兩頁這樣一目瞭然,當然如果從業經歷比較長,也可以多寫點。
5、別撒謊。天下沒有不透風的牆。假如你不想讓人知道什麼,你可以不寫;假如你在原公司的鍛鍊機會太少,那麼你可以將經歷寫到自己的開源專案中去。