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/AsycTaskeclipse/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需要有哪些準備?