快到年底了想想也是比較激動(dòng),因?yàn)檠劭匆荒昃鸵^去了。最近也是利用閑暇時(shí)間一直在補(bǔ)文章,因?yàn)槊髂暧行碌膶W(xué)習(xí)計(jì)劃,年后可能也不會(huì)再分享 Android 方面的知識(shí),在這之前希望能把視頻同步的一些文章補(bǔ)上。記得剛開始有人跟我說:你寫的這些東西我都會(huì) 。。。(具體記不清了,大致的意思就沒必要寫這些東西,不要誤人子弟)
從未想過要去擾亂他人的心志,去動(dòng)搖自己的決心。我只是想用一種方式記錄一下而已,這些內(nèi)容可能是比較適合中小型企業(yè),1~3 的工作經(jīng)驗(yàn)。但當(dāng)很多人一起學(xué)習(xí)一起探討的時(shí)候,對(duì)于技術(shù)的提升還是比較快的,至少現(xiàn)在我感覺我的技術(shù)沒有去年那么菜了。
明年可能會(huì)分享一些關(guān)于 NDK 和智能識(shí)別方面的知識(shí),但目前我們應(yīng)該先把 Android 應(yīng)用層方面的基礎(chǔ)知識(shí)打牢。很多人會(huì)認(rèn)為 NDK 很難,可能是因?yàn)?C 和 C++ 不太會(huì)的緣故;也有很多哥們有錯(cuò)覺,覺得會(huì) NDK 的人一定是高級(jí)程序員,什么是低級(jí)什么又是高級(jí)?我其實(shí)不知道。我知道的就是會(huì) NDK 還蠻簡單的,但是要精通就不知道了。
NDK 和智能識(shí)別這一塊我也不熟,只是把他作為我明年的主要學(xué)習(xí)方向。我們都喜歡追求上層心法,浮躁的情況下很難靜下心來,如果我們是從事 Android 應(yīng)用層開發(fā),建議還是應(yīng)該把 Java 基礎(chǔ)和 Android 基礎(chǔ)先學(xué)好,這里羅列一下從事 Android 應(yīng)用開發(fā)需要知道的一些基礎(chǔ)知識(shí)點(diǎn),當(dāng)然僅代表個(gè)人的觀點(diǎn),有不同意見你可以評(píng)論評(píng)論:
1.知識(shí)方面
1.1 基本的數(shù)據(jù)結(jié)構(gòu)和算法: 線性表,棧和隊(duì)列,數(shù),二叉數(shù),圖,比較簡單的數(shù)據(jù)結(jié)構(gòu),會(huì)一些常用 Java 集合的實(shí)現(xiàn)原理,像 HashMap 和 ArrayList 這些要會(huì)自己手敲,因?yàn)橄鄬?duì)于 BAT 這些企業(yè)我們有時(shí)需要理解其細(xì)節(jié),比如上次給大家講解的阿里面試題 HashMap 的容量大小為什么是 2 的冪次?這些都涉及到細(xì)節(jié)。要會(huì)一些基礎(chǔ)的算法,像歸并,遞歸,窮舉,貪心,回溯,時(shí)不時(shí)的去刷一些算法題。
1.2 Android 的自定義 View 特效方面: 這一部分相對(duì)來說是初學(xué)者比較感興趣的內(nèi)容,我記得剛自學(xué) Android 那會(huì),花了大概半年多的時(shí)間才勉強(qiáng)上手,個(gè)人覺得兩個(gè)地方比較難,第一是事件分發(fā),第二方面是像三角函數(shù),波形,矩陣,微積分等等跟數(shù)學(xué)相關(guān)的一些特效。
1.3 Android FramWorker層源碼: 這一部分的知識(shí),嚴(yán)格意義上來講當(dāng)我們點(diǎn)擊 AS 上面那個(gè)綠色運(yùn)行的按鈕后,就該明確的知道后面的內(nèi)容,比如 AS 是怎么打包的,打包后像 META-INF 、resource.arsc 等等這些文件的作用。知道應(yīng)用是怎么安裝上去的,怎么 Zygote 進(jìn)程的,應(yīng)用怎么啟動(dòng)的,Activity是怎么啟動(dòng)的,怎么壓棧彈棧的,怎么繪制界面的,資源怎么加載的等等,有一本書可以推薦《Android系統(tǒng)源代碼情景分析》,每天啃一啃,啃個(gè)大半年。
1.4 設(shè)計(jì)模式和第三方開源庫源碼: 設(shè)計(jì)模式也有一本書可以推薦《Android源碼設(shè)計(jì)模式解析》,我在視頻講解中帶大家看的是 pdf 版本,希望大家支持作者購買正版實(shí)體書籍??催^之后可能還是一知半解,也可能會(huì)忘記,這個(gè)就需要去實(shí)戰(zhàn),自己去分析主流的一些第三方的開源庫,這里再推薦一本書 《JakeWharton 開源庫》
1.5 性能優(yōu)化和重構(gòu): 經(jīng)驗(yàn)不是很多。
這些東西你會(huì)嗎?會(huì)一點(diǎn)皮毛吧,還在不斷學(xué)習(xí)中,嚴(yán)格意義上來講不會(huì)。那請問要學(xué)多久呢?我記得我之前在 CSDN 潛伏寫文章寫了四年多(那時(shí)沒人看)。如今依舊從未停止過,還沒想好什么時(shí)候停止,也不知道什么時(shí)候才能停止。關(guān)鍵我們是否選擇開始,至于終點(diǎn)是何方早已不重要。
如果我們想要走得更遠(yuǎn),這一部分知識(shí)我們可能是逃不掉的,是個(gè)必經(jīng)的過程。一年半載后我們基本熟悉了整個(gè) Android 應(yīng)用開發(fā)的體系,那個(gè)時(shí)候我們想學(xué)一些其他的東西,或者想往高處發(fā)展都會(huì)快很多,因?yàn)閷W(xué)習(xí)能力和心態(tài)已經(jīng)上去了。
2.技術(shù)角度
這一年來面試了很多人,經(jīng)驗(yàn)大都是3年以上,調(diào)用接口數(shù)據(jù)顯示界面,想想大部分都玩的很溜了。所以很多人能做的我們都能做,優(yōu)勢又在哪里?打個(gè)比方我們都會(huì)用熱修復(fù),但是如果你知道原理這應(yīng)該就算優(yōu)勢。很多人說會(huì)用就可以了,百度一下就出來了,不必要這么麻煩。其實(shí)不是,至少作為面試官來講,我會(huì)問你用過哪些第三方,會(huì)問你是否了解原理,如果細(xì)節(jié)你能答上來,就算達(dá)到了我的要求,就可以進(jìn)入最后的復(fù)試。我會(huì)根據(jù)這些來判斷你目前的工作能力和解決問題的能力以及是你的學(xué)習(xí)能力。面試完之后會(huì)給你評(píng)個(gè)等級(jí),你覺得薪資范圍能接受,就可以報(bào)道上班,不能接收那就只能期待下次合作。當(dāng)然,我目前是處在長沙,也不知道其他公司的用人標(biāo)準(zhǔn),只是站在個(gè)人的角度來說。其實(shí),我們也可以問一下自己,如果我是面試官會(huì)選擇我自己嗎?
3.其他方面
記得大四有個(gè)老板請我吃飯,很榮幸有大佬請我吃飯,是酒鬼酒長沙的總代理,而我是個(gè)寫程序的。不知道怎么就搞到一塊去了,可能是因?yàn)槲覀兌枷矚g研讀《圣經(jīng)》。當(dāng)時(shí)他有一句大概是這么說的,一個(gè)好的銷售員或許每年能夠?yàn)槲覄?chuàng)造 100 萬的純利潤,但我更喜歡一個(gè)能夠帶團(tuán)隊(duì)的人...... 學(xué)習(xí)知識(shí)只是一個(gè)部分,團(tuán)隊(duì)協(xié)作,別人不想做的我去做,別人不能解決的我能解決,不去抱怨,學(xué)會(huì)積極樂觀還是比較重要。
最好我們還能有一個(gè)比較突出的方面,比如我們自定義View玩得賊溜,又或者在對(duì)音視頻特別感興趣,又或者對(duì) Android 源碼特別感興趣,或?qū)嵝迯?fù)插件化,智能識(shí)別或者其他,就可以每天朝一個(gè)點(diǎn)只研究這些。很多人跟我說太累了,學(xué)了很多都用不上,但當(dāng)我們開黑的時(shí)候就不累嗎?活著本來就很累。自從我看到我大學(xué)室友快樂并痛著,我不想成為那樣。
怎么檢驗(yàn)我們到底學(xué)得怎么樣?我們可以找一些大型企業(yè)像 BAT 或者說薪資相對(duì)比較高的一些崗位面試題做一做,如果我們能夠做出個(gè) 7、8 成以上,面試筆試都能答上來,我覺得可能差不太多了,當(dāng)然具體我也不知道,沒去過,沒經(jīng)驗(yàn)。我知道的是我們自己搭的代碼,隨著版本的不斷迭代,需要依然能夠保持靈活。在寫新項(xiàng)目的時(shí)候,對(duì)未來的發(fā)展要有預(yù)判,可以提前挖個(gè)坑在那里等著。
周六有一個(gè)哥們從京東趕回來請我吃了個(gè)飯,第二天大早上又匆匆趕過去,想想也是挺幸福和開心的。在我正在寫文章的時(shí)候,又在不斷的給我發(fā)信息給我推薦崗位,也是無以回報(bào)。還是之前的那些話,第一怕有錢,第二怕有名。但想想這一年都已經(jīng)熬過來了,再熬一年吧。
簡書最近出了點(diǎn)事,有哥們問我為啥不搬去掘金:不擾亂他人的心志,不動(dòng)搖自己的決心。即將啟程去外面看看,后面文章更新會(huì)稍慢。