android音視頻開發面試!成功入職網易月薪35K,2021最新版!


前言

本來已經在為去大廠工作摩拳擦掌的Android開發者們,今年顯得格外艱難:

  • 待就業數高達874萬!人才競爭加劇!
  • 疫情讓大多數公司的招聘需求縮減!人才招聘要求愈來愈高!

別說offer,現在出門零活都難難難.....

“之前的工作,我得到了啥?”

“除了不斷稀疏的頭發,和越來越重的黑眼圈,還有啥?”

Android篇

Activity

  • 說下Activity生命周期 ?
  • Activity A 啟動另一個Activity B 會調用哪些方法?如果B是透明主題的又或則是個DialogActivity呢 ?
  • 說下onSaveInstanceState()方法的作用 ? 何時會被調用?
  • 說下 Activity的四種啟動模式、應用場景 ?
  • 了解哪些Activity常用的標記位Flags?
  • 說下 Activity跟window,view之間的關系?
  • 橫豎屏切換的Activity生命周期變化?
  • 如何啟動其他應用的Activity?
  • Activity的啟動過程?(重點)

Fragment

  • 談一談Fragment的生命周期 ?與Activity生命周期的不同 ?
  • 談談Activity和Fragment的區別?
  • Fragment中add與replace的區別(Fragment重疊)
  • getFragmentManager、getSupportFragmentManager 、getChildFragmentManager之間的區別?
  • FragmentPagerAdapter與FragmentStatePagerAdapter的區別與使用場景

Service

  • 談一談Service的生命周期?
  • Service的兩種啟動方式?區別在哪?
  • 如何保證Service不被殺死 ?
  • 能否在Service開啟耗時操作 ? 怎么做 ?
  • 用過哪些系統Service ?
  • 了解ActivityManagerService嗎?發揮什么作用(重點)

Broadcast Receiver

  • 廣播有幾種形式 ? 都有什么特點 ?
  • 廣播的兩種注冊方式 ?
  • 廣播發送和接收的原理了解嗎 ?(Binder機制、AMS)

ContentProvider

  • ContentProvider了解多少?
  • ContentProvider的權限管理?
  • 說說ContentProvider、ContentResolver、ContentObserver 之間的關系?

數據存儲

  • 描述一下Android數據持久存儲方式?
  • SharedPreferences的應用場景?注意事項?
  • SharedPrefrences的apply和commit有什么區別?
  • 了解SQLite中的事務操作嗎?是如何做的
  • 使用SQLite做批量操作有什么好的方法嗎?
  • 如何刪除SQLite中表的個別字段?
  • 使用SQLite時會有哪些優化操作?

IPC(重點)

  • Android中進程和線程的關系? 區別?
  • 如何開啟多進程 ? 應用是否可以開啟N個進程 ?
  • 為何需要IPC?多進程通信可能會出現的問題?
  • Android中IPC方式、各種方式優缺點,為什么選擇Binder?
  • Binder機制的作用和原理?
  • Binder框架中ServiceManager的作用?
  • Bundle傳遞對象為什么需要序列化?Serialzable和Parcelable的區別?
  • 講講AIDL?原理是什么?如何優化多模塊都使用AIDL的情況?

View

  • 講下View的繪制流程?
  • MotionEvent是什么?包含幾種事件?什么條件下會產生?
  • 描述一下View事件傳遞分發機制?
  • 如何解決View的事件沖突 ? 舉個開發中遇到的例子 ?
  • scrollTo()和scollBy()的區別?
  • Scroller是怎么實現View的彈性滑動?
  • invalidate()和postInvalidate()的區別 ?
  • SurfaceView和View的區別?
  • 自定義View如何考慮機型適配 ?

Handler

  • 談談消息機制Handler ? 作用 ?有哪些要素 ?流程是怎樣的 ?
  • 一個線程能否創建多個Handler,Handler跟Looper之間的對應關系 ?
  • 軟引用跟弱引用的區別
  • Handler 引起的內存泄露原因以及最佳解決方案
  • 為什么系統不建議在子線程訪問UI
  • Looper死循環為什么不會導致應用卡死
  • 使用Handler的postDealy后消息隊列會有什么變化 ?
  • 可以在子線程直接new一個Handler嗎 ?怎么做 ?
  • Message可以如何創建 ? 哪種效果更好 ? 為什么 ?

線程(重點)

  • 線程池的好處? 線程池的幾個參數的理解,四種線程池的使用場景
  • Android中還了解哪些方便線程切換的類?
  • 講講AsyncTask的原理
  • IntentService有什么用 ?
  • 直接在Activity中創建一個thread跟在service中創建一個thread之間的區別
  • ThreadPoolExecutor的工作策略 ?
  • Handler、Thread和HandlerThread的差別?
  • ThreadLocal的原理
  • 多線程是否一定會高效(優缺點)
  • 多線程中,讓你做一個單例,你會怎么做
  • 除了notify還有什么方式可以喚醒線程
  • 什么是ANR ? 什么情況會出現ANR ?如何避免 ? 在不看代碼的情況下如何快速定位出現ANR問題所在 ?

Bitmap

  • Bitmap使用需要注意哪些問題 ?
  • Bitmap.recycle()會立即回收么?什么時候會回收?如果沒有地方使用這個Bitmap,為什么垃圾回收不會直接回收?
  • 一張Bitmap所占內存以及內存占用的計算
  • Android中緩存更新策略 ?
  • LRU的原理 ?

性能優化(重點)

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

JNI

  • 對JNI是否了解
  • 如何加載NDK庫 ?如何在JNI中注冊Native函數,有幾種注冊方法 ?
  • 你用JNI來實現過什么功能 ? 怎么實現的 ?(加密處理、影音方面、圖形圖像處理)

設計模式

  • 你所知道的設計模式有哪些?
  • 談談MVC、MVP和MVVM,好在哪里,不好在哪里 ?
  • 封裝p層之后.如果p層數據過大,如何解決
  • 是否能從Android中舉幾個例子說說用到了什么設計模式 ?
  • 裝飾模式和代理模式有哪些區別 ?
  • 實現單例模式有幾種方法 ?懶漢式中雙層鎖的目的是什么 ?兩次判空的目的又是什么?
  • 用到的一些開源框架,介紹一個看過源碼的,內部實現過程。
  • Fragment如果在Adapter中使用應該如何解耦?

Android進階延伸點

  • 如何進行單元測試,如何保證App穩定
  • Android中如何查看一個對象的回收情況
  • APK的大小如何壓縮 ?
  • 如何通過Gradle配置多渠道包?
  • 插件化原理分析
  • 組建化原理
  • 跨組件通信
  • 組件化中路由、埋點的實現
  • Hook以及插樁技術
  • Android的簽名機制
  • v3簽名key和v2還有v1有什么區別
  • Android5.0~10.0之間大的變化 ?
  • 說下Measurepec這個類
  • 請例舉Android中常用布局類型,並簡述其用法以及排版效率
  • 區別Animation和Animator的用法,概述其原理
  • 使用過什么圖片加載庫 ?Glide的源碼設計哪里很微妙 ?
  • 如何繞過9.0限制?
  • 用過哪些網絡加載庫 ?OkHttp、Retrofit實現原理 ?
  • 對於應用更新這塊是如何做的 ? (灰度,強制更新、分區域更新)
  • 會用Kotlin、Fultter嗎 ? 談談你的理解

如果你進階的路上缺乏方向,可以點擊我的【Gitee】加入我們的圈子和安卓開發者們一起學習交流!
以下全部內容都可以在GitHub中獲取!

  • Android進階學習全套手冊

    img

  • Android對標阿里P7學習視頻

    img

  • BATJ大廠Android高頻面試題

    img

最后,借用我最喜歡的喬布斯語錄,作為本文的結尾:

人這一輩子沒法做太多的事情,所以每一件都要做得精彩絕倫。
你的時間有限,所以不要為別人而活。不要被教條所限,不要活在別人的觀念里。不要讓別人的意見左右自己內心的聲音。
最重要的是,勇敢的去追隨自己的心靈和直覺,只有自己的心靈和直覺才知道你自己的真實想法,其他一切都是次要。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM