1. 程式人生 > 其它 >Android開發五年,2021Android高階面試題及答案,社招面試心得

Android開發五年,2021Android高階面試題及答案,社招面試心得

基本情況

  • 碩士生,Android開發崗
  • 此文主要是2021年初春招實習的面試和正式校招面試經驗彙總,最終校招拿到了騰訊,百度,美團,網易等offer
  • 主要包括阿里4面,騰訊8面,位元組3面,百度3面,美團3面,網易3面,愛奇藝3面

學習瓶頸
一直聊到這裡,我都非常理解。我這個十年以上的老碼農,體會比他還深。其實稍微幹上一些年頭,就是這個樣子,看起來像是“學習熱情下降”“懶得學習”,但本質上呢,兩個原因:
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架構師能夠拿到40萬的年薪都再正常不過了。

程式設計師職業路線圖

文末

我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。

需要的小夥伴私信【學習】我免費分享給你,以後的路也希望我們能一起走下去。(謝謝大家一直以來的支援,需要的自己領取)

[點選這裡也可以領取哦!](https://shimo.im/docs/3dQqpTdrrVvtcjjx/ 《BAT、位元組各大廠面試真題集》,可複製連結後用石墨文件 App 或小程式開啟)

  • 330頁PDF Android學習核心筆記(內含8大板塊)
  • Android學習的系統對應視訊
  • Android進階的系統對應學習資料
  • Android BAT大廠面試題(有解析)