小小的I
熟練掌握Android UI控件、Android Java層API的相關使用。往中級層次發(fā)展時,繼續(xù)深入學習java編程技術,掌握更多Android開發(fā)需要的庫,還要精通ml、json解析,會做socketc/s端的程序。
好吃不懶做也
安卓開發(fā)是軟件開發(fā)的一個分支,除了它本身需要的java編程技能和android操作系統(tǒng)知識之外,所有與軟件開發(fā)相關的知識都要學習,比如數據結構和算法、關系代數、網絡原理、數據交換技術、軟件工程等。以下是安卓軟件編程開發(fā)工程師的任職要求:平臺手機終端軟件開發(fā)精通Android開發(fā)平臺及框架,一年以上實際開發(fā)經驗;2.精通Android GUI程序開發(fā);年以上J2ME開發(fā)經驗,熟悉J2ME編程;熟悉Linux環(huán)境編程優(yōu)先 ;從事過嵌入式開發(fā)工作2年以上。4.熟悉HTML/WML/HTTP,具有良好的編程思想;5.熟悉C/C++或者Java開發(fā)語言和環(huán)境;6.有一年以上移動終端應用軟件開發(fā)經驗,有Android或者iPhone開發(fā)經驗尤佳;7.基礎扎實,精通常用數據結構與算法和設計能力;8.熟悉移動終端特性和開發(fā)特點; 熟悉移動終端網絡編程,了解3G\WiFi等技術;9.熟悉C++/C#, MSSQL/MySQL數據庫開發(fā);熟悉多線程、Socket或ACE等網絡通信編程技術。
lucifer487
經驗
如果不是校招,Android經驗是必須的,我比較喜歡問一些基礎概念與技術原理,比如Activity、View、Window的理解,各LaunchMode的使用場景,View的繪制流程,Touch事件機制,Android動畫的原理,Handler,Looper的理解,Android跨進程通訊的方式,Binder的理解,AndroidMashup設計的理解等等。
水平
基本上就是EffectiveJava那本書里提到的東西,如果你背完那本書里的問題,并且對答如流,沒問題,就要你這樣的。其實也會考察關于final用法,反射原理,注解原理,java編譯過程,GC等一些常見問題。
基礎知識
其實就是計算機科班學生學校里學到的一些東西,在校招時這塊是重點,社招會放寬,但一些基本的常識是要有的,比如不少人都不知道http的getpost有啥區(qū)別,https的那個s是什么意思,講不清進程與線程的概念,不知道二分算法是個啥東西。這些簡單問題的篩選,可以過濾一些所謂野路子的程序員,是不是科班出身不重要,搞這行就得對一些基本常識有概念,不然以后怎么愉快的交流呢?
4.代碼質量的認識
我們需要的是一個對代碼味道有感覺的人,關于這點,看下《CleanCode》就夠了,面試中這點其實不好考察,可以讓他聊一聊對代碼質量的認識,雖然不能排除對方夸夸其談,至少想法不多,只能提到命名風格這一點的人是不符合要求的,也可以在寫Code的環(huán)節(jié)中觀察。
5.技術視野
比如對Android開發(fā)新技術的了解與學習,對其它流行技術領域的了解,這其實與我剛才提到的技術廣度的考察有關,就我面試過程中,發(fā)現很多非互聯網行業(yè)的從業(yè)人員,因為公司各種操蛋規(guī)定與公司技術氛圍的原因,技術視野相當狹窄。
我個人對這點深有體會,2011年我還在傳統(tǒng)行業(yè)從事軟件研發(fā),當時的公司因為擔心技術信息泄露,不讓上網,相當封閉,我個人雖然自認為已在那個行業(yè)內做到業(yè)內專家的級別,但總感覺哪里不對,有一天我很興奮的打算跟身邊同事聊一聊Android的時候,發(fā)現他們居然都不知Android為何物?2011年啊同志們,當時的震驚無法言表,深切感覺到需要作出改變了,毅然放棄多年行業(yè)積累,轉戰(zhàn)移動互聯網,直到現在。時至今日,多年前的小伙伴也有很多混出了名黨,開始走向人生巔峰,我也從來沒有后悔當初做出的選擇。
6.技術想象力
一個優(yōu)秀的技術人,如果知識的深度與廣度足夠,知識已成體系,那么他對于一些從未接觸過的領域,也是可以做出足夠合理的想象與判斷,面試過程中如果問到一些領域候選人沒有涉獵,這時候一般不用過多糾纏,但如果你想借這個問題考察下他的技術想象力,可以深入下去,比如問他:“你覺得這個東西應該是什么原理呢?”,“這個酷炫的控件,如果要你來做,你會怎么實現?”。在這方面表現出色的同學無疑是有深厚基礎與足夠廣度的人。
優(yōu)質工程師考試問答知識庫