疫情資訊仍在不斷刷屏,開工日期一再延遲,相信不少朋友都會擔心今年春招是否受影響。其實很多企業,比如騰訊、位元組跳動,為了保證春招的順利進行,儘可能的提高招聘效率,做出了一些調整:首先是更多采用線上面試的形式,有的甚至直接線上發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原始碼和第三方庫原始碼閱讀,可以根據自己感興趣的型別,選擇相應的原始碼庫或模組,給自己約定一個時間點,看完之後最後有個流程圖,哪些是核心類,類與類之間都有什麼關係,這些開原始碼實現的機制是什麼,用到哪些解決思想,這些要點最終可以通過文章輸出,我覺得輸出倒逼輸入是一種很不錯的學習方式。
移動AIAI,也稱人工智慧,1956年,在達特茅斯學院舉行的一次會議上正式確立了人工智慧的研究領域。會議的參加者在接下來的數十年間是AI研究的領軍人物,他們中有許多人預言,經過一代人的努力,與人類具有同等智慧水平的機器將會出現。現在來看AI這個概念很早就存在了,之前沒發展很大原因是基礎設施不夠完善、研究成本高,現在能夠大力發展是基於我們的網路頻寬變大、計算機效能提升、計算成本降低等等因素備齊了。AI是需要通過演算法來落地,那麼對於演算法理論背景就是數學,所以想進階AI開發,就需要去學習相關數學知識,特別是線性代數和概率論這兩門,是支撐很多演算法的理論知識。
在這我也分享一份自己收錄整理的Android學習PDF+架構視訊+面試文件+原始碼筆記,還有高階架構技術進階腦圖、Android開發面試專題資料,高階進階架構資料這些都是我閒暇還會反覆翻閱的精品資料。在腦圖中,每個知識點專題都配有相對應的實戰專案,可以有效的幫助大家掌握知識點。
總之也是在這裡幫助大家學習提升進階,也節省大家在網上搜索資料的時間來學習,也可以分享給身邊好友一起學習
如果你有需要的話,可以點贊+評論+轉發,關注我,然後私信我【進階】我發給你