国产精品亚洲综合久久系列,一本大道香蕉青青久久,播放高清的播放器,国产在线观看无码不卡

蜜蜂職場文庫 > 面試試題 >

安卓面試常見問題_安卓工程師面試題

時間: 小龍 面試試題

  安卓工程師在求職面試中,提前了解面試的常見問題很有必要,那么你知道面試常見問題了嗎?下面小編已經(jīng)為你們整理了安卓面試常見問題,一起來看看吧。

  安卓面試常見問題一

  1.如何優(yōu)化ListView?

 ?、買tem布局,層級越少越好,使用hierarchyview工具查看優(yōu)化。

 ?、趶?fù)用convertView

 ?、凼褂肰iewHolder

  ④item中有圖片時,異步加載

 ?、菘焖倩瑒訒r,不加載圖片

 ?、辤tem中有圖片時,應(yīng)對圖片進行適當(dāng)壓縮

 ?、邔崿F(xiàn)數(shù)據(jù)的分頁加載

  2.對于Android 的安全問題?

 ?、馘e誤導(dǎo)出組件

 ?、?參數(shù)校驗不嚴(yán)

 ?、踂ebView引入各種安全問題,webview中的js注入

 ?、懿换煜?、不防二次打包

 ?、菝魑拇鎯﹃P(guān)鍵信息

 ?、?錯誤使用HTTPS

 ?、嗌秸用芊椒?/p>

 ?、釣E用權(quán)限、內(nèi)存泄露、使用debug簽名

  3. 如何縮減APK包大小?

  代碼

  保持良好的編程習(xí)慣,不要重復(fù)或者不用的代碼,謹慎添加libs,移除使用不到的libs。

  使用proguard混淆代碼,它會對不用的代碼做優(yōu)化,并且混淆后也能夠減少安裝包的大小。

  native code的部分,大多數(shù)情況下只需要支持armabi與x86的架構(gòu)即可。如果非必須,可以考慮拿掉x86的部分。。

  資源

  使用Lint工具查找沒有使用到的資源。去除不使用的圖片,String,XML等等。 assets目錄下的資源請確保沒有用不上的文件。

  生成APK的時候,安卓面試常見問題pt工具本身會對png做優(yōu)化,但是在此之前還可以使用其他工具如tinypng對圖片進行進一步的壓縮預(yù)處理。

  jpeg還是png,根據(jù)需要做選擇,在某些時候jpeg可以減少圖片的體積。 對于9.png的圖片,可拉伸區(qū)域盡量切小,另外可以通過使用9.png拉伸達到大圖效果的時候盡量不要使用整張大圖。

  策略

  有選擇性的提供hdpi,xhdpi,xxhdpi的圖片資源。建議優(yōu)先提供xhdpi的圖片,對于mdpi,ldpi與xxxhdpi根據(jù)需要提供有差異的部分即可。

  盡可能的重用已有的圖片資源。例如對稱的圖片,只需要提供一張,另外一張圖片可以通過代碼旋轉(zhuǎn)的方式實現(xiàn)。

  能用代碼繪制實現(xiàn)的功能,盡量不要使用大量的圖片。例如減少使用多張圖片組成animate-list的AnimationDrawable,這種方式提供了多張圖片很占空間。

  安卓面試常見問題二

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

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

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

  2.設(shè)備橫豎屏切換的時候,接下來會發(fā)生什么?

  01、不設(shè)置Activity的android:configChanges時,切屏?xí)匦抡{(diào)用各個生命周期,切橫屏?xí)r會執(zhí)行一次,切豎屏?xí)r會執(zhí)行兩次

  02、設(shè)置Activity的android:configChanges=”orientation”時,切屏還是會重新調(diào)用各個生命周期,切橫、豎屏?xí)r只會執(zhí)行一次

  03、設(shè)置Activity的android:configChanges=”orientation|keyboardHidden”時,切屏不會重新調(diào)用各個生命周期,只會執(zhí)行onConfigurationChanged方法

  3.Android啟動Service的兩種方式是什么? 它們的適用情況是什么?

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

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

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

  安卓面試常見問題三

  1.談?wù)勀銓ndroid中Context的理解?

  Context:包含上下文信息(外部值) 的一個參數(shù). Android 中的 Context 分三種,Application Context ,Activity Context ,Service Context.

  它描述的是一個應(yīng)用程序環(huán)境的信息,通過它我們可以獲取應(yīng)用程序的資源和類,也包括一些應(yīng)用級別操作,例如:啟動一個Activity,發(fā)送廣播,接受Intent信息等

  2.Service的onCreate回調(diào)在UI線程中嗎?

  Service生命周期的各個回調(diào)和其他的應(yīng)用組件一樣,是跑在主線程中,會影響到你的UI操作或者阻塞主線程中的其他事情

  3.請介紹下AsyncTask的內(nèi)部實現(xiàn),適用的場景是?

  AsyncTask內(nèi)部也是Handler機制來完成的,只不過Android提供了執(zhí)行框架來提供線程池來執(zhí)行相應(yīng)地任務(wù),因為線程池的大小問題,所以AsyncTask只應(yīng)該用來執(zhí)行耗時時間較短的任務(wù),比如HTTP請求,大規(guī)模的下載和數(shù)據(jù)庫的更改不適用于AsyncTask,因為會導(dǎo)致線程池堵塞,沒有線程來執(zhí)行其他的任務(wù),導(dǎo)致的情形是會發(fā)生AsyncTask根本執(zhí)行不了的問題

  4.談?wù)勀銓inder機制的理解?

  binder是一種IPC機制,進程間通訊的一種工具.

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

  5.Android中進程間通信有哪些實現(xiàn)方式?

  Intent,Binder(AIDL),Messenger,BroadcastReceiver

  6.介紹下實現(xiàn)一個自定義view的基本流程

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

  02、在layout布局文件中引用,同時引用命名空間

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

  04、重寫onMesure

  05、重寫onDraw

  
看了“安卓面試常見問題”

49552