從外包到大廠的逆襲!Android開發5年,一年蟄伏後面試成offer收割機,入職騰訊定薪20*15

我的情況

14年剛畢業的時候,Android開發市場發展火熱,無數人員湧入Anroid開發行業,人員增長率快,自然市場競爭力就大。當因爲學歷不高、職業技能不熟悉再加上沒經歷過項目實戰,導致我的簡歷,大小公司拒收,最後只能來到了一家外包公司。

因爲二本學歷遭到某公司的唾棄的經歷讓我憤怒!但是也無可奈何,經歷永遠是過去式,職業技能纔是未來應該佔主導的!

來到外包公司以後,我的臉上滿面愁容,因爲在外包裏,大部分程序員的時間都在ctrl C+ctrl V,就像沒有靈魂的代碼機器,他們永遠不知道。

外包公司的經歷給簡歷帶來的是毀滅性的打擊:

因爲之前公司是外包,所以老於的簡歷在求職人羣之中跌落低谷,別說拿到offer,面試的機會也只有寥寥數次。

所以我乾脆靜下心來花了一年的時間學習,玩命似的的學習Android,因爲知道掌握“喫飯”的技能不夠強大,有很大的提升空間。於是開始不停逛Github找自己不會的實戰項目,從博客上找資料,去各大網站收集Android開發學習視頻,一步一步從最基礎的做起。

盲目的學習還是效果差一點,後面開始學習怎麼系統去學習,從大佬那裏手機整理出了一份非常系統的學習路線,一個一個知識點的去死摳,讀官方文檔,閱讀學習大佬們的源碼,然後最後就是修改簡歷,準備好一切後開始投遞簡歷。

面試結果:投遞的簡歷大、中、小型各種公司不少於20家,面試大廠過了掌閱和騰訊,小公司過了一大堆,最後選擇入職騰訊,從1512薪到2015薪,漲薪幅度12W+。

面試情況

騰訊一面

1.mmap + native 日誌優化?
2.廣播和 EventBus 的區別?
3.常用設計模式你瞭解哪些?
4.跨進程通信有哪些?
5.簡單講講 binder 驅動吧?
6.跨進程傳遞大內存數據如何做?
7.說說 ConcurrentHashMap 的實現原理說下,初始化大小是多少?
8.啓動優化怎麼優化?
9.你寫的 rxpay 和 rxlogin 具體怎麼實現的?
10.kotlin + fullter 方面的

騰訊二面

1.單例設計模式都寫寫,靜態內部類是怎麼保證線程安全的?
2.synchronized 底層實現原理,ReentrantLock 公平鎖與非公平鎖。
3.主線程等待所有線程執行完畢,再執行某個特定任務怎麼實現?原理和源碼看過沒?
4.自定義 view 的一般流程,要注意些什麼如何優化,點擊事件和長按時間分別是怎麼實現的?
5.四種啓動模式,在源碼分析中的原理是怎樣的?
6.講講 bindService 的過程,你當初是怎麼優化後臺服務進程的?
7.開發中你都用到了哪些設計模式?說說當時具體的場景。爲什麼你要用方法工廠,另外兩種呢?

騰訊三面

1.講講 handler 的底層實現原理?
2.說說你做的日誌記錄優化?
3.你看過 binder 驅動的源碼,說說他的內存映射過程,說說客戶端等待服務端處理返回的流程,如果要跨進程傳遞大內存數據你具體會怎麼做?簡單寫一寫吧。
4.在公司做過哪些優化?
5.過程中遇到的一些最難解決的問題?
6.提到了動態修復替換加載 so ,那你知道怎麼修復 class 嗎?怎麼修復資源呢?
7.還有什麼要問的?

面試中問道的問題遠遠不止這些,這些知識我記得印象比較深刻,給大家進行列舉出來的。其實面試中問的還是比較全面,比如有問道:日誌、廣播、設計模式、跨進程通信、Binder、Kotlin、Fullter等相關問題

關於其他公司的面試題我把大概記得的整理了出來,分成了Android和Java兩類問題,大家也可以參考下:

Android問題:

  1. 四大組件之間怎麼實現通信(binder,冷啓動)
    2.Glide三級緩存,大圖加載,活動緩存設計的必要,與Picasso有什麼區別
    3.說下MVP,以登錄爲栗子,與MVC對比有什麼好處
    4.啓動模式,異同,activity A 打開 B 生命週期調用
    5.handler設計模式、阻塞機制、同步屏障機制、線程切換、Looper、ThreadLocal
    6.Retrofit的實現原理(動態代理+註解),rxjava如何實現線程切換、背壓、版本區別
    7.apk加固原理,加殼脫殼;
    8.apk瘦身做了哪些,縮減了多少M
    9.說個自定義view,繪製過程
    10.說下事件分發機制,兩個並列的view,點下去移到另一個,都調用哪些方法
    11.內存泄漏有哪些,handler內存泄漏原因,如何解決,工具
    12.tcp三次握手、四次揮手,HTTP與HTTPS區別,HTTP1.0與2.0區別,get與post區別
    13.組件化原理,與插件化不同點,動態代理

Java問題:

1.註解類型,區別,元註解
2.說下對鎖的理解:sync、lock、cas、volatile、JMM、讀寫鎖
3.HashMap原理,存取過程,爲什麼用紅黑樹,紅黑樹與完全二叉樹對比,HashTab、concurrentHashMap,concurrent包裏有啥
4.泛型的理解,類型擦除
5.說下JVM的瞭解,內存模型,垃圾回收算法,可達性分析,引用計數法,四種引用
6.對稱非對稱加密、md5原理

程序員如何從外包跳到大廠?

簡歷是成功的一半

簡歷的重要程度在面試過程中佔到50%,把簡歷寫好也是一個技術活,就和你寫晉升ppt一樣,很多程序員上班摸魚划水,最後週報和晉升答辯還能寫出花來,你仔細想想這其中的套路?

格式排版沒那麼重要,講清楚你幹了啥,按照STAR原則來,把它當做一次你的上份工作經歷的晉升答辯來對待,項目成果一定要量化!量化!量化!簡歷篩選就1分鐘不到,把重要的東西強調出來!

面試能力和技術能力一樣重要

很多職場老油條在面試這一環節上,絕對是跑得比其他人快的,因爲這當中就是有套路!他們熟悉各大廠面試官面試的流程,大同小異其實,甚至把問的題目都摸得差不多了。

所以很多應屆生在校招之前可以多問問你們的學長學姐,瞭解你想去的公司的面試套路,不要打沒準備的仗!面試時很多坑,如果不做好足夠的準備,你不被面試官坑也會被HR坑!畢竟短短的1個小時左右面試,看不出來太多。

進入和大廠對標業務的小廠,曲線救國

現在Android領域的大環境太好,部分崗位已經趨於飽和,大廠更加難進,但小廠你就得搞清楚它的核心業務是什麼,比如要麼進C端垂直領域裏前幾名的小廠,要麼進深耕B端的穩了很多年的小廠,因爲很多大廠在細分領域裏後續要加大投入,一旦你是這個領域裏的頭部,大廠一開始涉足這個領域,你的機會就來了!

小廠也有它的優點,在小廠更容易有機會,大廠很多都是螺絲釘,我身邊很多人都是在小廠幹出了不錯的成績後來進大廠的。時間會證明一切!

從大廠的邊緣部門進入

其實大廠並沒有很難進,難進的是大廠的核心業務,兩者對人才要求肯定是不一樣的。這就和你當初選擇大學一樣,是進好的大學的邊緣專業還是選擇一般大學的重點專業?

這裏只說一點,社會發展速度太快了,現在你看到的核心和重點,或許在三五年之後會變成邊緣,同樣地,現在的邊緣將來很可能就成爲了核心。

畢竟現在一個互聯網創業公司的生存時間已經短到了2年,誰能確定未來呢?

從大廠的邊緣業務切入,後面抓住機會轉核心,未必不是一個好選擇。先拿到船票再說!

去大廠必先技術沉澱

就拿上面我自己爲例,我最後靠的是什麼進的騰訊?

學歷嗎?還是經驗

不,都不對,是努力,是技術,你要知道以後起決定作用的是自己的職業技能

做東西的時候要有自己的亮點,比如你解決了什麼難點?做前端的話那基本就是加載速度,用戶體驗跟耗時,webpack優化。做後端那就往CAP方面去靠,怎麼做到高併發高可用的。

無論你是不是外包,只要你能力過硬,大場隨時可以進。

技術積累衝擊大廠

Android面試會涉及到很多雜而亂的知識點,所以想要進入大廠,你不僅需要有十分紮實的基本功,還需要有完整的解答邏輯

接下來分享的這份錦囊裏還包含了百度、阿里、騰訊、京東等衆多大廠的Android面試真題,詳細介紹了各企業的面試重點、解決方案,幫助大家做好面試準備,斬獲大廠高薪 offer!

通過這份錦囊,你能收穫:

  • 瞭解大廠的面試考覈標準,有的放矢地準備面試;
  • 掌握一手最新Android面試真題,有針對性地刷題;
  • 爲自己心儀的公司提前做好準備,面試更有信心。

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

Android學習路線圖

首先,對於沒有學習方向,知識不體系的人,我把我工作幾年整理的學習路線分享給大家,做一個借鑑作用,還不知道怎麼學習的人可以直接照着我這個學習路線一個個的去學習,知識不體系的人可以參考下我整理路線的方式,總之希望能夠幫到你們!

模塊化學習資源

接下來是每個模塊我整理出來的文檔學習資料,幫助大家更細緻化的學習。

《Android彙總複習資料—Java》

《Android彙總複習資料—Android》

《Android彙總複習資料—Android擴展》

《Android彙總複習資料—Kotlin》

《Android彙總複習資料—Flutter》

《Android彙總複習資料—算法》

除了上面的學習路線,還可以額外的配合以下方式學習,效果翻倍~

①看視頻進行系統學習

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

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

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

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

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

③面試前夕,刷題衝刺

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

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

④2020大廠面試高頻知識點

  • 圖片
  • 網絡和安全機制
  • 數據庫
  • 插件化、模塊化、組件化、熱修復、增量更新、Gradle
  • 架構設計和設計模式
  • 性能優化
  • Android Framework
  • Android優秀三方庫源碼
以上這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章