尷尬!6年Android經驗面試滴滴,剛聊10分鐘就被送走,技術再次被摩擦在地

背景

作爲一名優秀的程序員,技術面試是不可避免的環節,一般技術面試官都會通過自己的方式去考察程序員的技術功底與基礎理論知識。

正常情況下,一輪技術面至少要 30 分鐘,有的甚至能聊一個多小時,低於這個時長的基本就算涼了。

有個前同事,6 年 Android 經驗,去滴滴面試,不到 10 分鐘就被送走了,之後再也沒有接到下一輪面試的通知。

好不容易拿到的面試機會,僅僅十分鐘就被 PASS 了,說到底還是因爲技術不達標。面試官問的幾個問題,他回答得都不是很好,直接導致對方沒有繼續聊下去的意願:

  • AMS是如何啓動的?
  • AMS在Android起到什麼作用?
  • AMS有哪些應用場景?我們是如何應用AMS核心原理的?
  • WMS的工作原理說說?
  • JVM的核心原理你懂多少?
  • 我們的代碼是如何在棧區中運行的?
  • 如何使用字節碼研究系統級原理?

這些底層問題能回答上來嗎?是不是看上去很難?是不是和自己準備的“題庫”中的問題不一樣?不知道從何處下手?如果你有這種感覺,那麼說明你的技術還需要繼續修煉。

面試技術點考察

其實,Android 技術面考察的知識點很多,從框架、JVM、併發,到 NDK、kotlin、Flutter和性能優化,覆蓋面非常廣。

其實很多的移動開發者都止步於這個水平,要想再進一步深入發展很難,進階學習成爲了一個迫在眉睫又進展艱難的點。

進階學習難嗎?有一定難度。工作和學習遇到瓶頸後我們需要鑽研底層原理,而現在我們基本上都是上班懟業務代碼,晚上經常性加班趕任務進度,回到家已經很累了,很少有時間去提升自己的技術。鑽研底層原理對我們來說相當奢侈。

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

對於程序員來說,要學習的知識內容、技術有太多太多,要想不被環境淘汰就只有不斷提升自己,從來都是我們去適應環境,而不是環境來適應我們!

對於一些不知道學習什麼,沒有一個系統路線的程序員,這裏給大家提供一個大概的思路:

  • 架構師築基必備技能:深入Java泛型+註解深入淺出+併發編程+數據傳輸與序列化+Java虛擬機原理+反射與類加載+動態代理+高效IO
  • Android高級UI與FrameWork源碼:高級UI晉升+Framework內核解析+Android組件內核+數據持久化
  • 360°全方面性能調優:設計思想與代碼質量優化+程序性能優化+開發效率優化
  • 解讀開源框架設計思想:熱修復設計+插件化框架解讀+組件化框架設計+圖片加載框架+網絡訪問框架設計+RXJava響應式編程框架設計+IOC架構設計+Android架構組件Jetpack
  • NDK模塊開發:NDK基礎知識體系+底層圖片處理+音視頻開發
  • 微信小程序:小程序介紹+UI開發+API操作+微信對接
  • Hybrid 開發與Flutter:Html5項目實戰+Flutter進階

知識梳理完之後,就需要進行查漏補缺,所以針對這些知識點,我手頭上也準備了不少的電子書和筆記,這些筆記將各個知識點進行了完美的總結。

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

幫你在現在的基礎上,重新梳理和建立 Android 開發的知識體系。無論是你短期內想提升 Android 內功實力,突破自己工作中的能力瓶頸,還是準備參加 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 編程
  • 底層圖片處理
  • 音視頻開發
  • 機器學習

7.Android源碼解析

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

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

以上這些內容均免費分享給大家,需要完整版的朋友,點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。

簡歷的包裝也很重要

但想要拿下大廠 Offer,不僅要具備過硬的技術能力和豐富的項目經驗。

最重要的是你的簡歷必須要有足夠的含金量,能經得起 HR 的篩選,否則你連面試機會都沒有,又怎麼能用實力征服面試官呢?

高端碼農簡歷

我們來看看一份高端碼農的簡歷,這個簡歷寫得相當漂亮,漂亮的讓人一看就想約。

簡歷的重要性:

  • 第一:整理簡歷的過程,其實是一次覆盤總結。在這過程中,我們會知道自己哪些地方做得好的,哪些做得不好的,這樣才能針對性地進行復習。

  • 第二:挺多人,簡歷寫不好,在篩選簡歷的時候,直接被 Pass,連面試的機會都沒有,這是很可惜的。

  • 第三:簡歷寫不好,沒突出重點,面試官很難從短短的一個小時之內,發現你的亮點,空有一身才華,卻得不到展現,多可惜呀。

下面,就讓我們一起來聊一聊,對於技術人來說,怎樣纔算是一份好的簡歷?

突出優勢:

簡歷基本主要分爲四個部分:

1.個人的基本信息
2.自己過往的一個履歷
3.說明自己個人技能
4.自己做過的一些優秀項目經歷

HR、面試官在篩選簡歷的時候,一般不會超過一分鐘,如果想自己的簡歷在60秒鐘內脫穎而出,簡歷中要有突出自己的亮點優勢,讓人耳目一新,彰顯你自己的才能。

對於開發者們來說,個人技能亮點,可以從一下幾個方面着手,比如:

1.解決了什麼疑難雜症,如解決了 top crash, crash 率降低了 0.1% 等
2.性能上面帶來了多少提升,如編譯速度的提升,提升了多少,降低了多少 min等
3.你在這個項目作出了什麼成績,比如主導搭建了代碼掃描框架,自動掃描,提高代碼質量,減少 review 成本。

千里馬常有,而伯樂不常有。一定要重視簡歷,讓簡歷能夠反映你的真實水平,先不說做到錦上添花,至少不要拖後腿。

展現自己的個人技能:

個人技能這塊,也是簡歷中必不可少的一部分。

第一,先說最重要的一點,按照掌握的程度分爲幾個等級,精通,熟悉,掌握,瞭解,強烈建議不要寫精通,道理你懂的。

第二:不熟悉的點不要寫到簡歷上面,否則就是給自己挖坑。

比如,你只是使用了網絡庫 OkHttp,你在簡歷上面寫熟悉/掌握 Okhttp。恭喜你,兄弟,你給自己埋下了一顆定時炸彈。面試官可能會問你各種原理的,Okhttp 的設計原理是怎樣,攔截器是怎樣設計的,有什麼優缺點,連接池等等?

第三:技能要具體,突出重點,讓面試官有話可問。

  • 反例:
    熟悉 Java

  • 正例:
    熟悉類加載,並使用類加載技術開發了一個模塊化框架

面試其實是一個雙向的選擇過程,簡歷上面技能寫得具體,面試官看到了,可能會往這個方面提問題,這是非常 nice 的,我們恰好可以展現自己的特長。

相反,如果簡歷上面寫得不具體,面試官找不出想問的點,那可能就會往他/她擅長的方面問,這時候,對於求職者來說,是非常喫虧的。

因爲每個人都有擅長和不擅長的技能,不可能面面俱到。

第四,寫的技能一定要跟你應聘的崗位相關,不相關的不要寫上去。

比如,你應聘的是 Android 開發工程師,你在簡歷上面寫一堆後端技能。匹配度不高,簡歷可能會 pass。

當然,也不是不可以寫與應聘崗位不相關的技能,只是說簡歷要跟我們應聘的崗位匹配度高一點。這樣,簡歷篩選通過的機率比較高。

最後,專有名詞一定要寫對,這體現一個人的專業素養和細心。比如 Java,不要寫成 java,Android 不要寫成 android。

以項目爲主體,展現自己的技術能力和項目貢獻

我們可以從以下思路,以項目爲主體,設計我們的簡歷。如圖,大概分爲以下層級:

  • 項目名稱,開始時間和結束時間,在項目中擔任的角色
  • 項目簡介,說清楚這個項目主要是做什麼的,有多少量級,儘量不要超過一行,切忌不要超過兩行
  • 項目職責,個人的建議,主要分爲兩大塊,一個是技術職責,一個是業務職責。這樣面試官能夠很清楚的知道,你在項目中做了什麼。

項目職責,這一塊是最重要的,也是展現我們能力的時候,尤其要重視。

在寫一塊的時候,建議分點論述,這樣顯得調理清晰。

  • 比如你解決了項目的什麼疑難雜症,帶來了什麼收益。這塊在面試當中也經常被問到,項目中你有遇到什麼技術難點嘛,是怎麼解決的?這塊回答好了,可以給我們的面試加很多分
  • 做了什麼性能優化?這塊可以有很多,根據自己擅長的領域和項目經歷加上去即可。比如啓動優化,編譯速度優化,APK 瘦身等
  • 你在這個項目中作出了什麼成績?這塊要結合我們項目中的情況來說,比如你推動了 MVVM 框架,組件化的落地等

簡歷注意事項

寫簡歷,有一些新手會經常犯一些錯誤,下面簡單列舉一下:

  • 簡歷要用 PDF 格式,不要用 Word 格式,有兼容性問題,可能會亂碼
  • 簡歷命名,建議已這樣的格式命名,暱稱-應聘崗位-聯繫方式,這樣可以一目瞭然
  • 簡歷不要太長,儘量控制在兩頁之內。主要重點介紹你最近做過的項目或者你覺得自己做得比較好的項目
  • 不要在簡歷中寫之前的待遇和期望待遇。
  • 如果平時有寫博客,可以將博客地址寫在簡歷上面,這是一個加分項。不過,如果你的博客上面只是單純記流水賬,就不要寫上去了,反而容易減分。Github 也是同樣的道理。

暫時就想起這麼多了,以後記得再補充,對了,我整理了一份簡歷模板,想獲取的話,可以點這裏可以看到全部內容。或者點擊 【這裏】 查看獲取方式。

最後:一個優秀的Android開發者,一定有紮實的基礎!

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