要想工資漲得快,還是得跳槽?一個三本Android程序猿外包到阿里的逆襲之路

外包公司的艱苦歲月

小強畢業於東北一個三本學校,出生於一個西南地區貧困的小村莊。由於負擔不起高昂的學費差點不能上學,最後只得到處找身邊親戚借錢。畢業後輾轉了幾家公司後,認識他時已經在菊廠的一家外包公司工作。

工作前兩年,小強一直在一個小公司從事外包工作,每天CV打法沒有一點學習上進的氛圍。

想混日子還是很容易的。但是小強不甘心這麼走下去,而是給自己設定了明確的人生目標。

前年他的主管給他打的績效是A,但是他年終獎其實到手只有幾千。而且那段時間經常深夜了自己還在搭建環境。

想想自己辛苦一年的年終獎連甲方員工的十分之一都不到,內心給自己定下了目標一定要離開外包公司。而且他爲了這個目標,還學會了在項目中運用各種溝通技巧,很懂得如何同各個子系統的技術大牛進行交流,很快弄清楚了各個子系統的原理。

他能夠在溝通中引導別人去交流,而不是尷尬地直接問問題,也會恰當地恭維對方。

成功逆襲阿里

兩年後的某一天,和我說,說他要走了,由於螞蟻金服在大力拓展業務,急需招聘有Android性能優化經驗的人才。他去試了下居然通過了。

我當時聽了這個消息非常詫異,因爲阿里的社招一直比較嚴格,他的教育背景以及經驗並沒有什麼優勢。

由於私交還行,一次一起聚餐的機會,他給我講了他的面試經歷,他把在菊廠所瞭解的性能優化方式跟面試官交流了下,從自己所掌握的技術廣度方面成功打動了面試官。

面試官覺得他的教育背景和工作經歷雖然不怎麼樣,但是由於當時確實太缺性能優化的人才,才勉強給他面試機會。隨着面試流程的不斷進行,面試官發現A非常追求技術能力提升,而且他以前確實也一直在本職工作之外堅持着。

經過5輪面試他成功拿到了offer,終面的時候他非常拿手,這得益於他平時喜歡和人溝通,喜歡以一種輕鬆幽默地方式跟別人交流。

進阿里不易,活下來更難。強烈的求生欲讓他不願意放棄來之不易的阿里機會,不願再像以前一樣,付出10倍的努力,卻只能拿到1份回報。 於是他在阿里開啓了瘋狂地學習之路,經常爲了項目交付搞到凌晨2點。項目中遇到不會的技術點馬上向身邊的同事求助,再不斷地自我快速消化。

阿里的面試很難,但是要好好準備

阿里社招一般有四到五輪,我這次的流程是第一輪技術面、第二輪寫代碼、第三輪boss面、第四輪boss面、第五輪HR面。

一面技術面

  • 介紹自己
  • 介紹簡歷上的項目
  • 推送sdk底層實現
  • socket相關實現
  • 高性能列表實現,重點圍繞 recyclerview 展開,如何複用,如何緩存
  • 性能難點如何攻克
  • 性能優化方面項目中做了哪些工作
  • 熱修復原理,類冷啓動修復原理,類熱修復原理,classLoader雙親機制
  • 換膚原理
  • 設計一個圖片框架,我考慮的是如何加載,如何編解碼,如何緩存,api的易用性,大部分參考 glide 思路
  • 在很多數中找出前n個最小
  • mvc mvp mvvm區別與項目使用情況
  • 網絡層相關設計,volley底層實現,緩存相關
  • 自定義view相關
  • 下載模塊涉及,成功率相關
  • 彈幕與播放器相關
  • 跨進程通訊手段與注意點,webview相關
  • EventBus相關
  • 性能優化經驗及手段
  • 自己的方向是什麼? 想做業務,還是想做專點的技術,如何理解項目架構。
  • 反提問:“自己技術性回答得怎樣,有哪些改進。”
  • 爲什麼想要換工作
  • 興趣愛好,工作室情況,如何協調工作室與辯論隊
  • 平時學習習慣和安排

阿里二面

  • 網絡請求涉及,如何設計緩存
  • 性能優化手段,場景
  • dp的設計
  • 熟悉的底層源碼,廣播底層實現,這一點自己確實還了解不夠,不過自己講了哦從wsm->activity->view的事件傳遞過程
  • 聊之前阿里的實習
  • 爲什麼想要換工作
  • 職業規劃
  • 短視頻行業,Bolo相關及一些競品,因爲平時也會留意自己開發的軟件及競拍,行業情況,所以有一些自己的見解
  • 聊興趣愛好
  • 聊王者榮耀產品相關

三面boss面

  • 介紹自己情況,學android,工作經驗
  • 擅長哪一方面,這個問題非常致命,一定要選你足夠理解的,我那時候講的是性能優化,但是感覺講的不好
  • android 虛擬機區別,編譯區別,dex區別
  • 熱修復流程,原理是什麼,業界有哪些方案,對比如何
  • 打包流程是怎樣的
  • 應用啓動相關流程,從孵化進程到MainActivity#onResume繪製整個流程
  • 新版本android特性
  • 手勢滑動事件分發
  • view繪製流程
  • gradle執行流程
  • apk安裝底層細節
  • 崗位要求
  • 工作負責內容
  • 換工作原因
  • 優缺點
  • 家庭情況
  • 個人現狀

四面交叉面

  • 介紹自己
  • 項目經驗,團隊情況
  • 對網絡是否熟悉,一次http請求,https整體實現
  • 以後想做什麼,如何規劃自己技術
  • 開源貢獻,博客記錄相關的開放性問題
  • 反問:後面是否還有技術面試,得到的答案是基本不會有了,等 HR 面試就好

五面HR面

  • 爲什麼選擇換工作
  • 現在事業部狀況
  • 負責的項目工作
  • 最困難的事是什麼,想到的是項目難點和當時在工作室做項目,那段時間確實比較艱難,算印象最深刻的
  • 職業規劃
  • 堅持最久的事
  • 最有成就感
  • 薪水相關
  • 項目經驗,團隊情況
  • 未來技術規劃,是否考慮杭州,未來家庭規劃
  • 反問:大概多久會有答覆

通過系統學習提高核心競爭力

在互聯網行業,大家逐漸都會有這種共識,要想工資漲得快,還是得跳槽……

公司的老員工想要漲工資真的很難,而被新人倒掛薪資更是常事……

那麼怎麼才能跳得好,薪資滿意呢?我的幾點建議:

  • 多看看機會
  • 跳槽不是瞎跳的,尤其是不建議看在高薪的誘惑上跨行業跨方向的跳槽
  • 提升自身核心競爭力

那說到核心競爭力,怎麼才能提高呢?

成年人想要改變生活、逆轉狀態時,會不約而同做一件事,那就是再次學習。

接下來分享的系統學習資源以詳解各大互聯網公司的 Android 常見面試題爲主線,從面試的角度帶你介紹必備知識點,以及該知識點在項目中的實際應用

幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系。無論是你短期內想提升 Android 內功實力,突破自己工作中的能力瓶頸,還是準備參加 Android 面試,都會在這份資料中有所一些收穫。

從架構基礎開始,分了8個模塊來逐步從基礎進階到架構師的環節:

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

架構師築基語言基礎

目前Android APP開發主流語言就是Java語言,Java語言最大的特性就是提高了軟件的交互可能性,可以說安卓手機幾乎所有應用程序都是利用Java語言來進行編寫的。

知識要點:
1、深入理解Java泛型
2、註解深入淺出
3、併發編程
4、數據傳輸與序列化
5、Java虛擬機原理
6、高效IO

設計思想解讀開源框架

隨着互聯網企業的不斷髮展,產品項目中的模塊越來越多,用戶體驗要求也越來越高,想實現小步快跑、快速迭代的目的越來越難,插件化技術應用而生。如果沒有插件化技術,美團、淘寶這些集成了大量“app”的應用,可能會有幾個g那麼大。

所以,當今的Android移動開發,不會熱修復、插件化、組件化,80%以上的面試都過不了。

知識要點:
1、熱修復設計
2、插件化框架設計
3、組件化框架設計
4、圖片加載框架
5、網絡訪問框架設計
6、RXJava響應式編程框架設計

360°全方位性能調優

在不同層次的開發工程師手裏,因爲技術水平的參差不齊,即使很多手機在跑分軟件性能非常高,打開應用依然存在卡頓現象。

另外,隨着產品內容迭代,功能越來越複雜,UI頁面也越來越豐富,也成爲流暢運行的一種阻礙。綜上所述,對APP進行性能優化已成爲開發者該有的一種綜合素質,也是開發者能夠完成高質量應用程序作品的保證。

知識要點:
1、設計思想與代碼質量優化
2、程序性能優化
啓動速度與執行效率優化
佈局檢測與優化
內存優化
耗電優化
網絡傳輸與數據儲存優化
APK大小優化

3、開發效率優化
分佈式版本控制系統Git
自動化構建系統Gradle

4、項目實戰
啓動速度
流暢度
抖音在APK包大小資源優化的實踐
優酷響應式佈局技術全解析
網絡優化
手機淘寶雙十一性能優化項目揭祕
高德APP全鏈路源碼依賴分析
徹底幹掉OOM的實戰經驗分享
微信Android終端內存優化實踐

Android框架體系架構

Android框架體系架構(高級UI+FrameWork源碼) 這塊知識是現今使用者最多的,我們稱之Android2013~2016年的技術。

Android開發者也往往因爲網上Copy代碼習慣了而導致對這塊經常“使用”的代碼熟悉而又陌生:熟悉的是幾乎天天在和它們打交道, 天天在複製這些代碼 ;陌生的是雖然天天和這些代碼打交道,但是並沒有深入研究過這些代碼的原理,代碼深處的內涵。

知識要點:
1、高級UI晉升
2、Android內核組件
3、大型項目必備IPC
4、數據持久與序列化
5、Framework內核解析**

NDK模塊開發(音視頻開發系列)

NDK(Native Development Kit縮寫)一種基於原生程序接口的軟件開發工具包,可以讓您在 Android 應用中利用 C 和 C++ 代碼的工具。通過此工具開發的程序直接在本地運行,而不是虛擬機。

在Android中,NDK是一系列工具的集合,主要用於擴展Android SDK。NDK提供了一系列的工具可以幫助開發者快速的開發C或C++的動態庫,並能自動將so和Java應用一起打包成apk。

知識要點:
1、NDK開發之C/C++入門
2、JNI模塊開發
3、Linux編程
4、底層圖片處理
5、音視頻開發
6、機器學習

Flutter學習進階

2020 年無疑是 Flutter 技術如火如荼發展的一年。現在這門技術也依然非常有價值。

每一個移動開發者都在爲 Flutter 帶來的“快速開發、富有表現力和靈活的 UI、原生性能”的特色和理念而癡狂,從超級 App 到獨立應用,從純 Flutter 到混合棧,開發者們在不同的場景下樂此不疲的探索和應用着 Flutter 技術,也在面臨着各種各樣不同的挑戰。

知識要點:
1、Flutter跨平臺開發概述
2、Windows中Flutter開發環境搭建
3、編寫你的第一個Flutter APP
4、Flutter Dart語言系統入門**
……

微信小程序開發

微信小程序作爲現在比較火的編程開發應用場景之一,深受市場的青睞,這讓不少開發者眼饞不已。但是對於初學者來說,就完全摸不着頭腦了,不知道微信小程序開發製作需要學習那些知識,有需要的朋友可以參考本篇。

本篇知識要點:
1、小程序概述及入門
2、小程序UI開發
3、API操作
4、購物商場項目實戰

Android相關源碼解讀

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

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

Android BAT高級開發面試題及答案解析

面試前夕,刷題衝刺

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

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

以上內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者關注主頁掃描加 微信 獲取。

所以不要去抱怨社會的不公平,機會是留個有準備的人,路就在腳下,走對了,人生必將逆襲。祝各位程序猿在新的一年裏工作一帆風順!

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