Android面試|任何東西只要夠深,都是一把刀!性能優化都沒搞好就別想着去找對象了

前言

標題無能,請各位看官放下你們的屠刀,扎心的往下看,看到情不自禁處請手下留情。

5-7年工作經驗的候選人在性能優化這一塊必須要會的東西,超長乾貨警告!!!

引言

您瞧清楚了,我是互聯網公司技術開發一枚,渴了喝咖啡,餓了喫外賣,暈了上醫院的那種。房貸沒還清,車子自己買,人家休假我加班。還有最重要的是,我是一條單身狗。不要想着單身貴族這種身份,你爸和你媽的一巴掌就能讓你認清現實。

我要講的故事就四字:性能優化

我知道,此時此刻看到這裏的朋友一定會掌心出汗、眉頭緊鎖,用一種帶着危險的眼神死盯着手機屏幕。來吧,我不怕。性能優化都沒搞好,還想着去找對象?

那些年我遇到的性能優化面試題

面試官:

  • 圖片的三級緩存中,圖片加載到內存中,如果內存快爆了,會發生什麼?怎麼處理?
  • 內存中如果加載一張 500*500 的 png 高清圖片。應該是佔用多少的內存?
  • WebView 的性能優化?
  • Bitmap 如何處理大圖,如一張 30M 的大圖,如何預防 OOM?
  • 內存回收機制與 GC 算法 (各種算法的優缺點以及應用場景);GC 原理時機以及 GC 對象?
  • 內存泄露和內存溢出的區別 ?AS 有什麼工具可以檢測內存泄露
  • 性能優化,怎麼保證應用啓動不卡頓?黑白屏怎麼處理?
  • 強引用置爲 null,會不會被回收?
  • ListView 跟 RecyclerView 的區別
  • ListView 的 adapter 是什麼 adapter?
  • 卡頓、ANR、死鎖,線上如何監控?
  • .......

以前面試幾乎都是靠面試官抽一鞭子然後我回答一哆嗦。 回答性能優化方面的問題,也基本上是那老四樣。 可問題就在於,這些答案換個人來也能說。說白了,你說出去的東西並不是真正屬於你的東西。 然後,職位崗位略高一點,你就沒機會了。

小結一下

最近參加了幾輪面試,發現很多5-7年工作經驗的候選人在性能優化這一塊,基本上只能說出傳統的分析方式,「例如ANR分析,是通過查看/data/anr/ 下的log,分析主線程堆棧、cpu、鎖信息等」

然而,這種方法有一定的侷限性,並不是每次都奏效,很多時候是沒有堆棧信息給你分析的,例如有些高版本設備需要root權限才能訪問/data/anr/ 目錄,或者是線上用戶的反饋,只有一張ANR的截圖加上一句話描述。

假如你的App沒有實現ANR監控上報,那麼你大概率會把這個問題當成“未復現”處理掉,而沒有真正解決問題。

於是我整理了這一篇文章,主要關於性能優化各方面的詳細攻略。

掌握性能優化的重要性

在這個網絡都追求5G的時代,“卡”這個體驗顯然成爲了一個極其拉低印象分的問題。

所以,在 Android開發中,性能優化策略十分重要,他決定了應用程序的開發質量,包括可用性、流暢性、穩定性等,是提高用戶留存率的關鍵

所以,不只是阿里,還有騰訊、字節跳動、愛奇藝等,都非常重視這個問題,在面試中,如果這個方向表現優異,你將會很值錢

本文針對“性能優化”這個要點,獻上一份 《Android性能優化的詳細攻略》,從各個方面對目標產品進行全方位的“優化”,讓產品的性能從各個方面得到提升,希望大家喜歡。

App性能優化要點大綱

性能優化知識技能策略詳解

性能優化這個點的知識要想講明白篇幅會比較長,鑑於篇幅原因,我這裏直接把詳解部分整理成了一份PDF。

這份《超全App性能優化知識技能手冊》一共有721頁,4個大點,25個小章節,不僅僅有詳細的底層原理的解析,還有專門的實踐案例

有需要的朋友,點擊 【這裏】 查看獲取方式~

第一章 設計思想與代碼質量優化

  • 六大原則
    單一職責原則
    里氏替換原則
    依賴倒轉原則
    接口隔離原則
    ……
  • 設計模式:結構型模式
    橋接模式
    適配器模式
    裝飾器模式
    代理模式
    門面(外觀)模式
    ……
  • 設計模式:創建型模式
    建造者模式
    單例模式
    抽象工廠模式
    工廠方法模式
    ……
  • 數據結構

    隊列
    鏈表

    ……
  • 算法
    排序算法
    查找算法
    ……

第二章 程序性能優化

  • 啓動速度與執行效率優化
    冷啓動和熱啓動解析
    APP 啓動黑白屏解決辦法
    APP 卡頓問題分析及解決方案
    啓動速度與執行效率優化之 StrictMode
    ……
  • 佈局檢測與優化
    佈局層級優化
    過度渲染
    ……
  • 內存優化
    內存抖動和內存泄漏
    內存大戶
    Bitmap 內存優化
    Profile 內存監測工具
    Mat 大對象與泄漏檢測
    耗電優化
    網絡傳輸與數據存儲優化網絡傳輸與數據存儲優化
    APK 大小優化
    屏幕適配
    ……
  • 耗電優化
    Doze&Standby
    Battery Historian
    JobScheduler
    WorkManager
  • 網絡傳輸與數據存儲優化
    google 序列化工具 protobuf
    7z 極限壓縮
    ……
  • APK 大小優化
    APK 瘦身
    微信資源混淆原理
    ……
  • 屏幕適配
    進行適配的原理
    屏幕分辨率限定符與 smallestWidth 限定符適配原理
    爲什麼選擇 smallestWidth 限定符適配
    怎麼適配其他 module
    常見問題處理
    ……
  • OOM 問題原理解析
    adj 內存管理機制
    JVM 內存回收機制與 GC 算法解析
    生命週期相關問題總結
    Bitmap 壓縮方案總結
    ……
  • ANR 問題解析
    AMS 系統時間調節原理
    程序等待原理分析
    ANR 問題解決方案
    ……
  • Crash 監控方案
    Java 層監控方案
    Nativie 層監控方案
    ……

第三章 開發效率優化

  • 分佈式版本控制系統 Git
    企業高效持續集成平臺場景介紹
    GIT 分佈式版本控制系統
    GIT 分支管理
    ……
  • 自動化構建系統 Gradle
    Gradle 與 Android 插件
    gradle 與 android gradle 插件的關係
    Gradle Transform API 的基本使用
    ……
  • Gradle Transform API 的基本使用
    什麼是 Transform
    Transform 的使用場景
    Transform API 學習
    輸入的類型
    ……
  • 自定義插件開發
    Gradle 插件簡介
    開始準備
    實踐
    自定義 Gradle 插件
    buildSrc 模塊方式
    ……
  • 插件實戰
    多渠道打包
    發版自動釘釘
    ……

第四章 APP 性能優化實踐

  • 啓動速度
    應用啓動的一般流程
    冷啓動和熱啓動
    啓動速度的測量
    啓動窗口優化
    線程優化
    系統調度優化
    GC 優化
    IO 優化
    資源重排
    主頁佈局優化
    類加載優化
    選擇合適的啓動框架
    減少 Activity 的跳轉層次
    廠商優化
    後臺保活
    ……
  • 流暢度
    性能問題分析的一些工具和套路
    通過性能數據數據分析
    Android 平臺性能導致的性能案例
    Android App 自身導致的性能問題
    低內存的數據特徵和行爲特徵
    應用寶
    訊飛輸入法無障礙服務導致的整機卡頓分析
    字節跳動:今日頭條圖文詳情頁秒開實踐
    ……
  • 抖音在 APK 包大小資源優化的實踐
    圖片壓縮
    webp 無侵入式兼容
    多 DPI 優化
    重複資源合併
    shrinkResource 嚴格模式
    資源混淆(兼容 aab 模式)
    ARSC 瘦身
    ……
  • 優酷響應式佈局技術全解析
    優酷APP響應式佈局技術概述
    優酷APP響應式佈局Android落地
    在分發場景的落地
    在消費場景的落地
    優酷APP響應式佈局之測試方案
    ……
  • 網絡優化
    手機淘寶在網絡的鏈路優化
    百度 APP 在網絡深度優化的實踐
    ……
  • 手機淘寶雙十一性能優化項目揭祕
  • 一秒法則的實現
    啓動時間和頁面幀率提升 20%
    Android 手機內存節省50%
    ……
  • 高德 APP 全鏈路源碼依賴分析
    高德 APP 平臺架構
    基礎實現原理
    項目架
  • 應用場景及實現原理
    ……
  • 徹底幹掉OOM的實戰經驗分享
    排查內存泄漏
    兜底策略
    內存峯值太高
    特大圖排查優化
    ……
  • 微信 Android終端內存優化實踐
    Activity 泄露檢測
    Bitmap 分配及回收追蹤
    Native 內存泄漏檢測
    線程監控
    內存監控
    ……

如果你也想提升自己移動開發的性能優化技術,或者是正在準備移動開發崗的面試,我覺得這份筆記你必定不能錯過。

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

最後

面試官是喜歡問你對性能優化做了什麼事情,但面試官更想知道你做到了而別人沒做到的事情。老四樣的旁邊就寫着適用於怎樣的場景,而我卻視而不見。人家指着那你都看不懂,聽到想聽簡單的就暗自竊喜,你真當面試官傻呢?

所以,請相信,“相親”從第一面就開始交鋒了。先輸了的那個往往就失去了主動權。如果你自嗨了,那你就失去了足夠敏銳的觀察力。人性都一樣,對喜歡的東西容易不設防,對不喜歡的東西會倍加警惕。

最後,任何東西只要夠深,都是一把刀, 性能優化也不例外。

(祝,君一切安好。)

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