如何成為一名合格的 Android 開發工程師?

說說自身情況吧,自己有Java 基礎,首先自己對Android 比較感興趣,最近也是看視頻教程,也敲代碼,但是整體對Android 開發工程師的崗位需求還不是太了解,到底怎麼樣才能達到企業的要求,自己對怎麼學,學什麼不是太了解,怎麼系統地學?希望知乎的大牛能給點建議!!!


建議題主到拉勾網、內推網或者其它招聘網站看一看各個公司對一個Android開發工程師的招聘要求,你會發現一些共同的特點,拋開對學歷、工作經驗的限制,我總結一下:

  1. 紮實的Java基礎;

  2. 熟練使用Android的各個組件;

  3. 熟悉Android網路編程;

  4. 熟練使用Git/Svn版本管理軟體;

  5. 具有良好的溝通協調能力和團隊意識;

  6. 良好的學習和抗壓能力;
  7. 良好的撰寫文檔的能力;

  8. 做過Android性能優化;

  9. 掌握至少一門資料庫語言;

  10. 熟悉設計模式;

  11. 熟悉Android的單元測試;

  12. 使用過流行的開源框架;

  13. 熟悉JNI編程;
  14. 有上架應用加分;

  15. 有Github的加分;

  16. 有個人博客的加分;

  17. 寫過框架的加分;

雖然很多公司在招聘Android開發的時候總是說要求都很簡單:」能寫應用就行「,但是你會發現只有具備上述十幾條之中半數以上的特徵你才能在面試時輕鬆過關。

網上的資料很多,想要找到工作還是把基礎打紮實吧。


先說說我的情況吧,本人大四狗一枚,秋招剛拿到幾個Android開發工程師的offer,經驗肯定比不上已經工作的大牛們,不過回首這兩年的學習過程,也是有一些體會給大家分享一下。

從12年開始接觸到android開發吧,最開始也是看視頻教程,然後試著模仿著寫一點小東西,一周左右寫出來一個小便簽應用,當時也是很有成就感。但是一直沒有系統的學習方法,後來也做過一些項目,在項目中成長挺快的,所以實踐也是很重要的,自己或者小夥伴們有什麼好的想法,就努力去試著實現一下,不要怕做不出來,不懂網上有很多開源的東西可以學習借鑒嘛。

言歸正傳,說一說我現在覺得比較好的學習方法:

首先是資料:剛入門的時候可以看點講得比較淺的教材或者視頻之類的,入門之後的資料還是得看Android官方的開發文檔,(PS1:由於講得很詳細,不太適合初學者PS2:當然要求英語閱讀能力好一點)。國內的教材我看過一點,要不是講得不好,要不是內容太陳舊(Android SDK更新太快)。(國內訪問官網可能比較慢,不過文檔有chm格式可以下載,當然版本肯定老一點)

然後遇到問題了, 最好不要在baidu查,用英語描述問題,在google或者bing上查。Stack Overflow這個網站也是非常給力,我很多問題都是在上面找到答案的。國內網站的話,安卓開發_安卓開發論壇_Android開發_Android論壇還不錯。

要找開源項目:GitHub · Build software better, together.上面很多值得借鑒的東西,挺有幫助的。

對了,再分享一點面試的經驗吧,首先java基礎要紮實,這裡不得不說一下Thinking in java這本書,簡直是java程序猿面試寶典;然後演算法也要會一點,基本的搜索演算法和二叉樹這些要懂,一般問題會問一些實際的問題,不過很多都能運用那些個基本的演算法變化著來解決的;再然後是設計模式也要略懂,Android開發中比較常用的觀察者模式,還有一些比較常見的策略模式、工廠模式、單態模式、裝飾者模式等等;資料庫方面也要需要學習一下,至少基本的SQL語法得懂;計算機網路方面,HTTP、TCP協議等也需要了解,可能寫網路程序有一些用;最後當然項目經歷很重要,如果做過一些不錯的項目,甚至有上線的作品,在面試的時候加分很多,不僅如此,做項目的時候學東西的速度也比光看資料來得快很多。


永遠不滿足,對新技術、新工具有很濃厚的興趣。


能滿足產品經理的需求並且堅決不按iOS風格的UI實現基本就合格了!


Android學習之路 這篇博文描述的比較清晰,推薦給你。


視野不要僅局限於應用層,多研究研究下三層。這需要懂Linux。


把安卓當自己的女朋友,好好泡她。


各階段的Android工程掌握的專業技術

初級安卓開發工程師

掌握紮實的java基礎,了解各種設計模式,熟練掌握Android UI控制項、Android Java層API的相關使用。往中級層次發展時,繼續深入學習java編程技術,掌握更多Android開發需要的庫,還要精通ml、json解析,會做socket
c/s端的程序。

中級安卓開發工程師

除了上面提到的必備技能外,中級開發人員需要延伸到精通NDK JNI方式的開發,熟悉Android framework,會移植類似Fmpeg、Mplayer這樣的開源項目,並在Android上運行。

高級安卓開發工程師

作為高級app開發工程師,你只需了解,並不需要親自操作初級和中級工程師的工作流程,但是,你需要有一個整體知識構架,安卓開發各方面所涉及的知識你都有要了解,並有自己獨到的見解。需要熟練掌握Linux驅動開發,並對Linux內核結構很精通,掌握Android移植,包括硬體移植。


大學裡的計算機專業課先學好,數據結構、資料庫系統概論、操作系統原理、編譯原理、TCP/IP高級編程,java語言學好。


推薦閱讀:

4個月寫了4萬行iOS代碼,算多還是少呢?
在Android開發的過程中,有哪些坑是值得你放在checklist中警示自己的?
Android studio的工程默認繼承AppcompatActivity類和Activity不同?
2016 年第一季度,Android 有什麼讓人興奮的新技術出現嗎?
如何評價OPPO R9S升級後標識錯誤的Android版本號事件?

TAG:如何成為X | Android應用 | Android開發 | Android |