2023 年如何學(xué) Android,6 年大廠 Android 老哥跟你聊聊

本文首發(fā)我的微信公眾號(hào):徐公
光陰似箭,日月如梭,時(shí)間真的過(guò)得飛快。
加上實(shí)習(xí),從事 Android 開發(fā),差不多有 5 年了,在這里,我分享一下我的經(jīng)驗(yàn),在 Android 的學(xué)習(xí)路上,我是站在巨人的肩膀上成長(zhǎng)起來(lái)的。
大概分為三個(gè)部分
一、Android 職業(yè)規(guī)劃
二、Android 學(xué)習(xí)路線
三、如何進(jìn)入大廠
Android 成長(zhǎng)生涯

1-3 年
前 3 年,我覺(jué)得是我們成長(zhǎng)最快的時(shí)候。
尤其是剛開始工作的一年,剛開始接觸項(xiàng)目,我們會(huì)接觸到很多新知識(shí),比較網(wǎng)絡(luò)框架的封裝,Android 架構(gòu) MVVN,MVC,MVP 等。
這段時(shí)期是我們進(jìn)步最快的時(shí)候,因?yàn)楹芏鄸|西我們都不會(huì),我們會(huì)逼著自己去學(xué)習(xí)。
第二到第三年,也是我們成長(zhǎng)的關(guān)鍵時(shí)期。這時(shí)候,在項(xiàng)目中,我們基本會(huì)自己獨(dú)立負(fù)責(zé)需求。這時(shí)候的我們,大多數(shù)基本功能都可以自己獨(dú)立實(shí)現(xiàn)。需要注意的是代碼風(fēng)格和代碼思維的培養(yǎng)。
代碼風(fēng)格,指的是編碼習(xí)慣。比如方法命名,方法的合理拆分,適當(dāng)添加注解,注釋。聽(tīng)起來(lái)可能會(huì)很虛,但是千萬(wàn)別小看這些細(xì)節(jié)。反正我在組里見(jiàn)過(guò)一些工作五六年的,代碼一坨一坨的,像 si 一樣。
代碼思維,有點(diǎn)類似于人的視野和思考方式吧。很多時(shí)候,實(shí)現(xiàn)某個(gè)效果,有很多種方案。我們?yōu)榱藨?yīng)付需求,可能會(huì)隨便選擇一種,沒(méi)有去了解其他方案。而這恰恰錯(cuò)過(guò)了我們成長(zhǎng)的最佳時(shí)期。
記住,永遠(yuǎn)別給自己設(shè)限,或許在編程的路上會(huì)遇到很多問(wèn)題,但是總會(huì)有解決方法的,而這取決你的態(tài)度。
3-5 年
這個(gè)時(shí)期,不出意外,我們基本都是高級(jí)工程師了。這時(shí)候大多數(shù)人會(huì)遇到瓶頸,不知道學(xué)些什么好。好像什么都會(huì),但是不夠深入。我也遇到這樣的情況,現(xiàn)在正在深挖。
這方面我暫時(shí)也給不了太多意見(jiàn),只能說(shuō),選擇一個(gè)方向,靜下心來(lái),去學(xué)習(xí),相信能收獲到我們想要的。
學(xué)習(xí)方向有很多,比如 Android 性能優(yōu)化(啟動(dòng),卡頓, Crash 治理), JNI C++,gradle 打包,編譯速度,音視頻等等,這些都是大的方向。
最近寫的一些文章,自我感覺(jué)還行,有興趣的可以看看。
Android 啟動(dòng)優(yōu)化(一) - 有向無(wú)環(huán)圖
Android 啟動(dòng)優(yōu)化(二) - 拓?fù)渑判虻脑硪约敖忸}思路
Android 啟動(dòng)優(yōu)化(三)- AnchorTask 開源了
Android 啟動(dòng)優(yōu)化(四)- AnchorTask 是怎么實(shí)現(xiàn)的
Android 啟動(dòng)優(yōu)化(五)- AnchorTask 1.0.0 版本正式發(fā)布了
Android 啟動(dòng)優(yōu)化(六)- 深入理解布局優(yōu)化
5 年之后
技術(shù)人的四大出路,你適合哪一個(gè)
大多數(shù)技術(shù)人,一般會(huì)有以下方向。
第一:成為技術(shù)大神,比如架構(gòu)師,及技術(shù)專家等。
第二:技術(shù)管理,比如技術(shù)總監(jiān)等。
第三:技術(shù)轉(zhuǎn)型,如轉(zhuǎn)項(xiàng)目管理,產(chǎn)品等,你牛逼的話,說(shuō)不定下一個(gè)張小龍就是你(哥們,想多了,那有這么容易)。
第四:自主創(chuàng)業(yè),做自媒體等
我目前來(lái)說(shuō),可能會(huì)選擇第一條路吧,成為一名技術(shù)專家。

在技術(shù)的路上,或許會(huì)很累,很難,可那又怎樣呢
35 歲中年職業(yè)危機(jī),很多職業(yè)都有,不僅僅局限于程序員。
從本質(zhì)上面說(shuō),自身競(jìng)爭(zhēng)力下降占很大原因。畢竟,優(yōu)秀的人才從來(lái)不缺少機(jī)會(huì)。
既然選擇了,便只顧風(fēng)雨兼程。
為了未來(lái)有更多的選擇,從現(xiàn)在開始,朝著自己的目標(biāo)努力奮斗吧,書寫屬于自己的人生。
Android 學(xué)習(xí)路線
下面,說(shuō)一下 Android 的學(xué)習(xí)路線,不會(huì)很具體,主要是從大的方面來(lái)說(shuō),感興趣的可以看一下。

搭建基本的開發(fā)環(huán)境,敲下 Hello world
首先你配置好電腦開發(fā)環(huán)境。首先需要配置 Java,AndroidStudio 的開發(fā)環(huán)境。
現(xiàn)在的 IDE 對(duì)比幾年前的,真的是方便多了,可以自動(dòng)幫我們配置好環(huán)境變量。還記得當(dāng)年剛開始配環(huán)境的時(shí)候,折騰了兩三天。在配置變量的時(shí)候,有時(shí)候英文的逗號(hào)輸成中文的,在 cmd 窗口輸入 Java,一直提醒沒(méi)有這個(gè)命令,一把鼻涕一行淚。
依稀還記得,當(dāng)配置完環(huán)境之后,敲下第一段程序?Hello world?時(shí)的那份喜悅。
掌握基本的語(yǔ)法和常用的數(shù)據(jù)結(jié)構(gòu)
第一:你要先掌握基本的語(yǔ)法,可以從一些書籍開始學(xué)起。跟著書本慢慢敲,從第一個(gè)程序 Hello World 慢慢敲起,萬(wàn)丈高樓平地起。
由于 Android 是用 java 或者 kotlin 語(yǔ)言開發(fā)的,建議優(yōu)先掌握 java 語(yǔ)言。這里推薦兩本書籍。
java 編程思想,一本很經(jīng)典的 java 書籍
java 劍指 offer,面試神器。校招的時(shí)候,有很多面試題目,里面都有涉及到。
第二:掌握基本的語(yǔ)法之后,常用的數(shù)據(jù)結(jié)構(gòu),數(shù)組,鏈表,隊(duì)列,棧。這些基本的概念和語(yǔ)法要知道。還有線程,文件 IO 操作,網(wǎng)絡(luò)操作。
學(xué)完這些之后,Java 的基本知識(shí)你大概掌握了,這時(shí)候建議你動(dòng)手寫一些小項(xiàng)目或者 Demo,比如坦克大戰(zhàn),計(jì)算器等,這些網(wǎng)上都有代碼。想跟著視頻一起學(xué)的話,推薦馬士兵的視頻,可以在我的微信公眾號(hào)?程序員徐公?回復(fù)”Java“,會(huì)將教程發(fā)給你
Android 學(xué)習(xí)入門
掌握這些之后,你可以去看一些 Android 入門的書籍或者一些視頻。
書籍我推薦郭霖的第一行代碼,目前出了第三版了,寫得真不錯(cuò)。
視頻的話,我推薦你可以看黑馬的 Android 視頻,里面會(huì)從一些基本語(yǔ)法講起,接著是項(xiàng)目實(shí)戰(zhàn),會(huì)手把手教你實(shí)現(xiàn)簡(jiǎn)單的新聞客戶端,360 手機(jī)衛(wèi)士等等。
想獲取黑馬視頻資料的話,可以去我的微信公眾號(hào)程序員徐公回復(fù)"黑馬"兩字,會(huì)將教程發(fā)給你。

Android 進(jìn)階
學(xué)習(xí)完基本的知識(shí)之后,可以去看看任玉剛的 Android 開發(fā)藝術(shù)探索,雖然是幾年前出版的,但真的是精華。
接著,可以關(guān)注一些架構(gòu),性能優(yōu)化方面的。
MVC, MVP, MVVN
內(nèi)存泄露怎么檢測(cè),常見(jiàn)的內(nèi)存泄露有哪些
怎么檢測(cè) ANR,有哪些手段呢,優(yōu)缺點(diǎn)是什么
怎么捕獲 Crash,Java Crash 和 native crash 有哪些不同呢
Android 檢測(cè)啟動(dòng)時(shí)間,啟動(dòng)優(yōu)化怎么做,常見(jiàn)的 Android 啟動(dòng)優(yōu)化手段有哪些
Android gradle,是怎樣打包的,怎樣提高編譯速度
這里推薦幾篇不錯(cuò)的文章。
Android 啟動(dòng)優(yōu)化(一) - 有向無(wú)環(huán)圖
Android 啟動(dòng)優(yōu)化(二) - 拓?fù)渑判虻脑硪约敖忸}思路
Android 啟動(dòng)優(yōu)化(三)- AnchorTask 開源了
Android 啟動(dòng)優(yōu)化(四)- AnchorTask 是怎么實(shí)現(xiàn)的
Android 啟動(dòng)優(yōu)化(五)- AnchorTask 1.0.0 版本正式發(fā)布了
Android 啟動(dòng)優(yōu)化(六)- 深入理解布局優(yōu)化
關(guān)注前沿技術(shù)
關(guān)注前沿技術(shù),可以去一些論壇,公眾號(hào)上面逛逛。
論壇的話,推薦掘金,CSDN
Android 技術(shù)公眾號(hào)的話,推薦鴻洋,郭霖的公眾號(hào),當(dāng)然還有我的公眾號(hào)程序員徐公。文章的質(zhì)量算是比較高的。
最后,有空的時(shí)候多去?github?或者?google 官網(wǎng)?看看,有什么新技術(shù),一般第一時(shí)間會(huì)更新。
如何進(jìn)入大廠
面試是一個(gè)雙向選擇的過(guò)程,我們要保持足夠的自信。
在我看來(lái),要進(jìn)入大廠,有 4 點(diǎn)最重要。
編程能力,包括常用技術(shù)以及常用技術(shù)的原理,畢竟招人,是來(lái)干活的,不是來(lái)當(dāng)?shù)?/strong>。
技術(shù)深度,在大廠,分工越來(lái)越越明確,職責(zé)越來(lái)越細(xì)。很多時(shí)候,需要的是某一個(gè)技術(shù)領(lǐng)域的人才,而不是什么都懂一點(diǎn)的全才。
算法。
軟技能,溝通能力等
如何學(xué)習(xí)算法
現(xiàn)如今,如果你想進(jìn)入大廠,騰訊,阿里,頭條,拼多多等,不管是社招還是校招,肯定都會(huì)面試到算法的。
相信很多人有這樣的想法,面試的時(shí)候早火箭,工作的時(shí)候擰螺絲。確實(shí),這種情況非常常見(jiàn),我也認(rèn)同。但沒(méi)辦法,誰(shuí)叫我們想進(jìn)入大廠呢。
不過(guò),這種情況也可以理解。怎么在幾輪面試中確定面試者的水平呢? 肯定是考察算法,基礎(chǔ)這些,原理這些。
雖然這些代表不了全部,但起碼能在一定程度上代表了面試者的水平能力。要知道,編程語(yǔ)言其實(shí)都是想通的,編程思維和算法能力才是核心。
掌握了原理,編程思維,切換到另外一門語(yǔ)言其實(shí)是很快的。這也就是面試官喜歡考察算法和原理的原因。
至于要怎么學(xué)習(xí)算法,我簡(jiǎn)單歸納一下
第一:要了解基本的數(shù)據(jù)結(jié)果,數(shù)組,鏈表,Map,Set,二叉樹等,了解他們的優(yōu)缺點(diǎn),時(shí)間復(fù)雜度,空間復(fù)雜度等
第二:要掌握一些常見(jiàn)的算法,遞歸,迭代,八大排序,二分查找,貪心算法等
第三:掌握一種算法,不僅要知道 what,還要知道 why(分析各種算法的優(yōu)缺點(diǎn)),比如 topK問(wèn)題,有常見(jiàn)的幾種解決方案,排序,快排思想,海量數(shù)據(jù)堆排序
第四:剛開始學(xué)的時(shí)候,可能會(huì)比較吃力,可以先刷題,慢慢找感覺(jué),從易到難。
比如,第一天,你刷這道算法題的時(shí)候看不懂,先不用著急,很多人都是這樣過(guò)來(lái)的,先搜一下答案,看一下別人是怎么解決的。
看懂了之后,自己用代碼寫一遍,跑一遍。這很重要,很多時(shí)候,你以為你自己懂了,但當(dāng)你在寫的時(shí)候是寫不出來(lái)的,在你動(dòng)手寫代碼時(shí),會(huì)不斷加深你的印象
第二天,自己再寫一遍,加深印象
第五:學(xué)好算法不是一日之功,需要長(zhǎng)期的積累。建議的做法是每天做一兩道題,題目不在多,貴在于理解。堅(jiān)持一兩個(gè)月,你會(huì)發(fā)現(xiàn)你的感覺(jué)逐漸好起來(lái)了。
https://github.com/gdutxiaoxu/Android_interview
小結(jié)
以上是我這些年來(lái), Android 學(xué)習(xí)路上的一些簡(jiǎn)單分享。在 Android 的學(xué)習(xí)路上,我是站在巨人的肩膀上成長(zhǎng)起來(lái)的,同樣,我也希望成為你們的巨人。
希望我們可以成為朋友,成長(zhǎng)路上的忠實(shí)伙伴!,可以關(guān)注我的微信公眾號(hào)徐公