標籤:

2016年年末作為一個Android 中級工程師都需要掌握哪些技能呢?

2016年年末作為一個Android 中級工程師都需要掌握哪些技能呢?


這個問題邀請的人真多,今天腸胃炎在家裡靜養,順手答了吧。

不同的公司,對於Level的定義是不一樣的,那首先需要明確一下什麼是中級工程師。我認為用業內較為常見的標準,應該是百度T5,阿里P6,騰訊T2.3的級別,這個Level的人一般屬於項目中的中堅力量。那對於這個Level的工程師要求是什麼樣的?

首先當然要具備紮實的基礎和一定的技術深度,看到有的回答提到了View和消息處理機制,這應該屬於基礎知識的一部分,應屆生也都應該了解。其次在技術之外,一般這個Level的工程師需要有較強的拆解問題能力,能夠Cover住一個複雜模塊,能夠主導完成大型的技術和產品需求,還要能夠帶人。但如果你問我必須要掌握的技能是什麼?那我還真的答不上來,不同業務之間的差別非常大,除了基礎知識,似乎沒有什麼是必須掌握的。

最近在社招,面了一些,對於基礎的要求,其實從T1.3~T2.3都沒有什麼很大區別,重點說一下深度。看很多人都還把對深度的認識停留在View上,其實大部分的View繪製,自定義動畫這些,沒有任何含金量。對於深度的體現是多方面的,一般最多的體現是在優化上,當然這裡的優化並不是只會用工具看耗時這些基本的優化方法。最近面的人里,看到比較亮眼的是對於啟動優化,熱補丁落地和長連接通道,這三個點看似簡單,但裡面涉及到非常多的技術點,細節和策略,真的想要做好,做出成果其實非常困難。

這個問題下看到了很多調侃的回答,感覺這背後應該是對現在Android大環境沒有信心,其實我覺得大可不必,情況沒有那麼壞,只是渾水摸魚越來越難,這是回歸正常的表現,也可以淘汰一些浮躁的開發者。當然如果之前微信小程序都能把你嚇個半死,儘早轉行說不定也是個很好的選擇。


一群說轉型都是故意的...

在關注業界技術動態的時候,也得多關注自身發展,我選擇堅守原生開發

我簡單說下理解的《中級 Android 工程師技能清單》,也是我目前的學習清單(比較基本的知識,算不上很中級,吸取有用的吧

1、View

View 是個很基礎又很重要的技能

【View 的事件處理機制】

【View 的繪製流程】

【View 的繪圖技巧】

【View 的坐標系】

【View 的動畫】

至此已經能解決日常開發中遇到的各種 UI 相關的困惑,為什麼這裡滾動很卡,為什麼這個點擊沒有作用,怎麼嵌套滾動的控制項等。

以及看懂各種開源控制項的源代碼。

2、消息處理機制相關

Android 消息處理機制?Handler?不是被初級面試官問爛了的東西嗎?

並不是,我自覺每次研究消息處理機制都能有新的收穫,而不是簡單的背會 Handler / Looper / Message

因為,Android 整個 App 的運行都是通過消息來驅動的,UI 更新,Activity 生命周期,各種事件,與這個消息處理機制密不可分的,只有理解的通透了就會觸類旁通。

3、性能優化

開發過程中最常遇到的事情就是(卡、慢、崩潰)

其中涉及都 UI 優化、網路優化、內存優化,這裡有很優秀的【胡凱】大牛的博客可以研究,

作為日常開發,要會查找並解決內存泄漏OOMANR 等問題。

4、設計模式

畢竟中級 Android 工程師,就不能像個應屆生一樣,產品給需求之後就哼哧哼哧的開始寫,第二天讓你改就開始哼哧哼哧的改。

得寫點上檔次的代碼,所謂穩定性、可讀性、擴展性優良的代碼。

搭建項目開始就要著重程序的架構,比如上它個 MVP,使得代碼分層邏輯清晰,別把更新 UI 和 請求網路,查資料庫一股腦全寫在 Activity 里。

平時用第三方庫多留意源代碼是怎麼寫的,這個很重要,因為可以吸收到很多經驗。比如 OkHttp,創建一個 Request 用到了 Builder 模式,Retrofit 使用了動態代理等。

以及理解源代碼的分包,每個.java 文件的位置和作用,學著理解到作者的思路。

5、Java 相關

自己的主力語言,一定要足夠熟練

比如泛型、註解、反射等,是寫一個 lib 最常使用的技能點

各種 Collection 和 Map 的相關類的特點特性都得理解吧

JVM 的內存管理、垃圾回收、類載入機制也得懂

另外,了解下熱門的技術如 熱更新、插件化、混合開發、RN等,也是加分項。

必備參考文獻

《Android 群英傳》

《Android 開發進階 從小工到專家》

《Android 高級進階》

《Android 開發藝術探索》

《Android 源碼設計模式解析與實戰》

【Android學習路線指南 - 任玉剛 - 博客頻道 - CSDN.NET】

【胡凱】Android 性能優化

【Android自定義控制項三部曲文章索引 - 啟艦 - 博客頻道 - CSDN.NET】

共勉!


正在向ios轉型。


快速轉型成為ReactNative和快速轉型到IOS和快速轉型到WEB的技能。


前端以及端技術,H5 、React、React Native、 Weex、Vue

一專多能。

================================分割線===================

我不是開玩笑,做好Android的同時,要多看一下RN和Weex;我最近看了RN和Weex的實現,以及自己動手實踐了一番,對開發效率以及性能進行了對比。最終,我替Android和iOS開發者捏了一把冷汗。。。換句話說,RN或Weex SDK的Native(android or ios)開發者,把我們常用的Component和Module封裝完畢,然後能滿足95%的常見需求;那麼Native開發者的未來,不得不讓人擔憂!


快去轉型到java後台養家糊口的技能


首先這位同學「android中級工程師」寫成「Android 中級工程師」是不是更好看些?

我認為一名中級的工程師至少應該掌握了以下技巧:

1、學會了解決問題的方法,且 90% 以上的問題都自己通過搜索、查看文檔、自己試驗等方法獨立解決掉了;

2、學會了提問的方法,能夠用清晰、完整、語法拼寫正確描述你的問題且在社區中通過與他人的討論中獲取靈感不斷嘗試解決問題,最後能夠將解決方案整理分享出來;

3、學會正確書寫文檔/注釋的方法,邏輯清晰、細緻的文檔和注釋能夠讓你的夥伴更快review /閱讀你的代碼,了解你的思路;(這個能力經常被忽視,如果你和一個好/壞產品經理合作過,你就知道了文檔能力有多重要了)

我認為一名中級的 Android 工程師除了上述的技巧之外,還至少做過以下一些事情:

1、獨立或者完整參與過一個 App 的開發;

2、認真閱讀過官方 API 文檔,至少完成 70% 的閱讀;

3、月薪至少超過20K,你才好意思說你是個中級開發者了吧(捂臉)。

提問的同學是希望什麼樣的答案呢?研究剖析使用了多少框架?了解了多少 Android 新技術點?

@vczh@App小公主


這幾天我一直在想這個問題,我本人也是做android,大家都知道大環境不好,以前簡單的顯示功能原生的app被h5蠶食,最近又被react native蠶食,是不是原聲就不會再有了????其實不是的,我覺得現在的安卓開發有點像當年的Windows開發,後來互聯網技術發展起來以後,桌面應用也慢慢的冷了下去,但是也不是死了,很多工業上也在用。所以我認為,今後安卓原生,能生存的領域應該是偏向硬體部分,比如藍牙,紅外,感測器,這部分。所以各位,我覺得還想做安卓的人,儘快轉到偏智能硬體吧


了解常用控制項的工作流程和機制

看過常用的幾個Service的源碼

能解決絕大多數非業務性的問題

了解常用的框架的原理

最好再學習一下iOS,只有學過iOS,你才知道Android是多麼的優美,至少系統控制項不會出現內存泄漏……哈哈哈


利益相關,Android猿

首先,你是程序員,其次才是java程序員,第三,才是安卓程序員


確實啊 每個公司的level標準都不一樣 我在這邊屬於項目經理級別 看了騰訊的要求 我連初級開發都不夠 真是個笑話 同樣是3年 差距確實挺大的 我要出去面試 真心不敢說自己是3年的android 丟人啊


快速轉型到人工智慧開發的技能


初級來說的話:常用第三方控制項(下拉、alertdialog、fusionchart);常用sdk(地圖、支付、分享,語音識別);性能優化(載入H5、圖片oom);設計模式(mvp,rxjava+retrofit);把這些都玩得很6就是了。


覺得在react native 和和weex還沒有大量用運h5+native從2016會持續,所以.……。


快速轉型到iOS開發的技能


頸椎病防治指南


好的工程師,不分語言.就我而言,我特別看重基礎.一個高級工程師,首要的是基礎絕對沒問題.


還未畢業的學生來答題。

因個人對android非常感興趣,所以就冒昧上來。

希望大家不要介意。

首先我用過c#來寫android,然後再用的java,已經感覺不出來有什麼非常大的明顯,也許就是在交互那裡java更強一些。

到底中級的安卓工程師是什麼級別,其實我也不太清楚。也許bat那裡會有明顯的分界線。

但是我認為,中級的安卓工程師不僅僅應該關注代碼的部分,包括很多人提到的view類,消息處理機制等等,這應該是一個基本程序員應該具有的基礎知識。

當然在優化和底層方面,這個是不可忽略的,也是現今程序員應該關注的部分。

現在寫程序越來越簡單,可是底層又有多少人去關注。

而如何做到讓你的程序有不一樣的時候,就在你的數學思想,數學思維。

給你一個程序,會有很多種演算法來解決,然而尋找最好的方法就會給程序大大精簡優化。

這個才是一個中級安卓程序員應該具有的知識和技能。現在程序員成堆,可是真正能寫出演算法的有幾個。一個程序的核心就是它採用的數學演算法。


快去轉型到js,前端後台一把抓,練就養家糊口的技能


掌握修燈泡,修水龍頭等


推薦閱讀:

如何零基礎自學安卓軟體開發?
如何通過技術優化讓 Android 程序變得流暢?
有什麼工具能查看一個Android應用中用了哪些第三方庫?
Android studio用真機調試時logcat一直輸出日誌?

TAG:Android開發 |