Android面經分享,失業兩個月,五一節前拿到Offer,年薪25W!

作者 | 天天有道

基本介紹

今天介紹一位朋友的經歷:

從3月初開始複習,準備面試題。複習的資料主要爲《Android開發核心知識點筆記》和各個大佬的博客,還有就是網上的其他博客資料。

《Android開發核心知識點筆記》

首先介紹一下自己基本情況:渣本畢業快4年,一直在小廠摸魚混日子,學歷和簡歷背景不是很好看,所以面試邀約也不是很多,面試也到處碰壁。從3月中旬開始面試,一直到4月底。共面試9家公司,近20輪面試,拿到2個小公司和1個上市公司(不是出名的公司)的offer,最後準備去上市公司了。也投遞了BAT、360、抖音、快手、平安等大廠的崗位,不過大部分沒給面試機會,少數大廠在後續面試中也把我拒絕了,原因是:基礎知識不夠紮實,技術深度不夠……

面試分享

每輪面試都會有自我介紹,所以在面試前大家可以先準備一段自我介紹,向面試官介紹自己的基本情況。我這裏只分享Android技術面試題(以每個公司爲分類,將幾輪面試題綜合起來),面試官會在每個面試題繼續深入,一直問到你不會爲止。

至於面試題答案,我已經做了整理,但由於篇幅原因就沒有貼上來,有需要的朋友們可以在文末領取。

在面試過程中儘可能回答完整(深度、廣度、擴展),這樣才能在面試官面前加分。建議大家找工作開始面試前,先找幾家小公司找點面試感覺,然後再投自己期望的公司。

《對標阿里P7、騰訊T3,50W+年薪Android高級工程師技能成長路線》

接下來是面試題:

公司一

  1. 組件化和arouter原理
  2. recyclerview和listview區別
  3. glide流程,緩存前壓縮,緩存命中
  4. APP性能優化,內存優化,佈局優化,繪製優化,內存泄漏
  5. Http和Https區別
  6. socket心跳包
  7. jvm虛擬機,堆和棧的結構
  8. activity啓動模式,有哪些不同
  9. stack棧的特點,自定義stack結構
  10. kotlin優劣勢

公司二

  1. 自定義view,中英文字符串寬高測量顯示,測量算法,可擴展性
  2. 事件分發機制
  3. Activity,view,window聯繫
  4. 熱修復和插件化原理
  5. Synchronized底層原理,java鎖機制
  6. java容器,hashmap和hashtable區別,hashmap原理,擴容流程,擾動算法的優勢
  7. ArrayList和LinkendList區別,List泛型擦除,爲什麼反射能夠在ArrayList< String >中添加int類型
  8. Http和Https區別,SSL/TLS過程
  9. Android性能優化
  10. jvm虛擬機,堆和棧的結構,棧幀,JMM
  11. 組件化注意點,組件間通信機制
  12. 線程安全的單例模式有哪幾種
  13. 熟悉的設計模式

公司三

  1. MVC,MVP,MVVM
  2. Activity和fragment生命週期區別,fragment正常添加和viewpager添加的區別,fragment懶加載原理,FragmentPagerAdapter 和 FragmentStatePagerAdapter
  3. 熱修復和插件化
  4. 友盟bug統計,混淆後怎麼定位bug。沒接入熱修復的APP中,上線後遇到bug怎麼解決
  5. view繪製原理 (可以先說下基本view繪製,然後再說下屏幕刷新機制)
  6. 使用Analyze減少APK體積,原理
  7. Android 版本差異

公司四

  1. 基礎類型字節,漢字佔幾個字節,線程和進程
  2. 四大組件,fileprovider和Contentprovide區別,activity啓動流程
  3. MVC,MVP,MVVM
  4. TCP三次握手,四次揮手
  5. Eventbus,glide原理
  6. 性能優化,內存抖動,內存泄漏,內存溢出,handler機制,IntentService和handlerThread,子線程更新view內容的方法
  7. GC回收算法
  8. recyclerview和listview區別
  9. 組件化,模塊化,插件化,熱修復
  10. 工作中遇到的難題怎麼解決的
  11. Kotlin Java優缺點,kotlin什麼時候用分號,run,with,apply,內聯函數,高階函數
  12. APK體積優化
  13. 進程間通信
  14. 單例模式,哪些是安全的
  15. retrofit設計模式
  16. 自定義view
  17. 是否做過音視頻和IM?
  18. APK性能優化
  19. CurrentHashMap1.7和1.8區別
  20. volatile關鍵字的作用,怎麼保證原子性呢?
  21. 網絡優化
  22. 對新技術的看法
  23. java泛型,協變和逆變

公司五

  1. HTTPS具體步驟
  2. 常用的設計模式,代理模式和裝飾者模式區別
  3. 服務端返回錯誤的json數據,客戶端怎麼自定義model,避免出錯
  4. Hook技術
  5. kotlin瞭解,協程
  6. 屏幕適配
  7. 抓包工具使用和原理
  8. 網絡優化
  9. 未來期望,對公司的瞭解
  10. Okhttp,rxjava,glide,retrofit等原理,okhttp底層數據傳輸原理,http報文體結構
  11. APK體積優化
  12. Android jetpack使用和原理,新技術看法
  13. crashHandler獲取應用crash信息
  14. recyclerview和listview緩存區別
  15. Android 常見崩潰問題分析及一般的解決方案
  16. NestedScrollView觸摸機制,AOP相關知識
  17. 設計APP,整體架構選型
  18. Android沙盒和底層Linux通信
  19. ACTION_CANCLE什麼時候觸發
  20. 線程池原理

公司六

  1. 組件化,arouter,組件化UI,還有哪些路由框架。AS調試方法
  2. MVC,MVP,MVVM,Jetpack
  3. JVM,JMM,java加載對象的步驟,classLoader,GC回收算法
  4. 插件化和熱修復
  5. 唯一安卓ID,安卓安全的知識,加密算法,判斷activity前臺進程
  6. TCP三次握手和四次揮手
  7. hash算法,hashmap,怎麼解決hash衝突
  8. 加載大圖,glide緩存機制,設計模式,雙重檢測的單例模式爲什麼要檢查兩次,自己設計圖片加載框架思路
  9. 啓動未註冊的Activity
  10. AOP,藍牙開發,IOT
  11. glide緩存清除:lrucache算法
  12. glide緩存文件太大,查找效率慢怎麼優化?glide下載高清圖片優化
  13. 最近研究的技術,遇到最難的事,對公司的期望

公司七

  1. 組件化, arouter優缺點
  2. MVC,MVP,MVVM
  3. 項目中的亮點,對架構的理解
  4. handler原理及相關知識點,message回收策略
  5. hashmap原理,arraymap原理,對比性能。
  6. hashmap爲什麼大於8才轉化爲紅黑樹,加載因子爲什麼是0.75
  7. Synchronized底層原理,java鎖機制
  8. 服務和廣播
  9. activity啓動模式(給例子具體分析,A(標準)-》B(單例)-》C(singleTop)-》D(singleTask),分析有幾個棧,每個棧內的activity)
  10. 常用設計模式,線程安全的單例模式

公司八

  1. static、final;繼承與多態
  2. 組件化, arouter優缺點
  3. context相關知識點
  4. handler原理及相關知識點,handler緩存池大小。
  5. 性能優化,啓動速度優化,架構
  6. java虛擬機與Dalvik和ART區別
  7. Kotlin協程,擴展函數和屬性以及伴生對象
  8. 電商APP的首頁,怎麼設計一個APP架構
  9. MVP中數據請求爲什麼要和M一起,答:網絡請求和javabean都是數據模型相關
  10. Glide的存儲EngineKey是怎麼保證唯一的。面試官答:有個隊列會將EngineKey存儲起來,每次生成後進行對比存儲。這個我在源碼中沒找對位置,如果知道的同學,麻煩幫忙解釋下。
  11. retrofit是怎麼將service接口轉化爲我們需要的javabean的?
  12. 怎麼做管理,新技術學習

公司九

  1. SqLite與contentProvider區別
  2. fragment週期,兩個fragment切換週期變化,fragment通信
  3. https證書校驗,加密相關,網絡請求框架
  4. glide加載流程,大圖顯示,圖片大小計算
  5. view繪製(從onSync()開始)
  6. 線程內存模型,線程間通信
  7. 獲取view的寬高,更新view的方式,主線程消息機制
  8. OOM,內存泄漏,內存溢出,java引用類型,ANR分析
  9. APP性能優化,webview相關,webview優化,webview中Android與js互調
  10. 插件化和熱修復

總結

最後也是感覺運氣不錯,拿下Offer,一線城市,年薪是25W,自己已經非常滿意了。

關於簡歷方面,簡歷上寫的東西,一定要先搞懂,特別是簡歷上的專業技能。這次面試收到的最多反饋就是:基礎知識不夠紮實,技術深度不夠。

現在Android開發大部分需要懂點C++和Linux知識,大廠也需要刷算法面試題,在後面的學習過程中,我也會從以上幾個方面着手。當然也必須把基礎知識學牢固,技術深度搞深入點。

關於我的複習資料,就是下面圖中這些了

如果你有需要的話,可以點擊Android學習PDF+架構視頻+面試文檔+源碼筆記獲取免費領取方式

最後祝大家都能拿到心儀的offer!

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