你們都知道每一年的九月和十月都是互聯網大廠瘋狂招人的黃金期,也就是程序員的黃金跳槽期,因此被稱爲金九銀十。java
每一年9、十月份,各大互聯網公司都會週期性地發生人事變更,不管是剛進社會的職場菜鳥,仍是準備跳槽的老手,都將在這個時候得到新工做,或迎來晉升漲薪的最佳機會。git
如今已經十月底了,「金九銀十」即將過去,也已經有不少同行收到了比較滿意的Offer,但所謂「有人歡喜有人愁」,依舊還有不少同行們「升職無望、加薪難等」……程序員
這篇文章就主要針對Android開發者提高自我,技術進階,同時也預祝你們早日收到滿意的Offer!面試
不管是求職仍是跳槽,簡歷都是重中之重。說到找工做,第一件事確定是準備簡歷,寫簡歷須要有必定的學問,一篇要把你全部的優點說明白,並且如今寫簡歷,千萬不能夠寫的太死板,必定要寫的另類一些,由於簡歷太多,好比你寫,喜歡學習,性格隨和,等等太廣泛,你會寫別人也會寫,沒有新意,並且在寫項目經歷的時候更要注意。算法
很多人問爲何我投遞了很多簡歷,可是沒有迴應呢?我想要告訴你的是若是你以爲各方面都符合招聘要求,可是仍然沒有回信,那極可能問題出在你的簡歷上。小程序
總結了下程序員的簡歷到底該怎麼寫?windows
一份簡歷無非就包含如下幾塊內容:微信小程序
基本信息設計模式
基本信息就是把企業最關心的一些信息寫出來,這部分包括:姓名、性別、工做年限、學歷、聯繫方式(郵箱+電話)、出生年月(通常寫個年份就好)、應聘職位、所在城市,以上是必須的,除此以外若是你有我的博客跟GitHub地址能夠加上,若是想的話,最多加上一句座右銘與指望待遇,其餘信息都是多餘的。性能優化
須要說明的是,若是你我的博客跟GitHub有內容與項目的話就能夠加上,不然只是一個空殼還不如不加。若是你對你本身的長相很自信的話能夠附上照片,不然仍是不加的好。其餘信息都不須要寫了,我見過有簡歷把本身什麼型血都寫上去,我一口鹽汽水就噴了,要不要寫上你的三圍啊?
教育經歷
這部分比較簡單,就把你大學的學校、專業、入學時間、畢業時間寫清楚就行了,若是有讀研經歷的那就再加上,高中學歷就別多此一舉了,或許你以爲你高中的學校很牛逼,你高中所在的城市我都不必定知道,還在意你的高中學校麼?
工做和實習經歷
這部分就如實寫就行了,記得一條,按時間順序倒序,把工做或者實習所在的公司名稱、職位、開始時間、結束時間寫清楚就行了,若是你有工做經驗的,就不須要再寫上實習經歷了。
項目經驗
項目經驗是程序員們最重要的財富,也是面試中必問的問題。通常面試官都會藉着項目經驗來考查應聘者的溝通能力和思考能力。但實際咱們大部分的狀況都是作產品的一個功能或一個模塊,雖然咱們能很好的完成工做上的要求,可是對於面試這確定是不夠的。對於面試來講,咱們還要完成如下四點。
職業技能
這部分就列舉你經常使用的熟練的技能就ok了,好比這樣:
這裏須要注意兩點:
1. 不熟練的技能不要列在上面,到時候面試問到相關問題你又不會,反而會給你減分;
2. 千萬不要使用「精通」、「使用過」這種字眼,咱們CTO作Ruby十來年了,可是歷來不敢說「精通」Ruby,你「使用過」某種東西說了還不如不說,我還「使用過」Ruby、Python、Go等一堆呢!
其餘
這部分就列舉下你取得的榮譽、得到的證書了,好比英語四六級證書,託福之類的,那些小打小鬧的什麼計算機二級證書啥的就算了吧,我還見過有列舉本身取得過什麼學校踢毽子大賽一等獎的,當時真是笑尿了,我還得過咱們村籃球比賽MVP呢!
還有興趣愛好也能夠在這裏說起下,好比籃球、羽毛球、足球、圍棋之類的,別把Dota、LOL當興趣愛好列出來就行。
排版
上面那些內容實際上是你無法改變的,你本身自己的工做經歷、學歷、項目經驗等又不能造假,把上面那些基本東西作好就ok了,可是簡歷之間的微小差距每每在排版上。
程序員的簡歷頁面千萬不要搞得過於複雜,從頭至尾就儘可能簡潔樸素,別搞的一個簡歷四、5種字體,大家看別人的公衆號文章排版是否是很舒服?大部分什麼編輯器也沒用,就是最樸素的微信自帶編輯器,而後把字體大小、間距、字體設置好就好了。不要很花哨,就普通的白底黑字、宋體或者黑體最佳,注意全角半角標點。
簡歷內容必定儘可能兩張A4紙就能夠搞定,2頁紙還寫不完你的簡歷,那你的履歷該有多複雜?
簡歷這塊仍是比較容易突擊上來的,面試難,還有不少人死在了技能上,那麼怎麼補?怎麼去提高呢?
面試想要突擊一下,能夠提早一段時間就開始準備,針對意向崗位或公司多刷題,可是刷題即使是過了面試,進去之後不會怎麼辦?
這就要求咱們Android開發者們有着更加出色的專業技能了,能夠參照下面的一些技術技能提高進階。
Java語言進階與Android內核
Android應用是由Java語言進行開發的,SDK也是由Java語言編寫,因此咱們要學習java語言。另外,雖然說kotlin語言獲得了Android官方的熱推,可是kotlin也是編譯成了java語言再運行的。對於Android來講,只要SDK沒有用kotlin重寫,那麼Java語言是都須要學習的。並且Android apk的後臺服務器程序大機率是java語言構建,因此學習java也是一種必然。
那麼Java中哪些東西是咱們Android程序員須要學習的呢?因爲Android程序員習慣了 C V 代碼塊,因此與Android中比較相關的稍微比較難的Java基礎幾乎都是一個門檻,像:泛型、多線程、反射、JVM、Java IO、註解、序列化等,都是被 CV 的對象,而不少程序員是不懂其原理的,具體的學習內容如圖所示。
App開發框架知識體系(高級UI與FrameWork)
這塊知識是現今使用者最多的,咱們稱之爲Android 2013~2016年的技術。可是,即便是這樣的技術,Android開發者也每每由於網上Copy代碼習慣了而致使對這塊常常「使用」的代碼熟悉而又陌生:熟悉的是幾乎每天在和它們打交道,每天在複製這些代碼;陌生的是雖然每天和這些代碼打交道,可是並無深刻研究過這些代碼的原理、代碼深處的內涵。因此咱們須要重新的角度去分析這些知識點,深刻研究他們,要學習源碼,模仿源碼,而後再hook源碼,這樣才能說本身懂這塊的知識。
這些都是作Android開發,作高級工程師的基礎。
性能優化
一個app的性能好很差咱們須要從兩個層面努力。
如何寫出高性能的代碼呢?
那就須要咱們具有深厚的代碼功底,這就是代碼的基礎,如:數據結構達到能夠根據應用場景寫出符合當前場景的特殊結構,好比google針對Android平臺特徵研發了sparseArray替代HashMap。
另外,對經常使用的算法有本身獨到的看法,leetcode上有刷個上百道題,這樣差很少能夠達到精通最經常使用的排序查找動態規劃等算法的能力。再者,高效的算法以及節省內存的數據結構若是配合優秀的符合應用場景的設計模式,那麼,這些就爲高性能的代碼提供了實現依據。
另一個就是對寫好的代碼進行調優,那麼調優的方向就是使用Profiler工具進行測試和檢查,看哪裏有性能消耗大的操做,而後分析對於代碼的問題。調優的方向就變成了如何對內存調優,對耗電調優,對網絡流量調優,固然,還有對啓動速度,頁面切換效果與速度,開機白屏體驗,閃屏方面的緣由等進行分析和調優。最後再加上一個屏幕適配相機適配。
NDK模塊開發
音視頻、高清大圖片、人工智能、直播、抖音等等這些年與用戶最緊密,與咱們生活最相關的技術一直都在尋找最終的技術落地平臺,之前是windows系統,而如今則是移動系統了,移動系統中又是以Android佔比絕大部分爲前提,因此Android NDK技術已是咱們必備技能了。
要學習好NDK,其中關於C/C++、jni、Linux基礎都是須要學習的。除此以外,音視頻的編解碼技術、流媒體協議、ffmpeg這些都是音視頻開發必備技能,並且OpenCV、OpenGl這些又是圖像處理必備知識,這些在學習的過程當中都應該有原理級的實戰項目。
Android前沿技術
如今去不少公司面試,除了你具有基本的可以寫一個高性能app的能力後,通常都會在本身的app裏面加一些現有的相對較爲「666」的技術(或者是「無奈本人沒文化,一句臥槽走天下」的技術),這些技術咱們稱之爲前沿技術。他們通常包含熱升級,熱修復,App Instant,強制更新,組件化路由架構Arouter,RxJava,IOC架構方法,Hook技術等等。
固然,這些技術你不能只會用,你須要知道他的原理,有時候,你還須要知道如何對這些架構進行改進。
另外,很是重要的一點,不少Android開發者不肯意接受新知識,因此對於如今Google推出的新的技術方案毫無感受,這些都是被 control C 和control V所毒害的結果,開源讓開發者失去了自我,失去了基本的編碼能力,失去了深刻學習的信心和毅力,因此對於不少google推出的新技術、好組件(Google I/O 大會新技術)、好框架已經不肯意去學習了。這確定是不可取的,做爲一個程序員若是不能不斷地提高自我、自發的進階的話,30、35這種在網上看到的別人的焦慮,也會發生在你的身上,緣由很簡單,就是「技術更替」,老的技術漸漸被遺忘,新的技術又不會,學習能力尚未應屆生強,一旦公司效益很差要裁人,你猜猜誰纔是這個「幸運兒」?
移動架構師項目實戰
架構師不是天生的,是在項目中磨練起來的,因此,咱們學了技術就須要結合項目進行實戰訓練,那麼在Android裏面最經常使用的架構無外乎 MVC,MVP,MVVM,可是這些思想若是和模塊化,層次化,組件化混和在一塊兒,那就不是一件那麼簡單的事了,咱們須要一個真正身經百戰的架構師才能講解透徹其中蘊含的深理。
提升開發效率的工具運用
「工欲善其事必先利其器」
如何提升開發的效率?
不少開發者在開發的過程當中因爲gradle不會用致使加載代碼很是耗時,這些就是工做成本。
還有就是git的使用能夠幫咱們管理好咱們的代碼,這個很是關鍵,由於這個工具可讓咱們修改的代碼不會由於錯誤的操做而致使代碼丟失。
另外,做爲移動開發者,咱們至少須要知道如何抓取網絡包吧,其中,最經常使用的stetho就是一個很好的能夠進行網絡抓包的工具。
微信小程序
移動架構師不可不學習微信小程序。
Hybrid開發
混合開發的flutter如今已經逐漸變成了主流的混合開發框架,另外因爲阿里系的強大存在,致使阿里系的公司都在用Weex混合架構,這些都是一個Android工程師開拓視野,走向將來必不可少的基本技能。
參照上面這一些技術點進行進階提高,「金九銀十」過了不要緊,明年「金三銀四」你必定能夠斬獲心儀的Offer!
感謝你們能耐着性子,看完這篇文章。
在這裏我也分享一份本身收錄整理的Android學習PDF+架構視頻+面試文檔+源碼筆記,還有高級架構技術進階腦圖、Android開發面試專題資料,高級進階架構資料幫助你們學習提高進階,也節省你們在網上搜索資料的時間來學習,也能夠分享給身邊好友一塊兒學習
若是你有須要的話,能夠點贊,關注我,而後加入關注微信公衆號【Android開發之家】免費領取
「作程序員,圈子很重要」由於有了圈子可讓你少走彎路,拓寬人脈,拓展思路,學習他人失敗和成功的經驗,獲取最新經驗與信息,抱團取暖等!圈子的高度決定人生的高度!
我創建了一個純程序員的交流社羣(無廣告),有想法加入的朋友能夠加入Android開發交流羣(820198451)