<rp id="yy9qd"></rp>

    <em id="yy9qd"><ruby id="yy9qd"></ruby></em>

      <rp id="yy9qd"><object id="yy9qd"></object></rp>

    1. <th id="yy9qd"></th>

      ?

      安卓工程師是怎樣煉成的

      作者:達內 更新時間:2014-06-13 15:43 來源:未知 點擊:
      達內安卓面試題的板塊匯聚了最經典、最常用的面試題型,這將有助于你在成為安卓工程師這條道路上推波助瀾,認真完成每一道題,查缺補漏,最后才會收獲成功。

        1. 說說mvc模式的原理,它在android中的運用:

        答:android的官方建議應用程序的開發采用mvc模式。何謂mvc?

        mvc是model,view,controller的縮寫,mvc包含三個部分:

        1)模型(model)對象:是應用程序的主體部分,所有的業務邏輯都應該寫在該層。

        2)視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶唯一可以看到的一層,接收用戶的輸入,顯示處理結果。

        3)控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給m哦得了處理。

        android鼓勵弱耦合和組件的重用,在android中mvc的具體體現如下:

        1)視圖層(view):一般采用xml文件進行界面的描述,使用的時候可以非常方便的引入,當然,如何你對android了解的比較多了話,就一定 可以想到在android中也可以使用javascript+html等的方式作為view層,當然這里需要進行java和javascript之間的通 信,幸運的是,android提供了它們之間非常方便的通信實現。

        2)控制層(controller):android的控制層的重 任通常落在了眾多的acitvity的肩上,這句就暗含了不要在acitivity中寫代碼,要通過activity交割model業務邏輯層處理, 這樣做的另外一個原因是android中的acitivity的響應時間是5s,如果耗時的操作放在這里,程序就很容易被回收掉。

        3)模型層(model):對數據庫的操作、對網絡等的操作都應該在model里面處理,當然對業務計算等操作也是必須放在的該層的。

        2. Android的五種數據存儲方式

        答:sharedPreferences;文件;SQLite;contentProvider;網絡

        3. 系統上安裝了多種瀏覽器,能否指定某瀏覽器訪問指定頁面?請說明原由:

        答:通過直接發送Uri把參過去,或者通過manifest里的intentfilter里的data屬性。代碼如下:

        Intent intent = new Intent();

        Intent.setAction(“android.intent.action.View”);

        Uri uriBrowsers = Uri.parse(“http://www.sina.com.cn”);

        Intent.setData(uriBrowsers);

        //包名、要打開的activit

        intent.setClassName(“com.android.browser”,”com.android.browser.BrowserActivity”);

        startActivity(intent);

        4. NDK是什么:

        答:NDK是一系列工具的集合

        NDK提供了一系列的工具,幫助開發者迅速的開發C/C++的動態庫,并能自動將so和java應用打成apk包

        NDK集成了交叉編譯器,并提供了相應的mk文件和隔離cpu,平臺等的差異,開發人員只需簡單的修改mk文件就可以。

        5. android view,surfaceview,glsurfaceview的區別:

        答:SurfaceView是從View基類中派生出來的顯示類,直接子類有GLSurfaceView和VideoView,可以看出GL和視頻播放以及Camera攝像頭一般均使用SurfaceView

        SurfaceView和View最本質的區別在于,surfaceView是在一個新起的單獨線程中可以重新繪制畫面而View必須在UI的主線程中更新畫面。 那么在UI的主線程中更新畫面 可能會引發問題,比如你更新畫面的時間過長,那么你的主UI線程會被你正在畫的函數阻塞。那么將無法響應按鍵,觸屏等消息。

        當使用surfaceView 由于是在新的線程中更新畫面所以不會阻塞你的UI主線程。但這也帶來了另外一個問題,就是事件同步。比如你觸屏了一下,你需要surfaceView中thread處理,一般就需要有一個event queue的設計來保存touch event,這會稍稍復雜一點,因為涉及到線程同步。 所以基于以上,根據游戲特點,一般分成兩類。

        被動更新畫面的。比如棋類,這種用view就好了。因為畫面的更新是依賴于 onTouch 來更新,可以直接使用 invalidate。 因為這種情況下,這一次Touch和下一次的Touch需要的時間比較長些,不會產生影響。

        主動更新。比如一個人在一直跑動。這就需要一個單獨的thread不停的重繪人的狀態,避免阻塞main UI thread。所以顯然view不合適,需要surfaceView來控制。

        6. DDMS和TraceView的區別?

        答:DDMS是一個程序執行查看器,在里面可以看見線程和堆棧等信息,TraceView是程序性能分析器

        7. Android dvm的進程和Linux的進程, 應用程序的進程是否為同一個概念

        DVM指dalivk的虛擬機。每一個Android應用程序都在它自己的進程中運行,都擁有一個獨立的Dalvik虛擬機實例。而每一個DVM都是在Linux 中的一個進程,所以說可以認為是同一個概念。

        希望以上達內總結的題型對你的安卓培訓學習有所幫助。

      相關閱讀

      最新開班信息

      3G-Android軟件工程師就業班
      北京潘家園中心 開課日期:9月29日
      3G-Android軟件工程師就業班
      北京潘家園中心 開課日期:9月29日
      3G-Android軟件工程師周末班
      北京潘家園中心 開課日期:9月29日
      3G-Android軟件工程師周末班
      北京潘家園中心 開課日期:9月29日