1. 程式人生 > 其它 >2022最新版《Android高階開發面試題大全》開源分享

2022最新版《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高階開發面試題以及答案整理

下面就是這份足足1296頁的“Android高階開發面試題”,涵蓋了BAT一線大廠高頻出現的大部分面試題。

獲取方式

2022最新版《Android高階開發面試題以及答案整理》免費分享,需要的朋友可以【點選這裡直達免費獲取方式

Handler相關知識

  • Handler Looper Message關係是什麼?
  • Messagequeue 的資料結構是什麼?為什麼要用這個資料結構?
  • 如何在子執行緒中建立Handler?
  • Handler post方法原理?
  • Android訊息機制的原理及原始碼解析
  • Handler 都沒搞懂,拿什麼去跳槽啊?
  • Android Handler訊息機制(解惑篇)
  • Android訊息機制
  • Handler 引起的記憶體洩露原因以及最佳解決方案
  • 為什麼我們能在主執行緒直接使用Handler,而不需要建立Looper ?
  • 主執行緒的Looper 不允許退出
  • Handler 裡藏著的Callback 能幹什麼?
  • 建立Message 例項的最佳方式
  • 子執行緒裡彈Toast 的正確姿勢3.7妙用Looper機制
  • ..........

Activity 相關

  • 啟動模式以及使用場景?
  • onNewIntent()和 onConfigurationChanged()
  • onSaveInstanceState()和 onRestoreInstanceState()
  • Activity 到底是如何啟動的
  • Activity 到底是如何啟動的
  • zygote是什麼?有什麼作用?
  • SystemServer是什麼?有什麼作用?
  • 它與zygote的關係是什麼?
  • ActivityManagerService是什麼?什麼時候初始化的?有什麼作用?
  • Launcher是什麼?什麼時候啟動的?
  • lnstrumentation是什麼?和ActivityThread是什麼關係?
  • 如何理解AMS和ActivityThread之間的Binder通訊?
  • AMS接收到客戶端的請求之後,會如何開啟一個Activity?
  • .........

Fragment、Service相關

  • Fragment生命週期和Activity對比
  • Fragment 之間如何進行通訊
  • Fragment的startActivityForResult
  • Android Fragment完全解析,關於碎片你所需知道的一切
  • Fragment重疊,如何通訊
  • Fragment回退棧管理
  • Fragment與Activity通訊
  • Fragment重疊問題

2022最新版《Android高階開發面試題以及答案整理》免費分享,需要的朋友可以【點選這裡直達免費獲取方式
Fragment與ActionBar和Menultem

  • 沒有佈局的Fragment—儲存大量資料
  • DialogFragment的使用
  • Fragment的startActivityForResult
  • FragmentPagerAdapter與FragmentStatePagerAdapter的區
  • Fragmenti間的資料傳遞
  • Activity與Fragment生命週期探討
  • Activity注意事項
  • Fragment生命週期探討Fragment注意事項
  • Service程序保活
  • Service的執行執行緒(生命週期方法全部在主執行緒)
  • Service啟動方式以及如何停止
  • ServiceConnection裡面的回撥方法執行在哪個執行緒?
  • Android程序保活的一般套路
  • 關於Android程序保活,你所知道的一切
  • 保活手段;黑色保活;白色保活;灰色保活;嘮叨的分割線
  • 程序回收機制
  • ..........

Android佈局優化之ViewStub.include.merge

  • 什麼情況下使用ViewStub.include.merge?
  • 他們的原理是什麼?
  • 佈局優化神器include . merge. ViewStub標籤詳解
  • Android佈局優化之ViewStub、include.merge使用與原始碼分析

BroadcastReceiver相關

  • 註冊方式,優先順序
  • 廣播型別,區別
  • 廣播的使用場景,原理
  • Android 廣播Broadcast的兩種註冊方式以及比較
  • Android四大元件: BroadcastReceiver全面解析定義、作用、應用場景、實現原理、使用流程
  • 自定義廣播接收者BroadcastReceiver
  • 廣播接收器註冊
  • 靜態註冊5.2.2動態註冊
  • 兩種註冊方式的區別
  • 廣播發送者向AMS傳送廣播
  • 廣播的傳送、型別

AsyncTask 相關

  • AsyncTask 是序列還是並行執行?
  • AsyncTask 的基本用法
  • 分析 AsyncTask 的原始碼
  • 使用 AsyncTask 的規則
    ..........
  • Android 事件分發機制
  • Android View 繪製流程
  • Android Window、Activity、 DecorView 以及 ViewRoot
  • Android 的核心 Binder 多進 程 AIDL
  • Android 高階必備 : AMS,WMS,PMS
  • Android ANR
  • Android記憶體相關
  • Android螢幕適配
  • Android快取機制
  • Android 效能優化
  • Android MVC.MVP、MVVM
  • Android Gradle知識
  • RxJava
  • OKHTTP和Retrofit
  • 圖片載入庫:Glide
  • Framework相關面試題解析

最後

我想,可能還有很多人在今年的金三銀四春招中保持著觀望的形勢,害怕自己的能力不夠,或者是安於現狀,覺得目前拿著目前的月薪覺得能夠接受,那麼你就要注意了,這是非常危險的!

如果你想在未來能夠自我突破,圓夢大廠,那或許以上這份2022最新版《Android高階開發面試題以及答案整理》也許能幫上你,需要的朋友可以【點選這裡直達免費獲取方式