組件化與插件化的差別在哪裏,膜拜大佬

Mysql高並發 2021-09-19 09:53:50 阅读数:468

插件 在哪 膜拜 大佬

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嗎 ?談談你的理解

答篇

1、說下Activity生命周期 ?

  • 參考解答:在正常情况下,Activity的常用生命周期就只有如下7個

  • onCreate():錶示Activity正在被創建,常用來初始化工作,比如調用setContentView加載界面布局資源,初始化Activity所需數據等;

  • onRestart():錶示Activity正在重新啟動,一般情况下,當前Acitivty從不可見重新變為可見時,OnRestart就會被調用;

  • onStart():錶示Activity正在被啟動,此時Activity可見但不在前臺,還處於後臺,無法與用戶交互;

  • onResume():錶示Activity獲得焦點,此時Activity可見且在前臺並開始活動,這是與onStart的區別所在;

  • onPause():錶示Activity正在停止,此時可做一些存儲數據、停止動畫等工作,但是不能太耗時,因為這會影響到新Activity的顯示,onPause必須先執行完,新Activity的onResume才會執行;

  • onStop():錶示Activity即將停止,可以做一些稍微重量級的回收工作,比如注銷廣播接收器、關閉網絡連接等,同樣不能太耗時;

  • onDestroy():錶示Activity即將被銷毀,這是Activity生命周期中的最後一個回調,常做回收工作、資源釋放;

  • 延伸:從整個生命周期來看,onCreate和onDestroy是配對的,分別標識著Activity的創建和銷毀,並且只可能有一次調用;

  • 從Activity是否可見來說,onStart和onStop是配對的,這兩個方法可能被調用多次;

  • 從Activity是否在前臺來說,onResume和onPause是配對的,這兩個方法可能被調用多次;

  • 除了這種區別,在實際使用中沒有其他明顯區別;

2、談一談Fragment的生命周期?

  • 參考回答:

  • Fragment從創建到銷毀整個生命周期中涉及到的方法依次為:onAttach()→onCreate()→ onCreateView()→onActivityCreated()→onStart()→onResume()→onPause()→onStop()→onDestroyView()→onDestroy()→onDetach(),其中和Activity有不少名稱相同作用相似的方法,而不同的方法有:

  • onAttach():當Fragment和Activity建立關聯時調用;

  • onCreateView():當fragment創建視圖調用,在onCreate之後;

  • onActivityCreated():當與Fragment相關聯的Activity完成onCreate()之後調用;

  • onDestroyView():在Fragment中的布局被移除時調用;

  • onDetach():當Fragment和Activity解除關聯時調用;

3、談一談Service的生命周期?

  • 參考回答:Service的生命周期涉及到六大方法

  • onCreate():如果service沒被創建過,調用startService()後會執行onCreate()回調;如果service已處於運行中,調用startService()不會執行onCreate()方法。也就是說,onCreate()只會在第一次創建service時候調用,多次執行startService()不會重複調用onCreate(),此方法適合完成一些初始化工作;

  • onStartComand():服務啟動時調用,此方法適合完成一些數據加載工作,比如會在此處創建一個線程用於下載數據或播放音樂;

  • onBind():服務被綁定時調用;

  • onUnBind():服務被解綁時調用;

  • onDestroy():服務停止時調用;

4、廣播有幾種形式 ? 都有什麼特點 ?

  • 參考回答:

  • 普通廣播:開發者自身定義 intent的廣播(最常用),所有的廣播接收器幾乎會在同一時刻接受到此廣播信息,接受的先後順序隨機;

  • 有序廣播:發送出去的廣播被廣播接收者按照先後順序接收,同一時刻只會有一個廣播接收器能够收到這條廣播消息,當這個廣播接收器中的邏輯執行完畢後,廣播才會繼續傳遞,且優先級(priority)高的廣播接收器會先收到廣播消息。有序廣播可以被接收器截斷使得後面的接收器無法收到它;

  • 本地廣播:僅在自己的應用內發送接收廣播,也就是只有自己的應用能收到,數據更加安全,效率更高,但只能采用動態注册的方式;

  • 粘性廣播:這種廣播會一直滯留,當有匹配該廣播的接收器被注册後,該接收器就會收到此條廣播;

5、ContentProvider了解多少?

參考回答:

ContentProvider作為四大組件之一,其主要負責存儲和共享數據。與文件存儲、SharedPreferences存儲、SQLite數據庫存儲這幾種數據存儲方法不同的是,後者保存下的數據只能被該應用程序使用,而前者可以讓不同應用程序之間進行數據共享,它還可以選擇只對哪一部分數據進行共享,從而保證程序中的隱私數據不會有泄漏風險。

說說最近Android的行情

最近時不時看到一些風凉話,動不動就說Android凉了,給大家幾個建議哈,首先要耐得住寂寞,不要被外界所幹擾;其次要制定長期系統的學習計劃並持之以恒;最後,注意學習方式,不要休閑式學習,很多人只看書看博客,但是從來不去動手實踐一下,那理解肯定不會太深刻,時間久了就容易忘。

如何做好面試突擊,規劃學習方向?

面試題集可以幫助你查漏補缺,有方向有針對性的學習,為之後進大廠做准備。但是如果你僅僅是看一遍,而不去學習和深究。那麼這份面試題對你的幫助會很有限。最終還是要靠資深技術水平說話。

網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那麼很難做到真正的技術提昇。建議先制定學習計劃,根據學習計劃把知識點關聯起來,形成一個系統化的知識體系。

學習方向很容易規劃,但是如果只通過碎片化的學習,對自己的提昇是很慢的。

我搜集整理過這幾年字節跳動,以及騰訊,阿裏,華為,小米等公司的面試題,把面試的要求和技術點梳理成一份大而全的“ Android架構師”面試 Xmind(實際上比預期多花了不少精力),包含知識脈絡 + 分支細節

組件化與插件化的差別在哪裏,膜拜大佬_移動開發

在搭建這些技術框架的時候,還整理了系統的高級進階教程,會比自己碎片化學習效果强太多。

 CodeChina開源項目:《Android學習筆記總結+移動架構視頻+大廠面試真題+項目實戰源碼》

組件化與插件化的差別在哪裏,膜拜大佬_程序員_02

網上學習 Android的資料一大堆,但如果學到的知識不成體系,遇到問題時只是淺嘗輒止,不再深入研究,那麼很難做到真正的技術提昇。希望這份系統化的技術體系對大家有一個方向參考。

版权声明:本文为[Mysql高並發]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919095349578H.html