勵志22歲Android小夥高中學歷,現上海拿到25K offer,不迭代升級還等著被取代嗎?

南方吳彥祖_藍斯發表於2021-07-08

本文你會看到這些,認可就繼續讀正文:

  • 職業規劃開始走偏了,請馬上調整過來了
  • 程式設計師交很多技術朋友真的很重要
  • 外包沒有歸宿感,可替代強
  • 網際網路公司對自己技術成長非常有幫助,但工作強度非常高 996常態
  • 模擬面試,簡歷最佳化,投簡歷的技巧都很重要
  • 愛總結愛輸出的人不會差
  • 學習是人生最大的投資
  • 技術是一個不斷迭代的過程,所以要保持一個學習的狀態
  • 年輕多讀書考好大學,不然年齡大了特別迷茫焦慮

正文開始:

基本情況

本人是15年參加培訓,在當時本地的一所培訓機構培訓二年多的時間,當時才16歲, 高二剛讀完,成績也是那種特別不好的,因為朋友的影響,選擇了輟學,屬於那種半路出家的,在培訓期間,主要以Android為主,加上生活費一共花了差不多7萬左右。在整個年級裡面屬於那種算學的還不錯的(自己認為)。我今年22,從事Android開發,這是我的基本情況。

工作經歷

一共到現在換了四家公司。下面介紹下每家公司的一個情況和總結。

運維開發—8K(2017/3-2017/10)

17年來上海找工作,因為當時沒有工作經驗麼,所以簡歷包裝了一下,找了一份運維的工作,帶了一個四人的小團隊,當時的想法也很簡單,只要能找到工作就行,做運維做了不到一年的時間,也學到很多東西,不管是交流、思考問題、管理,都感覺提高了很多。最終也是因為想到自己的一個職業規劃,還是想從事開發方面的工作。

Android開發—12K(2017/10-2018/5)

2018年入職了一家醫療行業的小公司,做Android開發,比較偏傳統。做了差不多半年左右的時間,因為公司拖欠工資、資金鍊斷裂問題,選擇了離職,但在這半年的時間裡,技術提升了很多,同時也收穫了一些技術上的朋友,從最開始的領導,慢慢到現在變成了朋友,一直到現在都保持技術上的交流,包括工作方面的,我們都屬於特別熱愛的技術的那種,聊技術能聊一晚上,說的可能有點誇張,但在Android這個領域裡面算研究的比較深的了。

Android開發—17K(2018/6-2019/4)

然後接著之後做了一年左右的外包,法本外派到微軟,就類似於人力外包,然後幫微軟的客戶做房地產相關的專案,當時去微軟也是抱著一種學習的心態去的,因為當時對外包這個也不知道是一個什麼樣的情況,沒有體驗過, 做了一段時間明白了網上對外包的一些不好的看法,專案不穩定,代替性強,只要專案已結束,PM覺得你的作用不是很大,隨時都有可能把你裁掉。工作地點不穩定,像我當時做完一個專案,接著又去另外一個客戶現場做,這樣長期下來,跑來跑去,就感覺自己特別的累,但是也有好的地方,上班的時間比較自由,不太被控制,同時專案結束一批換一批,接觸到的人也比較多,這樣也能提高融入團隊的能力、交流能力。在這一年的左右的微軟外包時間裡,也學到了很多元件化相關的技術、另外對Android更深的技術也有了一定的認知與瞭解。也為後面的工作,做了鋪墊。

Android高階開發—23K(2019/4-2020/7)

2019年4月,剛滿了二年工作經驗的我,也收穫了一些offer。最終選擇了一家網際網路公司,旅遊行業,待遇也比較的可觀,雖然沒有大廠的offer,但當時對於我來說已經算比較不錯的了,畢竟技術棧也是我比較感興趣的。這一年的時間裡,基本上每天都是晚上10點左右下班,但在這樣的高強度工作下,感覺自己對NDK的理解、設計能力、與一些中間元件的使用和研究都提升了很多, 也接觸了很多比較新的技術,Kotlin、Jetpack、Flutter、等。但由於當時的疫情,公司受到了很大的影響,正因為這次疫情,技術相關的部門裁了很多人,我也在其中,但賠償還行,3個月,8月份開始找工作,到現在也收穫了一些比較不錯的offer。

關於面試

一個好的面試,往往需要做很多的準備,我6月份離職的這段時間,兩個月裡,基本上都是在家學習,但也會和朋友一起出來吃飯阿啥的。我面試之前會找人來模擬面試,然後根據模擬面試的一個情況,梳理下說話的節奏、專案介紹、技術點的回答的流暢性,然後簡歷修改完之後,最好找一個你認識的技術或者HR,幫你看下,這樣簡歷投遞後反饋率還是比較高的。

還有一點就是每次面試完, 最好把面試中一些回答的不是很好的問題或者是沒回答上的,記下來,然後針對的去學習,下次面試遇到了會提高面試的一個透過率,投遞簡歷的話,如果是沒有工作經驗的,或者沒有一個目標的,可以選擇批次投,我剛出來找工作的時候,就是批次投,自己也沒有一個明確的目標,只要能找到工作就行,如果是有工作經驗了,哪就針對的去投,還有就是投的一些公司,最好做下調查,比如看下融資情況,做什麼業務的等等…, 4個月的時間裡,前面兩個月是在家學習,後二個月是在找工作,前前後後面試了大概15家公司左右。

這裡說下我面試被問到一些面試題吧,這也是我自己的一個總結。

1、Handler 相關知識,面試必問!

  • Handler Looper Message 關係是什麼?
  • Messagequeue 的資料結構是什麼?為什麼要用這個資料結構?
  • 如何在子執行緒中建立 Handler?
  • Handler post 方法原理?
  • Android訊息機制的原理及原始碼解析
  • Android Handler 訊息機制

2、Activity 相關

  • 啟動模式以及使用場景?
  • onNewIntent()與onConfigurationChanged()
  • onSaveInstanceState()與onRestoreInstanceState()
  • Activity 到底是如何啟動的
  • 啟動模式以及使用場景
  • onSaveInstanceState及onRestoreInstanceState使用
  • onConfigurationChanged使用以及問題解決
  • Activity 啟動流程解析

3、Fragment

  • Fragment 生命週期和 Activity 對比
  • Fragment 之間如何進行通訊
  • Fragment的startActivityForResult
  • Fragment重疊問題
  • Fragment 初探
  • Fragment 重疊, 如何通訊
  • Fragment生命週期

4、Service 相關

  • 程式保活
  • Service的執行執行緒(生命週期方法全部在主執行緒)
  • Service啟動方式以及如何停止
  • ServiceConnection裡面的回撥方法執行在哪個執行緒?
  • startService 和 bingService區別
  • 程式保活一般套路

5、Android佈局最佳化

  • ViewStub、include、merge
  • 什麼情況下使用 ViewStub、include、merge?
  • 他們的原理是什麼?
  • ViewStub、include、merge概念解析
  • Android佈局最佳化之ViewStub、include、merge使用與原始碼分析pi的。

6、BroadcastReceiver 相關

  • 註冊方式,優先順序
  • 廣播型別,區別
  • 廣播的使用場景,原理
  • Android廣播動態靜態註冊
  • 常見使用以及流程解析
  • 廣播原始碼解析

7、AsyncTask相關

  • AsyncTask是序列還是並行執行?
  • AsyncTask隨著安卓版本的變遷
  • AsyncTask完全解析
  • 序列還是並行

8、Android 事件分發機制

  • onTouch和onTouchEvent區別,呼叫順序
  • dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent 方法順序以及使用場景
  • 滑動衝突,如何解決
  • 事件分發機制
  • 事件分發解析
  • dispatchTouchEvent,onTouchEvent,onInterceptTouchEvent方法的使用場景解析

9、Android View 繪製流程

  • 簡述 View 繪製流程
  • onMeasure,onlayout,ondraw方法中需要注意的點
  • 如何進行自定義 View
  • view 重繪機制
  • Android LayoutInflater原理分析
  • Android檢視狀態及重繪流程分析
  • Android檢視狀態及重繪流程分析
  • Android自定義View的實現方法

10、Android 的核心Binder多程式 AIDL

  • 常見的 IPC 機制以及使用場景
  • 為什麼安卓要用 binder 進行跨程式傳輸
  • 多程式帶來的問題
  • AIDL 使用淺析
  • binder 原理解析
  • binder 最底層解析
  • 多程式通訊方式以及帶來的問題
  • 多程式通訊方式對比

11、Android ANR

  • 為什麼會發生 ANR?
  • 如何定位 ANR?
  • 如何避免 ANR?
  • 什麼是 ANR
  • 如何避免以及分析方法
  • Android 效能最佳化之 ANR 詳解

12、Android 記憶體相關

  • 什麼情況下會記憶體洩漏?
  • 如何防止記憶體洩漏?
  • 記憶體洩漏和溢位的區別
  • OOM 概念以及安卓記憶體管理機制
  • 記憶體洩漏的可能性
  • 防止記憶體洩漏的方法

13、Android 效能最佳化

  • 如何進行記憶體cpu耗電的定位以及最佳化
  • 效能最佳化經常使用的方法
  • 如何避免 UI 卡頓
  • 效能最佳化全解析,工具使用

14、OKHTTP和Retrofit

  • OKHTTP完整解析
  • Retrofit使用流程,機制詳解
  • 從 HTTP 到 Retrofit
  • Retrofit是如何工作的

15、Android 元件化與外掛化

  • 為什麼要用元件化?
  • 元件之間如何通訊?
  • 元件之間如何跳轉?
  • Android徹底元件化方案實踐
  • Android徹底元件化-程式碼和資源隔離
  • Android徹底元件化—UI跳轉升級改造
  • Android徹底元件化—如何使用Arouter
  • 外掛化框架歷史
  • 深入理解Android外掛化技術
  • Android 外掛化和熱修復知識梳理

關於學習

我的學習方法,看相關的影片教程,比如騰訊課堂、極客時間、慕課網這種平臺都是比較不錯的,裡面有些影片是收費的,我覺得學習就是一個投資的過程,自己也花了不少的錢在這上面,然後就是 體系化的去學習和實踐,每學一個技術點,最好記錄到筆記上,或者是 記錄在部落格上,這樣有利於加升印象,特別學的東西多了之後,不透過筆記記錄,很難記住,主要還是找到適合自己的學習方法, 我自己特別適合看影片來吸收。

還有就是看相關的技術部落格、比如部落格園裡面的博主,寫的技術文章給我的影響還是蠻大的,看書也是不錯的,然後就是給每週制定學習計劃,這個計劃時間,也不要控制的太死了,最好中間空一些時間出來,因為可能中間會插入一些其他的事情來,這樣就會影響到後續的一個計劃。

我覺得學習這個話題,對於程式設計師來說是很重要的,其他的領域也很重要, 因為技術是一個不斷迭代的過程,所以要保持一個學習的狀態,以後對自己的一個職業發展是非常順暢的,如果自己不迭代升級,長期這樣的話,可能會被一些年輕努力的程式設計師取代,薪資也會跟著年齡下滑,所以趁著年輕而沒有什麼壓力的情況下,把自己的技術功底學好,多投入一些錢花到學習上來,到一定時候,這些努力都會得到相對應的報酬。

如果是年輕的時候不努力,年齡大了而且有家庭了,這個時候可能會感覺自己很迷茫,不知道以後的路怎麼去選擇,因為我身邊有這樣的技術朋友,能感覺的到那種迷茫,一般到了一定年齡很難剋制自己去學習了,因為來自家庭上、工作上的壓力會讓你分散這些精力和注意力,所以不要等到年齡大了再來學,那個時候已經晚了。

個人感悟

說下我的一個經歷與狀況吧,因為我本身沒上過大學,也不知道大學的生活是一個什麼樣的狀況,培訓出來後是一個專科的學歷,19年考了一個專升本,所以有那麼一點點羨慕那些上過大學的同學吧,因為工作的原因,也認識了一些同事,他們的學歷背景都比較的好,而且學習能力、與人相處都不錯,以前我自己覺得學歷沒什麼用,只是一塊敲門磚,但現在看上去,有那麼一點天真,特別是找工作的時候,找相當大一點公司,可能就會因為學歷連面試機會都有沒有,所以 學歷還是很重要的,像我目前的一個打算是2021年準備考一個碩士來彌補下學歷,隨便開闊下視野。

以前欠下的東西,只要選擇繼續走這一條路,遲早要還回來的,不然後面的路很難走,特別是到一定年齡和年薪的時候,再往上晉升領導或者是技術總監,這個時候學歷可能會受到一定影響。趁著還是學生的時候,多讀點書,考一個好一點的大學,儘量不要選擇我這種半路出家的,不然後面的路會走的很累。

Android技能提升

程式設計師如何走上快速提升技術走上財富自由之路?

下面我提供一下我多年工作以來收集整理的學習路線,給大家做個參考:

學習一線大廠的各項技術:

大廠是我們的技術先驅,不僅僅是各種技術,還有很多令你大開眼界的使用方法,學習這些有利於自己競爭力的提高,深入理解後也可以提升你的學習效率。

現在競爭這麼激烈,只有透過不斷學習,提高自己,才能保持競爭力。

1.2020大廠面試高頻知識點

  • 圖片
  • 網路和安全機制
  • 資料庫
  • 外掛化、模組化、元件化、熱修復、增量更新、Gradle
  • 架構設計和設計模式
  • 效能最佳化
  • Android Framework
  • Android優秀三方庫原始碼

2.Jetpack架構元件從入門到精通

  • Android Jetpack - Navigation
  • Android Jetpack - Data Binding
  • Android Jetpack - ViewModel & LiveData
  • Android Jetpack - Room
  • Android Jetpack - Paging
  • Android Jetpack - WorkManger
  • Android Jetpack架構元件之Lifecycle
  • Android Jetpack Compose 最全上手指南

3.Framework精編核心解析

主要內容包含:

  • 深入解析Binder
  • 深入解析Handler
  • Dalvik VM 程式系統
  • 深入解析 WMS
  • PackagerManagerService

4.Kotlin強化實戰(附Demo)

  • 第一章 Kotlin入門教程
  • 第二章 Kotlin 實戰避坑指南
  • 第三章 專案實戰《Kotlin Jetpack 實戰》
    • 從一個膜拜大神的 Demo 開始
    • Kotlin 寫 Gradle 指令碼是一種什麼體驗?
    • Kotlin 程式設計的三重境界
    • Kotlin 高階函式
    • Kotlin 泛型
    • Kotlin 擴充套件
    • Kotlin 委託
    • 協程“不為人知”的除錯技巧
    • 圖解協程:suspend

5.Android設計思想解讀開源框架

  • 熱修復
  • 外掛化
  • 元件化框架設計
  • 圖片載入框架
  • 網路請求框架
  • RXJava 響應式程式設計框架設計
  • IOC 架構設計
  • Android架構元件Jetpack

6.NDK模組開發

  • NDK 模組開發
  • JNI 模組
  • Native 開發工具
  • Linux 程式設計
  • 底層圖片處理
  • 音影片開發
  • 機器學習

定期面試:

光學習了大廠的技術還不夠,如何瞭解當下Android市場需要哪些技術呢?

定期的面試足以讓你瞭解當下市場需要哪些技術,也更加容易確定自身的短板在哪,同時,也可以督促自己學習提升(小夥子,你瞭解的技術有點落伍了呀…)

萬一拿到了高薪Offer,豈不是更賺?

多看大佬的學習筆記,學習大佬的設計思想:

只要是程式設計師,不管是Java還是Android,如果不去閱讀原始碼,只看API文件,那就只是停留於皮毛,這對我們知識體系的建立和完備以及實戰技術的提升都是不利的。

真正最能鍛鍊能力的便是直接去閱讀原始碼,不僅限於閱讀各大系統原始碼,還包括各種優秀的開源庫。

以上這些內容均免費分享給大家,需要完整版的朋友, 。或者點選 【 】 檢視獲取方式。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69983917/viewspace-2780437/,如需轉載,請註明出處,否則將追究法律責任。

相關文章