1. 程式人生 > >Android開發工程師筆試題

Android開發工程師筆試題

1.請談一下Android系統的架構

Android系統從下往上分為Linux核心層(linux kerner),執行庫(runtime library),應用程式框架層,應用程式層

linuxkernel:負責硬體的驅動程式、網路、電源、系統安全以及記憶體管理等功能。

libraries androidruntimelibraries:即c/c++函式庫部分,大多數都是開放原始碼的函式庫,例如webkit,該函式庫負責 android網頁瀏覽器的執行

applicationframework(應用軟體架構),Java應用程式開發人員主要是使用該層封裝好的api進行快速開發。

applications:
該層是java的應用程式層,android內建e-mail、即時通訊工具、瀏覽器、mp3播放器等處於該層,java開發人員開發的程式也處於該層,而且和內建的應用程式具有平等的位置,可以呼叫內建的應用程式,也可以替換內建的應用程式。


下層為上層服務,上層需要下層的支援,呼叫下層的服務,這種嚴格分層的方式帶來的極大的穩定性、靈活性和可擴充套件性,使得不同層的開發人員可以按照規範專心特定層的開發。

android應用程式使用框架的api並在框架下執行,這就帶來了程式開發的高度一致性,另一方面也告訴我們,要想寫出優質高效的程式就必須對整個 applicationframework進行非常深入的理解。精通

applicationframework,你就可以真正的理解android的設計和執行機制,也就更能夠駕馭整個應用層的開發。

2.textview如何支援HTML標籤,webview中如何獲取超連結,如何適配圖

publicclassMain extendsActivity {  

@Override

   publicvoidonCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        setContentView(R.layout.main);  

        txtFirst=(TextView)findViewById(R.id.txtFirst); 

          String html="<font color='red'>樣式一</font> ";  

        html+="<font color='#0000FF'> <big> <i> 樣式二 </i> </big> <font>";  

        html+="<font color='@"+android.R.color.white+"'> <tt> <b> <big> <u> 樣式三 </u> </big> </b> </tt> </font> ";  

        html+="<big> <a href='http://blog.csdn.net/a_mean'>我的部落格:http://blog.csdn.net/a_mean </a> </big>";  

        CharSequence charSequence=Html.fromHtml(html);  

        txtFirst.setText(charSequence);  

        //該語句在設定後必加,不然沒有任何效果

        txtFirst.setMovementMethod(LinkMovementMethod.getInstance());  

    }  

3.淺談Android常用5中佈局

1.線性佈局(linearlayout):

android:orientation為horizonal,表示的是水平佈局,頂部,底部,水平居中生效

android:orientation為vertical,表示的是垂直佈局,左右對齊,垂直居中生效

另如果使用以下方法

android:layout_weight= "1"//表示按比例分配剩餘寬度,稱為權重

android:layout_width= "0dp"//水平佈局使用該方法

如果是垂直佈局使用以下方法

android:layout_weight= "1"//表示按比例分配剩餘寬度,稱為權重

android:layout_height= "0dp"//垂直佈局使用該方法

2.相對佈局(Relativelayout):

預設的是頂部左對齊,沒有方向,故沒有android:orientation,並無權重的概念

幾個常用的方法如下:

android:id = “@+id/tv4”//定義一個id

android:layoout_toRightof= "@id/tv3"//引用一個id

android:layout_centerInParent= "true"//水平垂直都居中

android:layout_above= “@id/tv2” //引用id,表示在tv2之上

android:layout_alignleft= “@id/tv2”//與tv2左對齊

3.幀佈局(FrameLayout):

預設是左上角對齊,幀佈局相當於一個TestView,常用的方法如下:

android:layout_gravity= "center"

4.表格佈局(TableLayout):

不用指定寬和高

<tablelayout

    <tableRow

        //行

    />

    <TestView

        //列

    />

/>

5.絕對佈局(absolutelayout)

指定x,y座標,一般用的比較少,在電視這塊會用到

4.Android常見資料儲存方式

Android系統一共提供了四種資料儲存方式。分別是:

  1 SharePreference

  2 SQLite

  3 Content  Provider

  4 File

由於Android系統中,資料基本都是私有的,都是存放於“data/data/程式包名目錄下,所以要實現資料共享,正確方式是使用Content  Provider

SQLite

SQLite是一個輕量級的資料庫,支援基本SQL語法,是常被採用的一種資料儲存方式。Android為此資料庫提供了一個名為SQLiteDatabase的類,封裝了一些操作資料庫的API

SharedPreference

SQLite資料庫外,另一種常用的資料儲存方式,其本質就是一個xml檔案,常用於儲存較簡單的引數設定。

File

即常說的檔案(I/O)儲存方法,常用語儲存大數量的資料,但是缺點是更新資料將是一件困難的事情。

ContentProvider:

Android系統中能實現所有應用程式共享的一種資料儲存方式,由於資料通常在各應用間的是互相私密的,所以此儲存方式較少使用,但是其又是必不可少的一種儲存方式。例如音訊,視訊,圖片和通訊錄,一般都可以採用此種方式進行儲存。每個ContentProvider都會對外提供一個公共的URI(包裝成Uri物件),如果應用程式有資料需要共享時,就需要使用ContentProvider為這些資料定義一個URI,然後其他的應用程式就通過Content Provider傳入這個URI來對資料進行操作。

5.APP版本升級注意事項

http://blog.csdn.net/qq_30716173/article/details/50911819

6.訊息推送流程

http://jingyan.baidu.com/article/ce4366491084313772afd34a.html

7.簡述Android廣播機制

http://www.cnblogs.com/RMBP975/archive/2013/03/12/2955733.html

8.Android常見非同步處理實現原理

http://blog.csdn.net/yanbober/article/details/45936145

9.Android記憶體回收機制

http://www.cnblogs.com/bastard/archive/2012/08/17/2644169.html

10.金字塔

請寫出返回金字塔的函式drawPyramid,例:drawPyramid(4)

   *   

 ***

*****

http://blog.csdn.net/lissdy/article/details/7792305

11.顛倒(reverse)

請寫出顛倒單詞(不是字母)順序的函式myReverse.每一個單詞以空格區分。不可直接使用split或separate等的字串分割函式。例:myReverse(“These questions are tooeasy for me”)==>”me  for easy to arequestions These”

StringmyReverse(String s){

將程式碼寫在下面空白處

http://blog.sina.com.cn/s/blog_6217219f0101q2o8.html

}

12.只修改一個位元組(1 byte)使其for迴圈能夠輸出20個星號(2種辦法即可)

int i,n=20;

for(I=0;i<n;i--)

printf(“*”)

13.listview下拉重新整理的實現過程

http://blog.csdn.net/loongggdroid/article/details/9385535

14.圖片記憶體優化

http://blog.csdn.net/gao_chun/article/details/45391401