2020 春招新變化,Android開發 準備好了嗎?

像程序那樣思考 發佈 2020-02-11T13:01:09+00:00

最早開始的開發模式基本是基於Android系統自帶 MVC 模式,Activity 基本類似於Control 的作用了,View 和Mode 互相耦合,後來才演化出現在主流的 MVP、MVVM 模式,順便提一句,MVVM 模式其實是在微軟 WPF 技術體系中提出來。

疫情信息仍在不斷刷屏,開工日期一再延遲,相信不少朋友都會擔心今年春招是否受影響。其實很多企業,比如騰訊、字節跳動,為了保證春招的順利進行,儘可能的提高招聘效率,做出了一些調整:首先是更多採用線上面試的形式,有的甚至直接在線發offer。其次,簡歷篩選環節更加嚴格,用最短的時間找到最匹配的候選人。


那麼,對於技術人,尤其是 Android開發來說,到底需要掌握什麼技術才能通過篩選呢?這裡列出幾個流行的技術:

移動架構

移動架構是 2017 移動技術年度TOP5話題之一,從中就體會到架構是有多火,記得剛開始學 Android 時候,哪有現在那麼框架,那時候談架構的更多是在服務端開發,比如多層架構,有展示層、業務邏輯層、數據訪問層這就是最簡單的三層模式,Android系統則是基於事件驅動響應機制設計的單頁面架構,其實跟瀏覽器中的窗口頁面是一樣的, 系統中一直有個消息輪詢監聽機制,哪個事件被觸發了,相應的響應代碼進行處理,這些處理操作是被提前註冊到系統中。

最早開始的開發模式基本是基於Android 系統自帶 MVC 模式,Activity 基本類似於Control 的作用了,View 和Mode 互相耦合,後來才演化出現在主流的 MVP、MVVM 模式,順便提一句,MVVM 模式其實是在微軟 WPF 技術體系中提出來。

圖中顯示兩個方面:

展示層: MVC、MVP、MVVM、Clean、Flux、Android Architecture Components

架構層:模塊化->組件化->插件化->沙盒/雙開技術,比如可以雙開微信,類似Docker, 每個頁面都是插件,類似Vue.js中每個頁面都是組件。

性能優化

簡單來說,一個APP 是需要從三個方面被關注的,業務功能、符合邏輯的交互、性能響應。如果我們在使用一個 APP 時候,經常滑動時經常卡頓、時不時崩潰、有些功能設計簡直非常規,比如在 Web 網站有樹層級等麵包屑點擊,你非要在手機也搞一個類似樹級點擊加載,那是不是有點強人所難了,我上拉下拉、左滑右滑不行嗎,非要通過點擊才行嗎?那麼性能優化核心是什麼呢?追求快、穩、省、小,關注卡頓、內存泄漏和崩潰、代碼質量和邏輯、安裝包大小四個方面。想進一步的了解的話,可以查閱下這篇文章《Android APP 性能優化的一些思考》

APP安全

APP從代碼安全、到傳輸安全,再到存儲安全。代碼可以通過混淆、加固來保證、傳輸安全基本基於加密算法和Token來保證傳輸的唯一性、存儲應用不可逆加密算法進行設置、所以掌握一些密碼學理論尤為重要,起碼要知道哈希散列算法,對稱加密和非對稱加密等一些常見的加密算法。

基礎進階

我們平常在工作中碰到的View滑動衝突問題、其實通過掌握View工作機制和Android觸摸事件體系就能輕易解決掉,常見解決方式有外部攔截法和內部攔截法,基於橫坐標滑動距離與縱坐標滑動距離相減得出的值,判斷出是左右滑動還是上下滑動。還有對於需要開發絢麗的動畫效果,那麼對於視圖動畫和屬性動畫一些特性必須有一定的了解。JNI 和 NDK 開發也是比較常見,特別對於一些做 SDK 項目為主的,這一塊開發流程也是需要掌握,Android 中的四大組件工作機制其實底層應用的是Binder機制,我們不妨從 AIDL 這個接口來了解 Binder。

持續集成

持續集成編譯環境是敏捷開發中很重要的一個組成部分,它能夠有效地提高整個團隊的生產效率,最大化的減少人為的出錯的可能。比如,通過代碼的持續提交,可以減少代碼合併的痛苦,更快地與其他人代碼集成,通過集成編譯,能夠及早地發現代碼庫存在的錯誤,並支持產品、測試等人員及時取包進行功能驗證,所以對於Git、Gradle工具、Jenkins伺服器需要掌握起來。

開發語言

19年可以說是 Kotlin 年,在 Google IO 之後 Kotlin 著實風光了一把,開發者對於效率的追求是 Kotlin 如此受歡迎的最大原因,而它的勢頭也很不錯,跨平台的野心讓更多人有了使用它的理由,如今看起來,它甚至比 Swift 更有前途。既然 Kotlin 已然成為 Android 世界的頭等公民,與 Java 完全兼容,我們有什麼理由不去擁抱它呢。

大前端

其實移動端開發也是屬於前端開發,只不過原來我們所指的前端往往都是Web的前端開發人員,開發的是網站,而移動端何嘗不是一種展示載體,同樣有入口,只不過相比網站端移動端具體天然的可移動性、可便捷性等特性。隨著 H5 興起,原生能實現的功能同樣在 H5 端也能實現,並且在體驗性方面也逐漸提高,並且H5天生就具有動態性和跨平台,這也是 H5 能夠一時潮流的原因之一。

設計原則

這些設計原創才是本質,才是不變的,才是我們需要真正要掌握的,開發語言特性、開發框架發展實在是太快了,我們更不上,不是有這麼一句話嗎,封裝具體變化的,抽象起來就行,去追尋哪些不變的內容。掌握一種設計模式其實也就掌握一種解決方案,這些都是前人總結的知識結晶,基本都是基於特定領域解決特定的問題,我們需要學會在前人肩膀上解決問題。

服務端開發

最近微服務火的一塌糊塗,雖然我們基本是做移動端開發,但是基於全棧發展的趨勢,對於服務端開發勢必要了解,可能沒有實戰項目讓你真刀真槍的干,但是對於微服務的結構理論、服務與服務之間通信、聚合是什麼樣的流程也是需要有所耳聞,在自己擅長領域深入專研的同時橫向擴展關注也是需要的,不能關起門來閉門造車,兩耳不聞窗外事那是不行的。

閱讀源碼

對於Android源碼和第三方庫源碼閱讀,可以根據自己感興趣的類型,選擇相應的源碼庫或模塊,給自己約定一個時間點,看完之後最後有個流程圖,哪些是核心類,類與類之間都有什麼關係,這些開原始碼實現的機制是什麼,用到哪些解決思想,這些要點最終可以通過文章輸出,我覺得輸出倒逼輸入是一種很不錯的學習方式。

移動AI

AI,也稱人工智慧,1956年,在達特茅斯學院舉行的一次會議上正式確立了人工智慧的研究領域。會議的參加者在接下來的數十年間是AI研究的領軍人物,他們中有許多人預言,經過一代人的努力,與人類具有同等智能水平的機器將會出現。現在來看AI這個概念很早就存在了,之前沒發展很大原因是基礎設施不夠完善、研究成本高,現在能夠大力發展是基於我們的網絡帶寬變大、計算機性能提升、計算成本降低等等因素備齊了。AI是需要通過算法來落地,那麼對於算法理論背景就是數學,所以想進階AI開發,就需要去學習相關數學知識,特別是線性代數和機率論這兩門,是支撐很多算法的理論知識。


在這我也分享一份自己收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料這些都是我閒暇還會反覆翻閱的精品資料。在腦圖中,每個知識點專題都配有相對應的實戰項目,可以有效的幫助大家掌握知識點。

總之也是在這裡幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習

如果你有需要的話,可以點讚+評論+轉發關注我,然後私信我【進階】我發給你

關鍵字: