2020年疫情下的Android跳槽之路:六年開發大齡菜雞的爬坑歷程,程序員技術過硬不怕找不到好工作!

寫在前面的話

我是14年畢業的,畢業一直做Android相關方面的開發,14年到18年經歷了幾家小公司,前後都倒閉了,可謂是一直顛簸流離,漂泊不定。在18年來到上海尋求發展,以前一直呆的是小公司,這次就想找個大公司,想穩定一點,同時大公司技術底蘊也比較強,想多學習學習,提升自己。前後大概經過了大半個月左右,找到了一家大廠,互聯網上市公司,我所在的技術團隊也有幾百號人,也算得上大公司了。

大小公司對比

大公司和小公司真的不一樣,我以前一直在小公司做開發,一個同時開發幾個app也是比較常見的。在大公司裏面,充斥着各種規章制度,流程規範價值觀的衡量,kpi考覈等。同時個人做的事也比較窄,因爲大公司要求的深度而不是廣度,人多,各人負責自己的那一方面,我在裏面主要做一些業務需求的迭代開發,整體而言不算很難,屬於比較養老的。在這家公司我呆了大概1年9個月的時間。以前我一直念念想找一家大公司,可是等我真正進去了以後才發現,其實不是我想的那樣,你要是被分進了核心項目組的話那還好說,如果在邊緣項目組的話,結果那就不好說了。KPI考覈這個東西,好壞還真不好衡量。就像阿里的325一樣,有的時候因爲這個KPI,愣是把人搞成了抑鬱症。

跳槽原由

跑題了,繼續回到這裏。在這家公司公司呆了一年多,活不多,做的事情也不是我想的那樣,跟我的發展規劃不一致,同時也因爲其他一些原因,我在1月初選擇了離職,本以爲找工作很容易,畢竟經驗也有了,大廠背景也有,可是萬萬沒想到,2020年發生特大疫情,新冠狀病毒疾病的發生,因爲這場疫情,很多公司都倒閉了,裁員,降薪隨處可見。到現在爲止還有很多公司還沒有復工,怕啊,要命了,口罩買不到,公司又裁員降薪,在家不上班,又沒有收入,貸款還不上,人都搞焦慮抑鬱了。我是1月份提了離職,然後準備了1個月,在2月份的時候開始投簡歷找工作。這次疫情影響很大,從投簡歷就能看出來,招人的需求不多,投了簡歷,公司迴應也不是很積極。從投簡歷,到約公司面試,到最後入職的話花了一個左右的時間。下面我就記錄以下具體的內容:

面試公司

面試的公司從幾個人的小公司到幾萬人的大公司,從不出名的小公司到BAT和宇宙條都有,我面試的公司主要有,TourABC,7貓,哈囉出行,360金融,觸寶,商米科技,比心陪練,傳音控股,毒APP,愛奇藝,B站,閱文集團,餓了嘛,阿里巴巴,今日頭條等比較出門的一些大公司,同時我還面試了一些比較小的的公司,不出名,前後大概有20家左右吧,通過率大概在50%左右,不過最後因爲薪資的問題沒有談攏,可能我在上家公司的薪資比較虛虛,我的期望薪資是增加20%,所以一些公司無法提供,所以就拒絕掉了。怎麼說呢,我出來上班,首先考慮的是薪資,比較都要先活着再談其他的。不過有的公司薪資雖然達到了,但是因爲做的東西跟我預期的不一樣,所以也拒了。還有一些大公司,像宇宙條,阿里,騰訊的,就是我自身問題了,能力達不到他們的要求,被拒了,這也很正常,畢竟能進去的也是少部分人,大多數的還是比較普通的。

面試方向

一開始我是找的關於應用層的開發,但是發現需求很少,現在Android面試找工作的方向一般有應用需求開發,系統framework研發,音視頻開發,基礎架構開發,跨平臺開發等幾個方面,從這次找工作來看,除了應用需求開發以外,其他的幾個方面的需求還是比較高的,但同時要求也很高,並不是說你會使用MVP+Rxjava+Retrofit+Dagger2+Glide+Jetpack+Flutter+RN等技術點就可以了,現在一般公司都要去你懂原理,瞭解技術實現細節了,現在市場上對於初中級的Android開發要求比較少了,更多的是對於高級研發的需求量比較大,所以對於Android研發的人而言,需要加強自身的硬技術,有過硬的技術就不怕找不到好工作。

因爲這次疫情的影響,找工作都是電話面試和視頻面試。基本上一面是電話面試,二面三面的是視頻面試,一般是在牛客網等平臺開一個面試房間,有的公司需要在線coding的,要求比較高。我從投簡歷到約公司面試,大概面了十幾家公司,我每次面試完一家公司都會做個總結,把涉及到的內容都記錄下來,同時不會的也會去惡補一下,都整理成相關文檔,現在詳細記錄以下我的面試內容,供有需求的同學參考參考:

面試內容

面試的範圍主要涉及Java基礎,Android相關的,數據結構與算法,計算機網絡等幾個方面。下面依次列出所問的問題:

Java部分

首先關於Java基礎知識點,主要包含以下內容,接口和抽象類區別,string.stringbuilder.stringbuffer三者區別,Java集合框架底層實現原理,線程和進程的理解,線程池得作用,線程的各種狀態,gc垃圾回收方面得知識點,具體如下:

  1. Java線程和多線程
  2. 說說JVM,它的程序計數器是幹嘛用的?GCRoots的對象可以有哪些。
  3. 集合list和linkedList 區別
  4. hashmap底層數據結構
  5. Java同步方式有哪些
  6. volatile關鍵字和synchronized關鍵字原理
  7. jvm的相關東西
  8. Integer的內容
  9. Java線程池相關的內容

Android部分

Android知識點考察,主要包含以下內容:activity的啓動模式,service的理解,進程間通信,插件化,組件化,熱更新之類的原理,網絡請求庫okhttp原理,設計模式,類加載機制,Handler的理解,Android啓動優化,性能優化相關的東西。具體如下:

  1. Android跨進程方式及原理
  2. Android性能優化,如何優化到極致,線程級別
  3. Android Handler的原理
  4. Android ANR的產生原因,如何定位ANR。
  5. 如何計算Android啓動時間,如何優化啓動。
  6. 說說Android架構模式,MVC是什麼解決了什麼東西,MVP是什麼?它跟MVC有什麼區別?MVVM瞭解嗎,是什麼東西。
  7. Android BInder機制是什麼。
  8. AIDL瞭解嗎,說說它的原理
  9. Android啓動Activity流程,涉及到哪些類?
  10. Android Binder爲什麼進行一次數據拷貝而不是2次或者0次。
  11. 事件分發機制是什麼?
  12. 網絡請求庫的實現原理是什麼,詳細說一下OkHttp的細節
  13. 圖片加載庫Glide的優點
  14. LRUCache緩存的原理
  15. 組件化模塊化,插件化得理解
  16. 如何進行性能優化以及如何設計一款性能優化的工具,從哪些方面入手
  17. react native,flutter和kotlin相關的內容
  18. Android 架構演變,MVP和MVVM
  19. Android各大市場上架APP的規範
  20. Google play市場
  21. 說說組件化和插件化,熱更新技術原理

網絡部分

  1. 你的項目架構是怎樣的
  2. 三次握手,四次揮手的相關問題
  3. 網絡請求框架的原理
  4. post和get的區別
  5. 如何實現一張5M的圖片上傳

其他關於每家公司問的面試內容可以參考我文末分享的面試資料,我每次面完一家公司都會詳細記錄之前公司的情況以及面試內容,有需要的可以去查看。底部獻上相關鏈接地址。

面試總結

這是我自己總結出來的面試問題答案,每次面完都會查漏補缺。

offer情況

總共面試了將近20家公司,大概可以的有40%~50%左右,不過有的公司因爲薪資達不到自己的期望,所以拒絕了,有的公司要求比較高,我沒有達到他們的期望也被拒絕了,最終選擇了一家中等規模的公司,主要做基礎架構部分的內容,他們家的app,用戶量達到5000萬左右,日活也有幾百萬,進去主要做性能優化這方面的,比較符合我的預期,所以就選擇了這家,目前已經上班半個月了,一切都還滿意。

面試複習路線推薦

多餘的話就不講了,接下來將分享面試的一個複習路線,如果你也在準備面試但是不知道怎麼高效複習,可以參考一下我的複習路線,有任何問題也歡迎一起互相交流,加油吧!

這裏給大家提供一個方向,進行體系化的學習:

1、看視頻進行系統學習

前幾年的Crud經歷,讓我明白自己真的算是菜雞中的戰鬥機,也正因爲Crud,導致自己技術比較零散,也不夠深入不夠系統,所以重新進行學習是很有必要的。我差的是系統知識,差的結構框架和思路,所以通過視頻來學習,效果更好,也更全面。關於視頻學習,個人可以推薦去B站進行學習,B站上有很多學習視頻,唯一的缺點就是免費的容易過時。

另外,我自己也珍藏了好幾套視頻,有需要的我也可以分享給你。

2、進行系統梳理知識,提升儲備

客戶端開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。

系統學習方向:

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO

  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化

  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化

  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack

  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發

  • 微信小程序:小程序介紹+UI開發+API操作+微信對接

  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

3、讀源碼,看實戰筆記,學習大神思路

“編程語言是程序員的表達的方式,而架構是程序員對世界的認知”。所以,程序員要想快速認知並學習架構,讀源碼是必不可少的。閱讀源碼,是解決問題 + 理解事物,更重要的:看到源碼背後的想法;程序員說:讀萬行源碼,行萬種實踐。

主要內含微信 MMKV 源碼、AsyncTask 源碼、Volley 源碼、Retrofit源碼、OkHttp 源碼等等。

4、面試前夕,刷題衝刺

面試的前一週時間內,就可以開始刷題衝刺了。請記住,刷題的時候,技術的優先,算法的看些基本的,比如排序等即可,而智力題,除非是校招,否則一般不怎麼會問。

關於面試刷題,我個人也準備了一套系統的面試題,幫助你舉一反三:

總結

改變人生,沒有什麼捷徑可言,這條路需要自己親自去走一走,只有深入思考,不斷反思總結,保持學習的熱情,一步一步構建自己完整的知識體系,纔是最終的制勝之道,也是程序員應該承擔的使命。

耗時一年多整理的一系列Android學習資源:Android源碼解析、Android第三方庫源碼筆記、Android進階架構師七大專題學習、歷年BAT面試題解析包、Android大佬學習筆記等等,這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章