最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

2023 Android面試官 常問的問題以及答案(附最新的Android面試大廠必考174題 )

2023-05-26 15:59 作者:下班被游戲打-  | 我要投稿

前言

已經(jīng)2023了 但是計(jì)算機(jī)的寒冬還沒有過去 ,但是我們程序員的熱情不會(huì)被磨滅(有錢就干 越多越有勁)。在這個(gè)金三銀四的季節(jié) 許多公司也發(fā)布了更多的招聘崗位 面試機(jī)會(huì)多了 那我們跟要把握住。以下分享一些面試題給大家,希望能幫到大家找一份好工作。

1.Android與服務(wù)器交互的方式中的對(duì)稱加密和非對(duì)稱加密是什么

對(duì)稱加密,就是加密和解密數(shù)據(jù)都是使用同一個(gè)key,這方面的算法有DES。

非對(duì)稱加密,加密和解密是使用不同的key。發(fā)送數(shù)據(jù)之前要先和服務(wù)端約定生成公鑰和私鑰,使用公鑰加密的數(shù)據(jù)可以用私鑰解密,反之。這方面的算法有RSA。ssh 和 ssl都是典型的非對(duì)稱加密。


2.Android啟動(dòng)Service的兩種方式是什么? 它們的適用情況是什么?

如果后臺(tái)服務(wù)開始后基本可以獨(dú)立運(yùn)行的話,可以用startService。音樂播放器就可以這樣用。它們會(huì)一直運(yùn)行直到你調(diào)用 stopSelf或者stopService。你可以通過發(fā)送Intent或者接收Intent來與正在運(yùn)行的后臺(tái)服務(wù)通信,但大部分時(shí)間,你只是啟動(dòng)服務(wù)并讓它獨(dú)立運(yùn)行。如果你需要與后臺(tái)服務(wù)通過一個(gè)持續(xù)的連接來比較頻繁地通信,建議使用bind()。比如你需要定位服務(wù)不停地把更新后的地理位置傳給UI。Binder比Intent開發(fā)起來復(fù)雜一些,但如果真的需要,你也只能使用它。

startService:生命周期與調(diào)用者不同。啟動(dòng)后若調(diào)用者未調(diào)用stopService而直接退出,Service仍會(huì)運(yùn)行

bindService:生命周期與調(diào)用者綁定,調(diào)用者一旦退出,Service就會(huì)調(diào)用unBind->onDestroy


3.談?wù)勀銓?duì)binder機(jī)制的理解?

binder是一種IPC機(jī)制,進(jìn)程間通訊的一種工具.

Java層可以利用aidl工具來實(shí)現(xiàn)相應(yīng)的接口.


4.Android中進(jìn)程間通信有哪些實(shí)現(xiàn)方式?

Intent,Binder(AIDL),Messenger,BroadcastReceiver


5.介紹下實(shí)現(xiàn)一個(gè)自定義view的基本流程

1、自定義View的屬性 編寫attr.xml文件

2、在layout布局文件中引用,同時(shí)引用命名空間

3、在View的構(gòu)造方法中獲得我們自定義的屬性 ,在自定義 控件中進(jìn)行讀?。?gòu)造方法拿到attr.xml文件值)

4、重寫onMesure

5、重寫onDraw


6.Android中touch事件的傳遞機(jī)制是怎樣的?

1.Touch事件傳遞的相關(guān)API有dispatchTouchEvent、 onTouchEvent、onInterceptTouchEvent

2.Touch事件相關(guān)的類有View、ViewGroup、Activity

3.Touch事件會(huì)被封裝成MotionEvent對(duì)象,該對(duì)象封裝了手 勢(shì)按下、移動(dòng)、松開等動(dòng)作

4.Touch事件通常從Activity#dispatchTouchEvent發(fā)出,只要 沒有被消費(fèi),會(huì)一直往下傳遞,到最底層的View。

5.如果Touch事件傳遞到的每個(gè)View都不消費(fèi)事件,那么Touch事件會(huì)反向向上傳遞,最終交由Activity#onTouchEvent處理.

6.onInterceptTouchEvent為ViewGroup特有,可以攔截事件.

7.Down事件到來時(shí),如果一個(gè)View沒有消費(fèi)該事件,那么后續(xù)的MOVE/UP事件都不會(huì)再給它


7.簡述一下RecyclerView緩存機(jī)制?

RecyclerView在Android的應(yīng)用上可以說已經(jīng)取代了listview,其靈活,組裝式設(shè)置,多緩存機(jī)制可以適應(yīng)多列表在Android開發(fā)中各種各樣的需求。

對(duì)于RecyclerView的緩存機(jī)制一直都想稍微的屢下思路,簡單點(diǎn)說RecyclerView對(duì)比listview緩存機(jī)制中就是多了兩層緩存的支持,listview是兩級(jí)緩存,RecyclerView為四級(jí)緩存(當(dāng)然在大部分情況下是三級(jí)緩存)。


8.在一個(gè)listview里每個(gè)item中都有一個(gè)動(dòng)畫(gif)播放的view,當(dāng)我點(diǎn)擊item中的button時(shí)動(dòng)畫(gif)播放。當(dāng)有動(dòng)畫播放時(shí)滑動(dòng)listview,偶爾會(huì)發(fā)生item錯(cuò)位的事件。原因是什么?

這是item復(fù)用的問題,由于異步加載導(dǎo)致圖片錯(cuò)位


9.Android多線程的實(shí)現(xiàn)方式有哪些?

Thread & AsyncTask

Thread 可以與Loop 和 Handler 共用建立消息處理隊(duì)列

AsyncTask 可以作為線程池并行處理多任務(wù)


10.Android開發(fā)中何時(shí)使用多進(jìn)程?使用多進(jìn)程的好處是什么?

要想知道如何使用多進(jìn)程,先要知道Android里的多進(jìn)程概念。一般情況下,一個(gè)應(yīng)用程序就是一個(gè)進(jìn)程,這個(gè)進(jìn)程名稱就是應(yīng)用程序包名。我們知道進(jìn)程是系統(tǒng)分配資源和調(diào)度的基本單位,所以每個(gè)進(jìn)程都有自己獨(dú)立的資源和內(nèi)存空間,別的進(jìn)程是不能任意訪問其他進(jìn)程的內(nèi)存和資源的。

那如何讓自己的應(yīng)用擁有多個(gè)進(jìn)程?

很簡單,我們的四大組件在AndroidManifest文件中注冊(cè)的時(shí)候,有個(gè)屬性是android:process,

1.這里可以指定組件的所處的進(jìn)程。默認(rèn)就是應(yīng)用的主進(jìn)程。指定為別的進(jìn)程之后,系統(tǒng)在啟動(dòng)這個(gè)組件的時(shí)候,就先創(chuàng)建(如果還沒創(chuàng)建的話)這個(gè)進(jìn)程,然后再創(chuàng)建該組件。你可以重載Application類的onCreate方法,打印出它的進(jìn)程名稱,就可以清楚的看見了。再設(shè)置android:process屬性時(shí)候,有個(gè)地方需要注意:如果是android:process=”:deamon”,以:開頭的名字,則表示這是一個(gè)應(yīng)用程序的私有進(jìn)程,否則它是一個(gè)全局進(jìn)程。私有進(jìn)程的進(jìn)程名稱是會(huì)在冒號(hào)前自動(dòng)加上包名,而全局進(jìn)程則不會(huì)。一般我們都是有私有進(jìn)程,很少使用全局進(jìn)程。他們的具體區(qū)別不知道有沒有誰能補(bǔ)充一下。

2.使用多進(jìn)程顯而易見的好處就是分擔(dān)主進(jìn)程的內(nèi)存壓力。我們的應(yīng)用越做越大,內(nèi)存越來越多,將一些獨(dú)立的組件放到不同的進(jìn)程,它就不占用主進(jìn)程的內(nèi)存空間了。當(dāng)然還有其他好處,有心人會(huì)發(fā)現(xiàn)Android后臺(tái)進(jìn)程里有很多應(yīng)用是多個(gè)進(jìn)程的,因?yàn)樗鼈円qv后臺(tái),特別是即時(shí)通訊或者社交應(yīng)用,不過現(xiàn)在多進(jìn)程已經(jīng)被用爛了。典型用法是在啟動(dòng)一個(gè)不可見的輕量級(jí)私有進(jìn)程,在后臺(tái)收發(fā)消息,或者做一些耗時(shí)的事情,或者開機(jī)啟動(dòng)這個(gè)進(jìn)程,然后做監(jiān)聽等。還有就是防止主進(jìn)程被殺守護(hù)進(jìn)程,守護(hù)進(jìn)程和主進(jìn)程之間相互監(jiān)視,有一方被殺就重新啟動(dòng)它。應(yīng)該還有還有其他好處,這里就不多說了。

3.壞處的話,多占用了系統(tǒng)的空間,大家都這么用的話系統(tǒng)內(nèi)存很容易占滿而導(dǎo)致卡頓。消耗用戶的電量。應(yīng)用程序架構(gòu)會(huì)變復(fù)雜,應(yīng)為要處理多進(jìn)程之間的通信。這里又是另外一個(gè)問題了。


11.Android下解決滑動(dòng)沖突的常見思路是什么?

相關(guān)的滑動(dòng)組件 重寫onInterceptTouchEvent,然后判斷根據(jù)xy值,來決定是否要攔截當(dāng)前操作


12.如何把一個(gè)應(yīng)用設(shè)置為系統(tǒng)應(yīng)用?

成為系統(tǒng)應(yīng)用,首先要在 對(duì)應(yīng)設(shè)備的 Android 源碼 SDK 下編譯,編譯好之后:

此 Android 設(shè)備是 Debug 版本,并且已經(jīng) root,直接將此 apk 用 adb 工具 push 到 system/app 或 system/priv-app 下即可。

如果非 root 設(shè)備,需要編譯后重新燒寫設(shè)備鏡像即可。

有些權(quán)限(如 WRITE_SECURE_SETTINGS ),是不開放給第三方應(yīng)用的,只能在對(duì)應(yīng)設(shè)備源碼中編譯然后作為系統(tǒng) app 使用。


13.Android內(nèi)存泄露研究

Android內(nèi)存泄漏指的是進(jìn)程中某些對(duì)象(垃圾對(duì)象)已經(jīng)沒有使用價(jià)值了,但是它們卻可以直接或間接地引用到gc roots導(dǎo)致無法被GC回收。無用的對(duì)象占據(jù)著內(nèi)存空間,使得實(shí)際可使用內(nèi)存變小,形象地說法就是內(nèi)存泄漏了。

場(chǎng)景

類的靜態(tài)變量持有大數(shù)據(jù)對(duì)象

靜態(tài)變量長期維持到大數(shù)據(jù)對(duì)象的引用,阻止垃圾回收。

非靜態(tài)內(nèi)部類的靜態(tài)實(shí)例

非靜態(tài)內(nèi)部類會(huì)維持一個(gè)到外部類實(shí)例的引用,如果非靜態(tài)內(nèi)部類的實(shí)例是靜態(tài)的,就會(huì)間接長期維持著外部類的引用,阻止被回收掉。

資源對(duì)象未關(guān)閉

資源性對(duì)象如Cursor、File、Socket,應(yīng)該在使用后及時(shí)關(guān)閉。未在finally中關(guān)閉,會(huì)導(dǎo)致異常情況下資源對(duì)象未被釋放的隱患。

注冊(cè)對(duì)象未反注冊(cè)

未反注冊(cè)會(huì)導(dǎo)致觀察者列表里維持著對(duì)象的引用,阻止垃圾回收。

Handler臨時(shí)性內(nèi)存泄露

Handler通過發(fā)送Message與主線程交互,Message發(fā)出之后是存儲(chǔ)在MessageQueue中的,有些Message也不是馬上就被處理的。

在Message中存在一個(gè) target,是Handler的一個(gè)引用,如果Message在Queue中存在的時(shí)間越長,就會(huì)導(dǎo)致Handler無法被回收。如果Handler是非靜態(tài)的,則會(huì)導(dǎo)致Activity或者Service不會(huì)被回收。

由于AsyncTask內(nèi)部也是Handler機(jī)制,同樣存在內(nèi)存泄漏的風(fēng)險(xiǎn)。

此種內(nèi)存泄露,一般是臨時(shí)性的。

最后

我平時(shí)經(jīng)??慈缦虏诲e(cuò)的公眾號(hào)的技術(shù)文章,他們經(jīng)常寫一些面試經(jīng)驗(yàn)、面試題解,也整理了很多免費(fèi)的系列資料和學(xué)習(xí)資料,他們踏實(shí)而不浮躁、不販賣焦慮。希望大家一起進(jìn)步,時(shí)刻準(zhǔn)備著。


《Android面試大廠必考174題》

綱要

1.?SD卡

2.?android的數(shù)據(jù)存儲(chǔ)方式

3.?BroadcastReceiver

4.?sp頻繁操作會(huì)有什么后果?sp能存多少數(shù)據(jù)?

5.?dvm與jvm的區(qū)別

6.?ART

7.?Activity的生命周期

8.?Application能不能啟動(dòng)Activity

9.?Activity的狀態(tài)都有哪些

10.?橫豎屏切換時(shí)Activity的生命周期****Activity的狀態(tài)都有哪些

11.?如何設(shè)置activity成窗口樣式

12.?Activity的啟動(dòng)方式

13. Service的生命周期

14. IntentService

15. Fragment和Activity的onCreateOptionsMenu

16. Service的onStartCommand有幾種返回值

17. Service的onRebind什么情況下執(zhí)行

18. Handler防止內(nèi)存泄露

19. IntentFilter的匹配法則

20. Fragment與Activity傳值

21. Fragment 生命周期


22. Fragment的add和replace的區(qū)別 //replace==remove|append

23. Fragment如何實(shí)現(xiàn)Activity棧的壓棧和出棧

24. 什么情況下造成內(nèi)存泄露

25. 圖片過大導(dǎo)致OOM

26. SoftReference跟WeakRefrence的區(qū)別

27. dp與px

28. 設(shè)置布局為一半寬、高

29. 多分辨率支持的清單文件配置

30. Android的事件分發(fā)機(jī)制


由于文章內(nèi)容比較多,篇幅有限,資料已經(jīng)被整理成了PDF文檔,有需要《Android面試大廠必考174題》完整文檔的可以點(diǎn)贊+評(píng)論資料?即可免費(fèi)領(lǐng)取!

2023 Android面試官 常問的問題以及答案(附最新的Android面試大廠必考174題 )的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
沅陵县| 平阳县| 资兴市| 古田县| 清丰县| 色达县| 香河县| 永安市| 托克托县| 定州市| 健康| 福贡县| 天峻县| 宾川县| 伊宁市| 榆林市| 新闻| 仁寿县| 泸州市| 永宁县| 秦皇岛市| 天峻县| 延庆县| 资源县| 娄底市| 雷山县| 芦山县| 登封市| 云和县| 西畴县| 武汉市| 大余县| 梁河县| 萨迦县| 竹溪县| 西乌珠穆沁旗| 乐平市| 曲松县| 米易县| 双桥区| 永泰县|