天天看點

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

學習瓶頸

一直聊到這裡,我都非常了解。我這個十年以上的老碼農,體會比他還深。其實稍微幹上一些年頭,就是這個樣子,看起來像是“學習熱情下降”“懶得學習”,但本質上呢,兩個原因:

1、本身的技能增強,能夠應付日常工作,沒有剛入行時那麼大的壓力了。

2、學習的邊際效益遞減,是以開始考慮投資/收益比了。

剛入行的時候,技術一丁點的進步,都能帶來非常大的成就感,至少能少挨點罵,是不是?積累到一定時候,就可以跳個槽漲點工資啥的。但三五年過後,

我已經會了:

  • 熟悉Android OS系統體系結構、framework層;
  • 良好的Java技術功底,精通多線程、socket通信、檔案操作等java底層技術;
  • 精通Android的基本元件使用,熟練使用Android各種布局與控件,熟練運用各種動畫特效;
  • 熟悉View的繪制原理,精通自定義動畫以及自定View的開發
  • 有豐富的Android性能優化經驗,善于解決系統崩潰,記憶體溢出和相容性問題;
  • 熟悉JNI技術和代碼混淆
  • 有單元測試、自動化測驗及相關架構經驗;
  • 有良好的代碼習慣,要求結構清晰,命名規範,邏輯性強,代碼備援率低,代碼注釋清晰;

學會優雅轉身

接下來和大家分享一下我這麼多年的轉型之路。姑妄聽之:

1、轉型技術管理

2007 年下半年到 2009 年初,我慢慢轉向技術管理角色,開始管理一個研發部門。我走的路線是“技而優則管”。

簡單講,就是你技術牛 X ,輕松搞定各種問題,開始帶人,接下來帶團隊管項目,再接下來,順理成章就會被公司推着向技術管理者轉型。

這種路線,也是一大半技術管理者走過的路線。如果你想轉型技術管理,可以考慮這種。

“技而優則管”的要點,就是:行有餘力。

什麼意思呢,就是聚焦當下,高效搞定你的任務。當你展現出綽綽有餘的樣子,上司就會給你更多更難的任務。當你還能高效搞定,還看起來有餘力,上司就會再給你更重要的任務……

如此循環,你就越來越重要,就會帶人、帶項目的機會。

假如你總是手上的活兒都做不完、做不好,就基本走不了這條路線。不過也還有其他路線。

2、加入創業者行列

2014 年 9 月份,我因某種契機,離開工作 7 年的公司,重新考慮自己的方向。到陽曆年底時,接受朋友邀請,和他一起創業。

我之是以願意去嘗試,是因為:

  1. 創業和上班的未來可能性大不一樣,萬一創業成功,你的影響力、經濟回報,都會上一個台階。
  2. 一起做事的人靠譜。
  3. 做的産品,盈利模式明确。

當然,不幸的事總會發生——我們失敗了。

我個人并沒因為這樣的失敗經曆而後悔,因為當你站在主人翁的角度和高度去為公司負責時,你對工作的認知,會發生巨大變化!這種變化,會對後續的工作和人生産生重要的正向影響。

如果你技術過硬為人靠譜,一定會有不少創業者邀請你加入他們的隊伍。不要頭腦發熱,要仔細考察一下:

  1. 評估要做的産品是否靠譜
  2. 看看即将一起共事的人是否靠譜
  3. 設想近 2 年沒有收入,自己和家人的生活水準能否維持
  4. 設想全力投入創業對自己和家人的生活有什麼影響,自己和家人能否接受

3、 重回開發崗位

我從 2009 年開始做技術管理,到 2015 年底創業失敗,曆時 7 年。可是我在多個更好的管理機會面前,毅然選擇回到技術崗位繼續做開發。

為什麼?

這是因為我們工作的目的,除了賺錢,還有自我實作。

自我實作包括幾方面:

  • 成長
  • 成就
  • 意願

成長是指你做一件事之前和之後,有你想要的、積極的變化。

假如你做了十年開發,技術水準、解決問題的能力,還是和剛入行時差不多,那就叫沒成長!

成就是指你做出了成績并獲得了相關幹系人的認可。

你負責一個子產品,用了最新的技術最牛逼的設計,也能 run ,實作了使用者需求。你個人覺得很有成就,可是你用的技術架構過于複雜,維護成本很高,運維團隊、二次開發團隊都不認可,那就不是真正的成就。

意願很好了解,就是你願意在什麼事情上投入你的時間和精力、你做什麼事情時會感到開心。

比如我,在創業失敗重新找工作時,就是因為覺得親力親為用技術去開發一個個軟體、解決一個個問題比較令我興奮和投入,是以才選擇回到開發崗位上。

很多開發者都會遇到要不要轉管理、要不要一直做技術這種問題,怎麼選擇答案,關鍵就在于你的個人意願和你做某件事的感受。

可能有人會問,如果你一直做開發,年齡大了,怎麼和年輕人拼?

我之前畫過一張圖,再貼出來給大家看看:

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

由這張圖可以看到,開發者做軟體分兩次創造,第一次創造在頭腦中完成,屬于思考層面;第二次創造,是編碼實作,是腦力勞動體力化。

如果你想要超越年齡,就要多在第一次創造所需要的能力上下功夫:

  • 建構起來自己圍繞着特定業務領域的知識體系
  • 淬煉想象力、抽象、歸納、分析、整合、設計等

這樣你就能思考得多、做得少、做得關鍵、做得好,就可以超越年齡的限制。否則如果你整天和年輕人一樣隻關注噼裡啪啦敲代碼,肯定沒價值,很快被清退。

所謂進階工程師就是在技術上逐漸沉澱,逐漸體系掌握核心技術得來的。

我們程式員提升的方向無非管理者與架構師兩種。要成為管理者,就應具備一定的管理知識、較高的情商以及良好的組織協調能力。

而想要成為移動架構師,就要肩負技術群組織兩個層面的重任,建構自己完整的技術體系就尤為重要了。

當然從結果來論,能力突出架構師的薪資也同樣會水漲船高,一個Android架構師能夠拿到40萬的年薪都再正常不過了。

對于Android架構師職責的介紹,網上已經鋪天蓋地,就不再贅述。今天我主要給大家分享一下成為一名Android架構師應該掌握的技術能力。

阿裡公司注重的7大主流技術專題與移動架構師項目實戰

深度對接阿裡P8進階工程師級别的主流技術體系,并且綜合了目前的各大網際網路公司如華為、抖音、OPPO、阿裡等主流技術(即使你不想選擇阿裡,其它的大廠照樣适合)

主流技術專題

移動架構師項目實戰

音視訊開發、網上商城、新興自媒體等都是時下熱點技術與專題,深入了解項目源碼、參與項目開發過程中問題解決、組織協調與人際關系溝通均是大廠對人才素質的基本要求。

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

最後

都說三年是程式員的一個坎,能否晉升或者提高自己的核心競争力,這幾年就十分關鍵。

技術發展的這麼快,從哪些方面開始學習,才能達到進階工程師水準,最後進階到Android架構師/技術專家?我總結了這 5大塊;

我搜集整理過這幾年阿裡,以及騰訊,位元組跳動,華為,小米等公司的面試題,把面試的要求和技術點梳理成一份大而全的“ Android架構師”面試 PDF(實際上比預期多花了不少精力),包含知識脈絡 + 分支細節。
Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

Java語言與原理;

大廠,小廠。Android面試先看你熟不熟悉Java語言

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

進階UI與自定義view;

自定義view,Android開發的基本功。

性能調優;

資料結構算法,設計模式。都是這裡面的關鍵基礎和重點需要熟練的。

NDK開發;

未來的方向,高薪必會。

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計

前沿技術;

元件化,熱更新,熱修複,架構設計

Android崗面試12家大廠成功跳槽,從零開始學Android程式設計
網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時隻是淺嘗辄止,不再深入研究,那麼很難做到真正的技術提升。希望這份系統化的技術體系對大家有一個方向參考。

我在搭建這些技術架構的時候,還整理了系統的進階進階教程,會比自己碎片化學習效果強太多,CodeChina可見;

 當然,想要深入學習并掌握這些能力,并不簡單。關于如何學習,做程式員這一行什麼工作強度大家都懂,但是不管工作多忙,每周也要雷打不動的抽出 2 小時用來學習。

不出半年,你就能看出變化!