文章插圖

文章插圖
可能有很多朋友在做了多年技術之后都會進入一個迷茫期,對自己所負責的業務邏輯非常熟悉,但是每天就只是和各種需求和Bug打交道而已,總感覺對自身能力的提升并不大 。雖然在公司里屬于不可缺少的一員,但是同時又擔心離開了這家公司就找不到更好的工作了 。
有這種焦慮的朋友或許應該思考一下這個問題:如何提升自己在 Android 市場上的競爭力?
這里給大家幾個方向,希望能夠給有著相同問題的朋友提供一點幫助~
一、提升通用技術能力
The more things change, the more important it is to know the underlying principles.當你覺得進入到迷茫或者瓶頸期的時候其實更應該注重基礎,也就是更加通用的技術 。
一來通用技術如數據結構和算法、計算機網絡、操作系統、計算機系統結構等,對技術的深層理解有很大的幫助,二來這類技術在不同的語言和技術方向上切換時是共通的 。
二、提升軟實力
軟實力實際上也是一項通用的技能,甚至比第一條更加通用 。
良好的溝通可以縮短開會的時長、節省相互之間的溝通成本,也使得團隊合作更加愉快 。不錯的文檔表達能力可以省去不少的重復溝通 。
懂得規劃自己的時間,上班時能更有條不紊地完成任務,下班也能高效地規劃業余時間的學習 。
懂得反思:為什么這個任務預計五小時能完成,卻變成了三天;為什么這個需求要這樣做,這么做是最合理的嗎,還有更好的方式嗎?
對問題、業務和自身的更多思考有助于更好地發揮和展現你的技術實力 。
三、選擇一個細分領域不斷深入
可能一個較好的學習方式是先廣度優先遍歷,即粗略了解自己領域的各方面知識,然后深度優先遍歷,即選擇一個自己感興趣或者覺得值得深入的方向深挖下去,等到這個方向學習研究得差不多了,再去深入下一個方向的技術知識 。例如:
插件化技術、響應式編程、組件化框架、系統架構等進階技術,承托著業務之下的基礎框架,能夠使得開發者在面對需求和功能變化的時候有更快的反應和更優雅的行動 。
業務邏輯日漸成熟的形勢下,用戶體驗越來越重要,突然的軟件崩潰或是加載圖標持續5秒,對于高質量應用都是阻礙 。渲染速度、網絡請求體驗、I/O優化、熱修復技術、耗電優化,都是性能優化需要重視的點 。
Android 現在細分的領域非常多,應用開發、音視頻、物聯網、逆向安全、SDK開發等等,可以在這些領域中選擇一個并不斷深入 。若是從時代背景的角度考慮,當下處于信息時代,用戶接收和喜愛信息傳播的形式一路從文字、圖片、音頻、視頻,到了如今的直播 。音視頻會是一個不錯的選擇 。其中會涉及到音視頻編解碼和音視頻同步處理、特效處理、合成等等技術,對于 Android 底層源碼的理解也十分有幫助 。
四、學習方法與具體路線
【android開發者模式設置 android開發者模式調試程序】關于具體的學習方法,一般來說有以下幾個方向
學習一線大廠的各項技術定期面試報名培訓機構多看大佬的學習筆記,學習大佬的設計思想
學習一線大廠的各項技術:
各大一線大廠就是我們的技術先驅,不僅有各種技術,還有很多令你大開眼界的使用方法和對底層原理的理解,參照學習更加有利于自身競爭力的提高,深入學習更是可以有效提高自身的學習效率
推薦這份引領行業的腦圖《對標騰訊70W+年薪Android高工技能成長路線》可以查漏補缺,有針對性的系統提升
有需要完整版的朋友,只需私信我【核心筆記】即可免費獲取!
1. 項目開發必備底層技術
不光是一線大廠,各大互聯網公司Android研發崗位都要求有扎實的Java基礎,并要求Android開發者掌握其原理,這一個部分就是Android開發中最常用的Java相關知識 。
Android以Java語言為基礎,以虛擬機為核心,經過Daivlk虛擬機再到Art虛擬機演變,所以需要學兩大底層:一個是Java語言底層,一個是虛擬機底層 。
Java底層涵蓋:Java序列化、泛型與反射、JDK高級動態代理、 Java高級并發原理詳解 。
虛擬機底層涵蓋:虛擬機層類加載機制、Android虛擬機原理剖析、dex運行機制,Android內存,高級數據結構與算法 。
Java知識點匯總:序列化、注解、泛型、反射、虛擬機、并發、Java IO、編譯時技術、動態代理、高級數據結構與算法等
Android Framework在一個系統中處于內核層之上,為頂層應用提供接口,被設計用來幫助開發者快速開發頂層應用,而不必關心系統內核運行機制,通常Framework都會隱藏main函數等應用程序必須的組件,開發人員只需把精力放在功能代碼的實現上 。說簡單點,Framework具體的工作也就是為android應用開發的開發人員提供了一系列的服務和API的接口 。
另外,UI其實并不是單純指用戶看到的效果 。因為在Android開發中,每個控件背后都有一套深層次的體系在支撐,自然而然,會UI不單純指的是會自定義控件,我們還應該知道自定義控件背后的執行流程,包括從Activity的創建,XML的解析,到每個控件的測量、布局、繪制 。當然在中間還夾雜著比如動畫、事件分發機制、嵌套滑動機制等知識點 。還有谷歌提供的一些UI框架也使我們要掌握的對象,比如Jetpack組件庫、Material Design等 。
作為一個Android程序員,性能優化是無法避開的事情,并且性能優化也是Android中最有挑戰的工作之一,更是每個工程師都需要掌握的核心技能 。
性能問題和Bug不同,后者的分析和解決思路更清晰,很多時候從應用日志即可直接找到問題根源,而性能問題,其排查思路更為復雜一些 。
對App進行性能優化,是一個系統性的工程,對工程師的技術廣度和技術深度都有所要求 。一個簡單的應用,它不僅包含了應用代碼本身,還和虛擬機、存儲、網絡等緊密相關,線上應用一旦出現了性能問題,需要我們從多方面去考慮 。
互聯網信息的傳播與娛樂方式歷經了從文字到圖片再到音視頻的轉變,現如今以抖音為首的各類視頻平臺更是如日中天,特別是5G時代的全面到來,互聯網將會迎來對音視頻開發者的需求井噴 。
現在市場中使用音視頻技術的公司太多了,大到全民觀看短視頻,小到直播帶貨,每個人使用手機的時間也基本被音視頻占據著 。
在目前的大環境下,如果app只是圖文的方式展現,已經遠遠不能滿足用戶的需求,在5G普及過程中,這種app也會變得越來越少,所以各家公司都在不斷的往音視頻方向轉型,這就必然的催生出大量音視頻工作崗位,但相關的人才卻是少之又少,音視頻相關崗位的薪酬自然是水漲船高 。
“沒有最好的架構,只有最合適的架構 。”
架構這塊主要是對各大主流框架和一線大廠核心框架進行剖析,理解其中原理,并學習架構設計思想 。我們在架構設計中最本質的目的就是管理復雜度,你聽過的各種思想、原則、方法大多都是為了控制復雜度而設計出來的 。
而提升架構設計硬實力,唯有不斷地實戰,任何一個架構師都是身經百戰的老兵!
工欲善其事必先利其器
如何提供開發的效率?很多開發者在開發的過程中由于gradle不會用導致加載代碼非常耗時,這些就是工作成本 。還有就是git的使用可以幫我們管理好我們的代碼,這個非常關鍵,因為這個工具可以讓我們修改的代碼不會因為錯誤的操作而導致代碼丟失 。另外,作為移動開發者至少需要知道如何抓取網絡包,其中,最常用的stetho就是一個很好的可以進行網絡抓包的工具
Kotlin在2017年被作為Android一級開發語言,又在2019年被確立為Android的首選開發語言,這門語言近些年的發展得到了前所未有的支持和關注 。在一些大廠的開發崗位中也對Kotlin語言青睞有加,越來越多的崗位對Kotlin語言掌握程度提出新的要求和標準,所以這塊也是非常有必要深入學習的 。
隨著移動終端的多樣性發展,一套代碼適配多個平臺已經成為移動開發者的終極夢想,跨平臺技術也一直在發展中 。
目前為止,我們移動端的跨平臺開發技術經歷了三個階段,這三個階段的代表框架分別是:Cordova、React Native 、Flutter。
其中,Cordova雖然實用方便,但是受制于 WebView 的性能瓶頸 。
React Native 利用 JS 引擎實現了跨平臺能力,將 JS 控件,對應解析為平臺原生控件進行渲染,雖然極大程度上實現了性能的優化與提升,但也同樣存在性能等限制 。
而Flutter 另辟蹊徑,只要求平臺提供一個 Surface 和一個 Canvas就可以了 。
在跨平臺技術追求的 性能、復用、高效 這三個終極目標上,Flutter占據了至高點 。
而且,Flutter在大廠的面試過程中不僅經常被作為加分項,在某些崗位甚至是必問的內容,非常有必要深入了解 。
鴻蒙作為5G時代萬物互聯的時代性產品,歷經了一段時間的發酵,現在再去討論是不是Android套皮已經沒有任何意義,它的出現直接改變了移動端物聯網格局,在全世界范圍內掀起一股熱潮,作為國產系統也是經受了國內外媒體的驗證,相信在不遠的將來,鴻蒙系統將會在物聯網領域產生非常重要的作用 。
而物聯網作為移動開發的細分領域,移動開發者掌握了鴻蒙開發必然掌握先機,在面試及企業項目中會產生意想不到的效果 。
定期面試:
光學習了一線大廠的技術還不夠,如何了解當下Android市場需要哪些技術呢?如何明確自身技術薄弱點呢?
建議大家每隔一段時間就要出去面試一輪,不一定是為了找到好的工作,重點是要知道自己的優缺點是什么?知道市場目前需要什么樣的人?
定期的面試讓你及時了解當下市場需要哪些技術,也更加容易確定自身的短板在哪,同時,后續也可以更加有針對性的學習提升,并且在面試過程中遇到了你不太擅長的點,你也可以借機向面試官提問,趁機學習一波大廠的技術操作或是對底層原理的理解
而且,要是運氣好,直接拿到了高薪Offer,豈不是更賺?
同樣,因為面試你的也是同行,在溝通交流過程中也能夠碰撞出不同的思想 。
試想?如果你一直待在一家公司,都不知道外面的情況如何的話,那是非常可怕的,至少我這么認為 。
報名培訓機構:
我們對于培訓機構總是褒貶不一,但是,不可置否,自己摸索和有人帶你肯定是完全不一樣的,學會站在巨人的肩膀上前行,要比自己埋頭摸索要快很多 。
多看大佬的學習筆記,學習大佬的設計思想:
比如上面有提到的《Android開發核心知識點筆記》、《大廠架構演進筆記》等等,每一個都是行業精品中的精品,如果只憑去百度學習的話,搜索出來的資料內容大多雜亂不系統,很多內容都是過時或者錯誤的,如果學習的方向不對,那不管有多么努力,注定是學不好的 。
而且,筆記作者都是在大廠工作,會不定時的更新資料內容,讓大家能夠及時的學習大廠的先進技術與架構思想 。
配合各種資料輔助學習:
在當下這個信息共享的時代,很多資源都可以在網絡上找到,只取決于你愿不愿意找或是找的方法對不對了
很多朋友不是沒有資料,大多都是有幾十上百個G,但是雜亂無章,不知道怎么看從哪看起,甚至是看后就忘 。不少內容都是針對單個的技術問題,無法直接用到項目中去,并且因為很多內容都是幾年前的,目前可能已經無法使用了,更不用說代碼質量參差不齊,直接生搬硬套也無法適應項目需求迭代,非常不方便 。
如果大家覺得自己在網上找的資料非常雜亂、不成體系的話,我也分享一套給大家,比較系統,我平常自己也會經常研讀 。
- loadrunner參數化九種模式 loadrunner參數化策略詳解
- android電子市場游戲免費下載 Android電子市場
- ios開發者賬號申請流程 ios開發者賬號免費申請
- ppp項目 bt項目與ppp項目的區別是什么
- android版本可以升級嗎oppo android版本能升級嗎
- 云部署方式有哪三種?有何差異? 云部署模式分為哪幾種
- 入侵檢測技術有哪些具體技術 入侵檢測技術有哪些 模式匹配
- word怎么取消受保護模式 word 解除保護
- tplink無線橋接模式設置 tplink無線橋接模式是什么意思
- Android數據庫框架對比 Android數據庫框架更換
