Android項目開發如何設計整體架構,自學Android

mb6129b0394c5fe 2021-09-19 20:14:44 阅读数:223

android 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中使用應該如何解耦?

學習福利

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

【Android 詳細知識點思維腦圖(技能樹)】

Android項目開發如何設計整體架構,自學Android_Android

其實Android開發的知識點就那麼多,面試問來問去還是那麼點東西。所以面試沒有其他的訣竅,只看你對這些知識點准備的充分程度。so,出去面試時先看看自己複習到了哪個階段就好。

雖然 Android 沒有前幾年火熱了,已經過去了會四大組件就能找到高薪職比特的時代了。這只能說明 Android 中級以下的崗比特飽和了,現在高級工程師還是比較缺少的,很多高級職比特給的薪資真的特別高(錢多也不一定能找到合適的),所以努力讓自己成為高級工程師才是最重要的。

這裏附上上述的面試題相關的幾十套字節跳動,京東,小米,騰訊、頭條、阿裏、美團等公司19年的面試題。把技術點整理成了視頻和PDF(實際上比預期多花了不少精力),包含知識脈絡 + 諸多細節。

由於篇幅有限,這裏以圖片的形式給大家展示一小部分。

Android項目開發如何設計整體架構,自學Android_程序員_02

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

版权声明:本文为[mb6129b0394c5fe]所创,转载请带上原文链接,感谢。 https://gsmany.com/2021/09/20210919201444240l.html