快到年底了想想也是比較激動叔遂,因為眼看一年就要過去了。最近也是利用閑暇時間一直在補文章霎苗,因為明年有新的學(xué)習(xí)計劃姆吭,年后可能也不會再分享 Android 方面的知識,在這之前希望能把視頻同步的一些文章補上唁盏。記得剛開始有人跟我說:你寫的這些東西我都會 内狸。。厘擂。(具體記不清了昆淡,大致的意思就沒必要寫這些東西,不要誤人子弟)
從未想過要去擾亂他人的心志刽严,去動搖自己的決心昂灵。我只是想用一種方式記錄一下而已,這些內(nèi)容可能是比較適合中小型企業(yè)舞萄,1~3 的工作經(jīng)驗眨补。但當(dāng)很多人一起學(xué)習(xí)一起探討的時候,對于技術(shù)的提升還是比較快的倒脓,至少現(xiàn)在我感覺我的技術(shù)沒有去年那么菜了渤涌。
明年可能會分享一些關(guān)于 NDK 和智能識別方面的知識,但目前我們應(yīng)該先把 Android 應(yīng)用層方面的基礎(chǔ)知識打牢把还。很多人會認為 NDK 很難实蓬,可能是因為 C 和 C++ 不太會的緣故;也有很多哥們有錯覺吊履,覺得會 NDK 的人一定是高級程序員安皱,什么是低級什么又是高級?我其實不知道艇炎。我知道的就是會 NDK 還蠻簡單的酌伊,但是要精通就不知道了。
NDK 和智能識別這一塊我也不熟,只是把他作為我明年的主要學(xué)習(xí)方向居砖。我們都喜歡追求上層心法虹脯,浮躁的情況下很難靜下心來,如果我們是從事 Android 應(yīng)用層開發(fā)奏候,建議還是應(yīng)該把 Java 基礎(chǔ)和 Android 基礎(chǔ)先學(xué)好循集,這里羅列一下從事 Android 應(yīng)用開發(fā)需要知道的一些基礎(chǔ)知識點,當(dāng)然僅代表個人的觀點蔗草,有不同意見你可以評論評論:
1.知識方面
1.1 基本的數(shù)據(jù)結(jié)構(gòu)和算法: 線性表咒彤,棧和隊列,數(shù)咒精,二叉數(shù)镶柱,圖,比較簡單的數(shù)據(jù)結(jié)構(gòu)模叙,會一些常用 Java 集合的實現(xiàn)原理歇拆,像 HashMap 和 ArrayList 這些要會自己手敲,因為相對于 BAT 這些企業(yè)我們有時需要理解其細節(jié)范咨,比如上次給大家講解的阿里面試題 HashMap 的容量大小為什么是 2 的冪次查吊?這些都涉及到細節(jié)。要會一些基礎(chǔ)的算法湖蜕,像歸并逻卖,遞歸,窮舉昭抒,貪心评也,回溯,時不時的去刷一些算法題灭返。
1.2 Android 的自定義 View 特效方面: 這一部分相對來說是初學(xué)者比較感興趣的內(nèi)容盗迟,我記得剛自學(xué) Android 那會,花了大概半年多的時間才勉強上手熙含,個人覺得兩個地方比較難罚缕,第一是事件分發(fā),第二方面是像三角函數(shù)怎静,波形邮弹,矩陣,微積分等等跟數(shù)學(xué)相關(guān)的一些特效蚓聘。
1.3 Android FramWorker層源碼: 這一部分的知識腌乡,嚴格意義上來講當(dāng)我們點擊 AS 上面那個綠色運行的按鈕后,就該明確的知道后面的內(nèi)容夜牡,比如 AS 是怎么打包的与纽,打包后像 META-INF 、resource.arsc 等等這些文件的作用。知道應(yīng)用是怎么安裝上去的急迂,怎么 Zygote 進程的影所,應(yīng)用怎么啟動的,Activity是怎么啟動的僚碎,怎么壓棧彈棧的猴娩,怎么繪制界面的,資源怎么加載的等等听盖,有一本書可以推薦《Android系統(tǒng)源代碼情景分析》,每天啃一啃裂七,啃個大半年皆看。
1.4 設(shè)計模式和第三方開源庫源碼: 設(shè)計模式也有一本書可以推薦《Android源碼設(shè)計模式解析》,我在視頻講解中帶大家看的是 pdf 版本背零,希望大家支持作者購買正版實體書籍腰吟。看過之后可能還是一知半解徙瓶,也可能會忘記毛雇,這個就需要去實戰(zhàn),自己去分析主流的一些第三方的開源庫侦镇,這里再推薦一本書 《JakeWharton 開源庫》
1.5 性能優(yōu)化和重構(gòu): 經(jīng)驗不是很多灵疮。
這些東西你會嗎?會一點皮毛吧壳繁,還在不斷學(xué)習(xí)中震捣,嚴格意義上來講不會。那請問要學(xué)多久呢闹炉?我記得我之前在 CSDN 潛伏寫文章寫了四年多(那時沒人看)蒿赢。如今依舊從未停止過,還沒想好什么時候停止渣触,也不知道什么時候才能停止羡棵。關(guān)鍵我們是否選擇開始,至于終點是何方早已不重要嗅钻。
如果我們想要走得更遠皂冰,這一部分知識我們可能是逃不掉的,是個必經(jīng)的過程养篓。一年半載后我們基本熟悉了整個 Android 應(yīng)用開發(fā)的體系灼擂,那個時候我們想學(xué)一些其他的東西,或者想往高處發(fā)展都會快很多觉至,因為學(xué)習(xí)能力和心態(tài)已經(jīng)上去了剔应。
2.技術(shù)角度
這一年來面試了很多人,經(jīng)驗大都是3年以上,調(diào)用接口數(shù)據(jù)顯示界面峻贮,想想大部分都玩的很溜了席怪。所以很多人能做的我們都能做,優(yōu)勢又在哪里纤控?打個比方我們都會用熱修復(fù)挂捻,但是如果你知道原理這應(yīng)該就算優(yōu)勢。很多人說會用就可以了船万,百度一下就出來了刻撒,不必要這么麻煩。其實不是耿导,至少作為面試官來講声怔,我會問你用過哪些第三方,會問你是否了解原理舱呻,如果細節(jié)你能答上來醋火,就算達到了我的要求,就可以進入最后的復(fù)試箱吕。我會根據(jù)這些來判斷你目前的工作能力和解決問題的能力以及是你的學(xué)習(xí)能力芥驳。面試完之后會給你評個等級,你覺得薪資范圍能接受茬高,就可以報道上班兆旬,不能接收那就只能期待下次合作。當(dāng)然怎栽,我目前是處在長沙爵憎,也不知道其他公司的用人標準,只是站在個人的角度來說婚瓜。其實宝鼓,我們也可以問一下自己,如果我是面試官會選擇我自己嗎巴刻?
3.其他方面
記得大四有個老板請我吃飯愚铡,很榮幸有大佬請我吃飯,是酒鬼酒長沙的總代理胡陪,而我是個寫程序的沥寥。不知道怎么就搞到一塊去了,可能是因為我們都喜歡研讀《圣經(jīng)》柠座。當(dāng)時他有一句大概是這么說的邑雅,一個好的銷售員或許每年能夠為我創(chuàng)造 100 萬的純利潤,但我更喜歡一個能夠帶團隊的人...... 學(xué)習(xí)知識只是一個部分妈经,團隊協(xié)作淮野,別人不想做的我去做捧书,別人不能解決的我能解決,不去抱怨骤星,學(xué)會積極樂觀還是比較重要经瓷。
最好我們還能有一個比較突出的方面,比如我們自定義View玩得賊溜洞难,又或者在對音視頻特別感興趣舆吮,又或者對 Android 源碼特別感興趣,或?qū)嵝迯?fù)插件化队贱,智能識別或者其他色冀,就可以每天朝一個點只研究這些。很多人跟我說太累了柱嫌,學(xué)了很多都用不上锋恬,但當(dāng)我們開黑的時候就不累嗎?活著本來就很累慎式。自從我看到我大學(xué)室友快樂并痛著伶氢,我不想成為那樣趟径。
怎么檢驗我們到底學(xué)得怎么樣瘪吏?我們可以找一些大型企業(yè)像 BAT 或者說薪資相對比較高的一些崗位面試題做一做,如果我們能夠做出個 7蜗巧、8 成以上掌眠,面試筆試都能答上來,我覺得可能差不太多了幕屹,當(dāng)然具體我也不知道蓝丙,沒去過,沒經(jīng)驗望拖。我知道的是我們自己搭的代碼渺尘,隨著版本的不斷迭代,需要依然能夠保持靈活说敏。在寫新項目的時候鸥跟,對未來的發(fā)展要有預(yù)判,可以提前挖個坑在那里等著盔沫。
周六有一個哥們從京東趕回來請我吃了個飯医咨,第二天大早上又匆匆趕過去,想想也是挺幸福和開心的架诞。在我正在寫文章的時候拟淮,又在不斷的給我發(fā)信息給我推薦崗位,也是無以回報谴忧。還是之前的那些話很泊,第一怕有錢角虫,第二怕有名。但想想這一年都已經(jīng)熬過來了撑蚌,再熬一年吧上遥。
簡書最近出了點事,有哥們問我為啥不搬去掘金:不擾亂他人的心志争涌,不動搖自己的決心粉楚。即將啟程去外面看看,后面文章更新會稍慢亮垫。