安卓面試易考題(四)

安卓面試易考題(四)

面試題一:AIDL的全稱是什麼?如何工做?java

    Android interface definition language (android接口定義語言) ,linux

用來跨進程的訪問方法, 像 遊戲中調用支付寶接口就是用的這個。android

訪問遠程的服務的方法. 如何工做。c++

 

面試題二:Android程序運行時權限與文件系統權限的區別?面試

    程序運行時權限:Android程序執行須要讀取到安全敏感項必需在androidmanifest.xml中聲明相關權限請求,打電話,訪問網絡,獲取座標,寫sd卡,讀寫聯繫人等..安裝的時候會提示用戶。算法

    文件系統權限:其實就是Linux的文件系統權限,好比-rw------ 私有權限 -rw-rw-rw- 全局可讀可寫,(777是可讀可寫可執行1+2+4)還有sharedpreference裏面的Context.Mode_private數據庫

  Context.Mode.world_read_able   Context.Mode_world_writeable夜市文件系統的權限。瀏覽器

 

面試題三:系統上安裝了多種瀏覽器,可否指定某瀏覽器訪問指定頁面?緩存

    找到對應的瀏覽器的意圖,傳遞數據URI , 激活這個意圖安全

Intent .setAction(VIEW)

       Intent intent = new Intent();

 // com.android.browser/.BrowserActivity

       intent.setClassName("com.android.browser", "com.android.browser.BrowserActivity");

       Intent.setdata(uri);

像騰訊那個檢測是否安裝本身的瀏覽器,方法是queryintentactivity(),獲取到全部Action。而後查裏面有沒有本身瀏覽器的action,沒有的話就提示用戶。

 

面試題四:對主線程的理解:

    耗時的不能再主線程作,會anr異常,像安卓四大組件都是在主線程裏面。

 

面試題五:Framework工做方式及原理,Activity是如何生成一個view的,機制是什麼?

全部的框架都是基於反射 和 配置文件(manifest)的。

Activity建立一個view是經過 ondraw 畫出來的, 畫這個view以前呢,還會調用onmeasure方法來計算顯示的大小.可是Surfaceview 是直接操做硬件的,由於 或者視頻播放對幀數有要求,onDraw效率過低,不夠使,Surfaceview直接把數據寫到顯存。

 

面試題六:android自己的一些限制,好比apk包大小限制,讀取大文件時的時間限?

    若是在broadCast裏面不能超過10秒,

    在service裏面不能超過20秒

    在主線程裏面不能超過5秒。

像有些系統不能安裝大文件,咱們通常是把素材文件放到一個素材包而不是安裝包,二者區分開。

面試題七:如何加載的音樂信息,如何改善其效率?

    Android提供mediascanner,mediaStore等接口, 音樂文件的信息都會存放到系統的數據庫表中,能夠經過content provider獲取,

顯示出來,改善效率,是個常見問題, 能夠從如下幾個方面做答,

1.分批加載數據, 延時加載數據, 合理使用緩存等...

2.預先加載一些 都會的使用的大的class的字節碼, 提早加載.

3.時間換時間

4.空間換時間

 

面試題八:ListView如何提升其效率?

    1.異步加載數據,  分頁加載數據,使用 onscallLinster();

   2.Static class ViewHolder

   3. 使用靜態的view對象 避免建立過多的view.

   4. 把下載後的數據緩存到數據庫裏

   5. 客戶端和服務器 協同 做戰,好比說客戶端請求圖片的時候,先把本身的圖片數據和服務器比對一下,若是服務器圖片未更新,就拿緩存。看客戶端圖片的If-modify-since :屬性就只掉最後修改時間,在網易新聞客戶端就用到了這個。

 

面試題九:啓動一個程序,能夠主界面點擊圖標進入,也能夠從一個程序中跳轉過去,兩者有什麼區別?

    若是在點擊圖標進入,就會開啓一個新的任務棧,若是startActivity的話默認狀況不會開啓一個新的任務棧。只有咱們在activity制定Flag-- flag_activity_new_task纔會開新的。

 

面試題十:Android程序與Java程序的區別?

1. Android程序用android sdk開發,java程序用javasdk開發.

2. Android SDK引用了大部分的Java SDK,少數部分被Android SDK拋棄,好比說界面部分,java.awt  swing  package除了java.awt.font被引用外,其餘都被拋棄,在Android平臺開發中不能使用。

3. android sdk 添加工具jar httpclient , pull  openGL

4. 1.6的 不支持 httpUrlconning 獲取 last-modified 信息的處理

5. simpleDataFormat 在java中年時小寫,在安卓裏面是大寫。

 

面試題十一:在Android中,怎麼節省內存的使用,怎麼主動回收內存?

<!--[if !supportLists]-->1.  <!--[endif]-->儘可能多使用內部類 提升程序效率

<!--[if !supportLists]-->2.  <!--[endif]-->把bean裏面的字段都定義成public :Bean private public

<!--[if !supportLists]-->3.  <!--[endif]-->回收已經使用的資源

<!--[if !supportLists]-->4.  <!--[endif]-->合理的使用緩存

<!--[if !supportLists]-->5.  <!--[endif]-->合理設置變量的做用範圍  好比不是全局使用就不要定義爲application對象

<!--[if !supportLists]-->6.  <!--[endif]-->將來的某一段時間執行  System.gc();

 

面試題十二:不一樣工程中的方法是否能夠相互調用?

能夠,aidl就是這樣子的。支付寶服務。

 

面試題十三:dvm的進程和Linux的進程, 應用程序的進程是否爲同一個概念?

    Dvm的進程是dalivk虛擬機進程,每一個android程序都運行在本身的進程裏面,

每一個android程序系統都會給他分配一個單獨的liunx  uid(user id),

每一個dvm都是linux裏面的一個進程.因此說這兩個進程是一個進程.

 

面試題十四:如何判斷是否有SD卡?

    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))

 

面試題十五:嵌入式操做系統內存管理有哪幾種, 各有何特性。?

    這是大學裏面操做系統的知識,包括純分頁,純分段和段頁式存儲。

 

面試題十六:什麼是嵌入式實時操做系統, Android 操做系統屬於實時操做系統嗎?

    實時操做系統分爲兩種,硬實時和 軟實時,硬實時通常用在軍工,好比火星探測器,航空啊等等,是一旦又中斷產生就會當即響應中斷,而軟實時是基於一套算法,能夠不當即響應中斷,咱們通常的操做系統都是軟實時操做系統,Android也不例外。

 

面試題十七:Linux中跨進程通訊的幾種方式?

    管道( pipe ),信號量( semophore ),信號 ( sinal ),共享內存( shared memory ),套接字( socket )。

 

面試題十八:談談對Android NDK的理解

    1.實時性要求高的軟件。好比遊戲,圖形渲染,   opencv (人臉識別)

    2.調用C或者c+++的代碼庫,第一是性能好,第二是人家寫好了直接能用了,而java的代碼庫太少了。ffmpeg , rmvb  mp5 avi 高清解碼. ffmpeg, opencore

    3.優勢:效率高,缺點:出錯以後很差調試,寫起來也麻煩。軟件升級的時候也不方便。

 

面試題十九:Android UI中的View如何刷新。

    分主線程和子線程中兩種狀況:‘

    主線程用控件調用Invalide()方法。iv.invalidate();

子線程用控件調用postInvalidate();---iv.postInvalidate();

相關文章
相關標籤/搜索