Android程序員,最常用的20%技術有哪些?

本人在校大學生今年大三剛開始學安卓,今天學校安排模擬面試,在技術面試時,面試官問的很多問題,老實說大多都不會,有的一些也是一知半解,比如說,像java分哪些模塊,string和stringbuffer有什麼區別,Google之父是誰

~惆悵啊,

於是問他現在的我需要掌握哪些技術,是不是課堂上交的都要精通,他說就掌握來說就先要掌握常用的百分之20,就像語言一樣掌握了常用的百分之20就可以愉快的交談了~

那麼在實際開發中安卓常用的技術有哪些~求解


之前回答錯了,我以為是面試問題,修改了一下,其它想到再補充。

----------------------

1.Java基礎

  • 反射原理以及使用

  • 註解原理以及使用
  • 業務抽象分析能力(例如讓你實現一個俄羅斯方塊遊戲,你怎麼設計)
  • 能識別並掌握常用的設計模式

2.Android基礎知識

  • 常用界面的開發方法,常用控制項的使用,複雜視圖能夠通過自定義控制項的方式實現

  • 四大組件的基本原理和最佳實踐
  • Activity 啟動模式的使用場景,生命周期,現場恢復。
  • Fragment的生命周期,現場恢復,如何與Activity通信,如何與Fragment通信。

Fragment正確使用方式,參見我的其他回答:關於android,用多個activity好,還是使用單activity配合fragment更好? - 知乎用戶的回答

感謝@Chen Crazy 的補充

原答案中:(傳授一個經驗給你,寫完fragment後,Home到桌面,然後用獵豹,360,百毒,疼訓清理助手清理一下,打開app,看下fragment是否異常,就知道你的Fragment是否處理好了現場恢復)

這個可以通過打開 開發者選項-不保留活動 這個功能實現,這樣activity離開後台後就會被銷毀,再回到原界面就會導致activity和fragment重建。

  • Service綁定與非綁定與混合綁定的區別,如何與Service通信。
  • Android的跨進程通訊
  • Android的數據存儲,以及分別的應用場景。

3.並發編程

  • 清楚什麼是ANR,為什麼導致ANR,ANR分類,如何避免ANR。
  • 清楚Handler的使用場景,對於Handler Lopper 工作原理的理解。
  • 清楚AsyncTask的在不同Android版本上的差異。
  • 清楚Loader的理解和使用。
  • 清楚使用Handler AsyncTask需要注意的地方。
  • 清楚Android開發哪些地方中可能會導致內存泄露,以及如何如何避免。
  • 多線程的管理
  • Android網路通信

5.UI方面

  • View的繪製流程,以及Touch事件機制。
  • 知道如何處理圖片的載入,清楚圖片的緩存機制,以及如何避免圖片內存溢出,內存泄露。
  • 了解並能夠使用Android裡面提供幾種動畫,知道不同系統版本的差異。
  • 清楚Android UI 圖標準,知道如何將UI圖尺寸轉換Android正確單位尺寸。
  • 可參見我之前的回答:Android客戶端開發怎麼問UI要尺寸,怎麼處理尺寸? - 知乎用戶的回答

6.其它

  • AndroidStudio的使用(包括調試工具,測試工具,快捷鍵等)

  • Gradle的使用,理解相關配置的寫法和過程。
  • 性能優化(過度重繪,嵌套過多優化,圖片載入優化等)

  • 能通過調試,以及相關工具解決內存泄露問題。
  • 理解單元測試基本原理,能通過單元測試有效驗證代碼邏輯,提高代碼質量。

  • Git的使用,以及常用的工作流。

  • Android常用第三方庫,以及根據需求自修改三方庫實現。(例如修改圖表庫代碼以符合需求)


兄弟,你先把java學好。


基本部分:

Java基礎部分,面向對象,類集,IO

Android 4大組件的用法

Android自帶的一些view必須要會

彈窗:Toast/Dialog/WindowsManager

動畫:幀/Tween/屬性動畫

文件存儲:file/xml/SharedPreferences/Sqlite

網路通訊:各種庫,JSON/XML數據格式,當然也可以HttpURLConnection自己實現

線程/UI線程交互:Handle/AsycTask

eclipse/as 的debug技能

進階部分:

多進程通訊IPC/aidl

自定義View實現

Touch事件分配

圖片緩存優化:載入時查找LruCache內存/sd卡/伺服器

JNI/NDK

常用設計模式

其他:

代碼混淆配置

AndroidStudio Gradle的配置

簽名打包

進階可以看下《ANDROID開發藝術》這本書還不錯

手打,暫時只想到這些,歡迎補充


1Java基礎,比如多線程,jvm,垃圾回收機制,設計模式,常用的數據結構(這個最好看一下底層源碼)

2計算機網路,現在的app如果不能聯網,基本就是一個孤島。所以關於計算機網路的知識一定是有的,比如tcp/ip,udp,http等。

3Android基礎,比如四大組件,fragment,並發,view繪製,事件傳遞等。最好能結合源碼,比如Intentservice,AsyncTask,Handler等的源碼。

4一些比較常用的框架,okhttp,volley,fresco,glide,rxjava,rxandroid,熱修復的一些框架等這些。

5如果有餘力的話,c++,html,js最好都能懂一點。


做了那麼久的安卓,我還真沒注意過java之父是誰


推薦大家一個非常好的github開源項目;open-android/Android


看你做什麼,不同的app不同的常用方法,不要管什麼常用不常用


技術是什麼意思。。

語言首先。。java基本語法是要學會的

另外布局文件的xml語法也是要懂的。這個簡單。。

然後就多練多寫就好啦,認認真真學個半年去找實習不是什麼難事


基礎基礎,安卓基礎


java基礎將伴隨這你一生的開發 適配器 Activity 服務 意圖 XML 支付三方(支付寶 微信 銀聯)真的很常用 shareSDK(分享) 三級緩存 VOL (網路請求) 工具Studio elp有時候也得用 但漸漸被淘汰 有些老項目得用 在就想Xposed開發必須得用elp 貌似沒什麼了 最常用的好像就這幾個了 對了 項目後期加固 以及圖片壓縮 混淆(其實並沒有太大用 可以脫殼 反編譯之後的代碼要想看也可以慢慢跟)


推薦閱讀:

安卓系統的後台是怎樣的?
拿到一個apk包後,怎麼判斷其是否加殼了?是否做了代碼混淆?
如何通過自學成為一名 Android 應用開發工程師?
Android 和 iOS 應用開發有哪些不同?
想開發一款安卓社交類的APP需要有哪些準備?

TAG:移動互聯網 | Android開發 | 程序 | Android |