1. 程式人生 > 其它 >乾貨精講!Android開發最佳實踐手冊全網獨一份,從基礎到原始碼統統幫你搞定

乾貨精講!Android開發最佳實踐手冊全網獨一份,從基礎到原始碼統統幫你搞定

前言

現在的終端開發已經開始進入穩定期,在這個階段大廠壓力很大小廠更會收到擠壓,人們使用的App越來越固定,即使是大廠,幾年前平臺級應用發個Push就能引流幾十萬,現在這些的作用也越來越小,特別到了今年,想要在Top100的pp裡突然出現一個來自不知名團隊的爆款已經基本不可能。

面試經驗

自己大大小小投了也有20多家公司,不過經歷簡歷篩選以及筆試淘汰,最終就經歷了7家公司的面試。下面我就把自己面試中問到的問題貼出來供大家參考,一些具體專案相關的就不貼了。

阿里巴巴

阿里是3月初開始投的,是自己第一次面試大型的網際網路公司,當時自己的準備也不夠充分,表現不是很好,經歷了三次技術面,最後掛了。

阿里一面

排序,快速排序的實現
樹:B+樹的介紹
圖:有向無環圖的解釋
TCP/UDP 的區別,滑動視窗,如何確保有效性
volatile
synchronized與Lock的區別
Java執行緒池
Java 中物件的生命週期
類載入機制
雙親委派模型
Android事件分發機制
MVP模式
Rxjava

阿里二面

抽象類和介面的區別
synchronized與Lock
集合Set實現Hash怎麼防止碰撞
JVM記憶體區域開執行緒影響哪塊記憶體
垃圾收集機制、物件建立,新生代與老年代
二叉樹、深度遍歷與廣度遍歷
B樹、B+樹
訊息機制

阿里三面

專案介紹
專案中做了哪些?主要解決的問題
為什麼選擇Retrofit,Rxjava
Rxjava特點
進度排程
程序與執行緒
死鎖
程序狀態
JVM記憶體模型
併發集合瞭解哪些
ConCurrentHashMap 實現
CAS介紹
鎖synchronized,lock
開啟執行緒的三種方式,run()與start()方法的區別
執行緒池
常用的資料結構簡介
判斷環
排序、堆排序實現
連結串列反轉
海量資料 字典查詢
平時看什麼書
...

總之,這些大廠的Offer和我都沒有半毛錢關係,繼續在家上網,找其他工作機會。

大概三個月後,我開始慌了

最開始是身邊的同學開始在群裡分享都去哪上班了,晒一些職業照工作餐之類的。雖然也羨慕還不覺得太擔心自己。

第一次感覺有點慌是學校輔導員打來電話,問去哪個公司了,學校要給畢業生做就職率統計。我第一次意識到這時候大家應該都已經上班了。

輔導員聽說我還沒找到合適的工作,也沒多說什麼,就提醒了一句要儘快,如果時間太久要把檔案從學校校提走,否則會進入就業人才中心,好像影響職稱什麼之類的。

當時的感覺是忽然眼前的目標沒了,很茫然。之前16年學生生涯都有人告訴你目標,現在畢業了什麼都可以做,家長也沒給壓力,反而發現自己不知道要做什麼了。

我一方面報了個駕校,給自己找點事情幹,一方面繼續盲目的投簡歷。

再之後的幾個月,讓我對社會的工作開始有點恐懼

這一段因為有點慌張,所以基本什麼崗位都投,從各種測試、產品經理,到比較熱門Java,反正什麼職位都投。

每週還會去一兩次招聘會,到了那裡看見哪個櫃檯都聊聊,希望遇到那種奇遇的機會。但其實大部分都是愛答不理的冷遇,少部分很熱心,還有安排下午就面試的。

但後來發現,很多立刻邀請你面試和熱情的招聘攤位,都是不靠譜的公司。比如尋找廉價的銷售,要不就是先交多少錢押金之類的。

作為剛畢業的大學生一開始有點懵懂,幾次面試完就被組織培訓了才反應過來,覺得不對趕快跑了,又擔心自己填寫的入職資訊那麼詳細會不會有麻煩。

最危險的一次是說有班車就在招聘會外面等著,結果小巴坐滿了一車人開始往城外開,感覺不對急忙說要下車,但是司機不停,威脅要報警對方才罵罵咧咧停了車,狼狽跑下來。

現在回想可能就是幫助一些不靠譜企業拉人掙中介費的,去了少不得先交錢,總之感覺挺後怕的,導致那一陣對去面試都有點敏感的戒備。

經歷了這段也有點害怕了,我對父母求助,請他們幫忙介紹工作。

父母也是普通人,但到底認識一些朋友同事之類的。很快就幫助介紹了幾個工作。

但隨著去了一些面試,感覺這個事情就像相親,除了自己家人都是做順手人情,聽說哪招人順手就給你推薦,不會那麼考量你的需求和崗位是否匹配,也不會可能專門為你付出多大人情。

好的職位不求招不到人,輕鬆的崗位也不會因為順水人情正好為你開設。所以這類崗位大多和讓不熟的人介紹相親一樣隨機,全憑運氣。

總之,這些工作機會都去了,詳細看了也瞭解了情況,但仍沒有找到合適自己的工作。

在這段時間,並不是全無收穫,也不是沒有進入任何企業做一天工作

前面總說這些工作這個不合適,那個不靠譜,很多人可能覺得是個眼高手低被寵壞的大學生形象。

其實也不完全是,很多企業都是經歷了面試、筆試,甚至報到後進去做了一陣試用期,感覺不合適才走的。

慢慢的,還會摸索出了一套快速判斷行業或企業是否適合的方式。

比如在被人介紹或通知去一個企業面試前,先從網路找它最近半年的新聞,瞭解它在做什麼事。

尤其對於私企,要了解它的老闆是誰,經歷是什麼,查有關老闆名字的新聞,瞭解企業風格。

比如在面試通過後,要求面試官能否和對方的老員工了幾句,瞭解企業的工作狀態和部門。

還會在企業資訊查詢網站上,看這個企業最近2年的勞務糾紛和訴訟,瞭解它們是否正規經營。

很多時候,通過面試官什麼時候打給你電話,通知你面試的過程,給你發Offer的郵件,都能判斷出這個企業是否正規。

比如下班時間打電話通知,和週六日安排面試的,多數不怎麼靠譜。面試後會正式發給你一套定位地圖、面試通知且細心提示著裝和攜帶材料等細節的,大多企業管理比較嚴謹。

如此,到了第二年,我不太焦慮了,開始深入瞭解一些行業

到了第二年,父母可能懶得說了,沒有再給很大壓力,可能看我每天都跑出去忙,也就沒在催促找工作。

這段時間實際做了不少事情,當然,如果讓父母知道可能在他們眼裡都是“閒事”。

比如,和朋友一起弄了一個自媒體,一開始是吐槽性質的公眾號,後來變成了一些Android技術交流和職場面試內容的持續內容產出。

還有一段很喜歡公益活動,所以報名一個公益組織,幫助策劃參加了幾次公益類的活動,但隨著對行業的瞭解,感受到一些自己不喜歡的方面,沒有成為全職人員。

學完車之後,又隨著需求和愛好學習了PPT、PS、思維腦圖等一些常用工具,學了自媒體後臺運營和監測的方式,以及一些簡單的剪輯技巧。

中間聯絡要好的大學同學,去他們的企業和拜訪敘舊聊天,一方面聯絡感情吃個飯,一方面瞭解他們的崗位和所在的行業是什麼樣的。

後來一次偶然的機會,我得到訊息,阿里有一個部門要補招,不過是測試崗。同學把這個招聘資訊發到我們幾個人的小群裡面,之後就沒怎麼在意。

過幾天,我找到同學說我通過他發的那個招聘資訊拿到了Offer,雖然是測試崗,但是進來之後還是有機會轉開發的。

之後我們一起來到杭州工作,我所在的部門面臨拆分重組,我和領導表達了自己的想法,一方面因為我自己也確實優秀,另外也是尊重我的想法,我就被劃分到Android開發團隊了。

在之後的日子裡,我經常主動承擔團隊內部的工作,在工作中發現安卓體系內沒有很好的元件化框架,於是他自己搞了一個,還做了開源。

於是,漸漸的我深深的得到了主管和同事們的信任。一方面自己比較優秀,另外一方面也是因為主管力挺。我也很快得到了晉升的機會。

之後我的主管要轉崗到其他部門,於是又把我帶過去了,過去後又得到了很多重用。現在又在帶團隊,相信很快就能再次晉升了。
我本身也是一個要性比較強的人,我知道自己想加入阿里,於是抓住了這一次補招的機會。我樂意牽頭去做很多事情,於是得到了主管的信任,不僅給他很多機會,即使到了新的部門也願意帶著他。

很多人說,我是因為跟對了人,當然這是一個重要原因,但又不見限於此。因為我的主管之前手下有很多人,但是隻有我得到了快速晉升的機會,也在轉崗之後只把我帶過去了。這些都是源於我有很強的要性,可以主動的去承擔事情,也能很好的把事情做好。

要如何成為Android架構師?

搭建自己的知識框架,全面提升自己的技術體系,並且往底層原始碼方向深入鑽研。
大多數技術人喜歡用思維腦圖來構建自己的知識體系,一目瞭然。這裡給大家分享一份大廠主流的Android架構師技術體系,可以用來搭建自己的知識框架,或者查漏補缺;

對應這份技術大綱,我也整理了一套Android高階架構師完整系列的視訊教程,主要針對3-5年Android開發經驗以上,需要往高階架構師層次學習提升的同學,在這裡點選Gitee免費分享,希望能幫你突破瓶頸,跳槽進大廠;

最後我必須強調幾點:

1.搭建知識框架可不是說你整理好要學習的知識順序,然後看一遍理解了能複製貼上就夠了,大多都是需要你自己讀懂原始碼和原理,能自己手寫出來的。
2.學習的時候你一定要多看多練幾遍,把知識才吃透,還要記筆記,這些很重要! 最後你達到什麼水平取決你消化了多少知識
3.最終你的知識框架應該是一個完善的,兼顧廣度和深度的技術體系。然後經過多次專案實戰積累經驗,你才能達到高階架構師的層次。

你只需要按照在這個大的框架去填充自己,年薪40W一定不是終點,技術無止境