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 年的公司,重新考慮自己的方向。到陽曆年底時,接受朋友邀請,和他一起創業。
我之所以願意去嘗試,是因為:
- 創業和上班的未來可能性大不一樣,萬一創業成功,你的影響力、經濟回報,都會上一個臺階。
- 一起做事的人靠譜。
- 做的產品,盈利模式明確。
當然,不幸的事總會發生——我們失敗了。
我個人並沒因為這樣的失敗經歷而後悔,因為當你站在主人翁的角度和高度去為公司負責時,你對工作的認知,會發生巨大變化!這種變化,會對後續的工作和人生產生重要的正向影響。
如果你技術過硬為人靠譜,一定會有不少創業者邀請你加入他們的隊伍。不要頭腦發熱,要仔細考察一下:
- 評估要做的產品是否靠譜
- 看看即將一起共事的人是否靠譜
- 設想近 2 年沒有收入,自己和家人的生活水平能否維持
- 設想全力投入創業對自己和家人的生活有什麼影響,自己和家人能否接受
3、 重回開發崗位
我從 2009 年開始做技術管理,到 2015 年底創業失敗,歷時 7 年。可是我在多個更好的管理機會面前,毅然選擇回到技術崗位繼續做開發。
為什麼?
這是因為我們工作的目的,除了賺錢,還有自我實現。
自我實現包括幾方面:
- 成長
- 成就
- 意願
成長是指你做一件事之前和之後,有你想要的、積極的變化。
假如你做了十年開發,技術水平、解決問題的能力,還是和剛入行時差不多,那就叫沒成長!
成就是指你做出了成績並獲得了相關干係人的認可。
你負責一個模組,用了最新的技術最牛逼的設計,也能 run ,實現了使用者需求。你個人覺得很有成就,可是你用的技術框架過於複雜,維護成本很高,運維團隊、二次開發團隊都不認可,那就不是真正的成就。
意願很好理解,就是你願意在什麼事情上投入你的時間和精力、你做什麼事情時會感到開心。
比如我,在創業失敗重新找工作時,就是因為覺得親力親為用技術去開發一個個軟體、解決一個個問題比較令我興奮和投入,所以才選擇回到開發崗位上。
很多開發者都會遇到要不要轉管理、要不要一直做技術這種問題,怎麼選擇答案,關鍵就在於你的個人意願和你做某件事的感受。
可能有人會問,如果你一直做開發,年齡大了,怎麼和年輕人拼?
我之前畫過一張圖,再貼出來給大家看看:
由這張圖可以看到,開發者做軟體分兩次創造,第一次創造在頭腦中完成,屬於思考層面;第二次創造,是編碼實現,是腦力勞動體力化。
如果你想要超越年齡,就要多在第一次創造所需要的能力上下功夫:
- 構建起來自己圍繞著特定業務領域的知識體系
- 淬鍊想象力、抽象、歸納、分析、整合、設計等
這樣你就能思考得多、做得少、做得關鍵、做得好,就可以超越年齡的限制。否則如果你整天和年輕人一樣只關注噼裡啪啦敲程式碼,肯定沒價值,很快被清退。
所謂高階工程師就是在技術上逐步沉澱,逐步體系掌握核心技術得來的。
我們程式設計師提升的方向無非管理者與架構師兩種。要成為管理者,就應具備一定的管理知識、較高的情商以及良好的組織協調能力。
而想要成為移動架構師,就要肩負技術和組織兩個層面的重任,構建自己完整的技術體系就尤為重要了。
當然從結果來論,能力突出架構師的薪資也同樣會水漲船高,一個Android架構師能夠拿到40萬的年薪都再正常不過了。
程式設計師職業路線圖
文末
我總結了一些Android核心知識點,以及一些最新的大廠面試題、知識腦圖和視訊資料解析。
需要的小夥伴私信【學習】我免費分享給你,以後的路也希望我們能一起走下去。(謝謝大家一直以來的支援,需要的自己領取)
[點選這裡也可以領取哦!](https://shimo.im/docs/3dQqpTdrrVvtcjjx/ 《BAT、位元組各大廠面試真題集》,可複製連結後用石墨文件 App 或小程式開啟)
- 330頁PDF Android學習核心筆記(內含8大板塊)
- Android學習的系統對應視訊
- Android進階的系統對應學習資料
- Android BAT大廠面試題(有解析)