android一些面試題目

來源:互聯網
上載者:User

標籤:android面試題

1.ListView怎麼提高滑動效率
2.說下你做過項目的包的構架,(連網,解析,activity,database) 重點
3.載入大量圖片怎麼做(包括小圖和查看大圖) 怎麼減少一次跟伺服器的連結數,怎麼做緩衝,
4.onInterceptTouchEvent(),onTouchEvent()的關係
5.怎麼在oncreate中大致計算一個view的高度(調一下view的measure,然後再getHeight就行了)
6.MessageQueue,Looper,handler的關係(重點)
7.android的widget統計,就是統計從widget中啟動的次數
8.大量數組怎麼找出前5個最大的數(nlog5的複雜度,用一個5個元素的堆排序)
9.final ,finalize,finally區別
10.怎麼寫一個線程池(重點)當裡面的線程池數滿了,外面又來線程怎麼辦(用緩衝池),還有這個線程池怎麼工作的,同步原理
11.線程的yield,sleep(不釋放鎖),wait(釋放鎖,對象層級的)
12.靜態變數和動態變數 在java中的儲存有啥差別
13.java  深拷貝(重點)
14.android task的形式(singletask,singtop之類的,要弄清楚他們的表現形式)
15.listView下拉重新整理怎麼實現的
16.Gallery的onFling()的實現原理,重寫Gallery後onCount()的東西
17.android的service的啟動和銷毀(重點)
18.java有幾種方式實現多線程
19.怎麼實現資料庫的索引(B-樹)
20.java中的軟引用,虛引用之類的表現形式)
21.java中的記憶體回收 如果讓你實現一個,怎麼實現(百度面的時候問的)
22.怎麼自訂一個View onMeasure,onLayout,這些的調用次序
23.怎麼自訂屬性  (要寫出來)
24.android的處理序間通訊
25.BitmapFactory.decode()   sdcard中的一個圖片  在不同解析度下的getWidth()和getHeight()有什麼差別
26.讓你當場寫一個連網(給你url,用httpGet寫)
27.cmwap,cmnet,ctwap,ctnet的區別
28.android scrollview怎麼實現左右滑動  (有個scroller的屬性,可以scroller.startScroll)
29.android怎麼實現左右滑動大圖)
30.activity的生命週期(重點)
31android支援幾種動畫,還有各種動畫的表現形式)(種是Tween動畫、還有一種是Frame動畫。Tween動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化;另一種Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。 )
32 gni怎麼寫的
33.android 怎麼進行傳值的,尤其是對象
34怎麼讓activity像對話方塊一樣彈出來
35.怎麼寫一個contentProvider




處理序間通訊的答案:
IDL的全稱是什嗎?如何工作?能處理哪些類型的資料?
AIDL的英文全稱是Android Interface Define Language
當A進程要去調用B進程中的service時,並實現通訊,我們通常都是通過AIDL來操作的
A工程:
首先我們在net.blogjava.mobile.aidlservice包中建立一個RemoteService.aidl檔案,在裡面我們自訂一個介面,含有方法get。ADT外掛程式會在gen目錄下自動產生一個RemoteService.java檔案,該類中含有一個名為RemoteService.stub的內部類,該內部類中含有aidl檔案介面的get方法。
說明一:aidl檔案的位置不固定,可以任意
然後定義自己的MyService類,在MyService類中自訂一個內部類去繼承RemoteService.stub這個內部類,實現get方法。在onBind方法中返回這個內部類的對象,系統會自動將這個對象封裝成IBinder對象,傳遞給他的調用者。
其次需要在AndroidManifest.xml檔案中配置MyService類,代碼如下:
<!-- 註冊服務 -->  
<service android:name=".MyService"> 
   <intent-filter> 
   <!--  指定調用AIDL服務的ID  --> 
       <action android:name="net.blogjava.mobile.aidlservice.RemoteService" /> 
    </intent-filter> 
</service>
為什麼要指定調用AIDL服務的ID,就是要告訴外界MyService這個類能夠被別的進程訪問,只要別的進程知道這個ID,正是有了這個ID,B工程才能找到A工程實現通訊。
說明:AIDL並不需要許可權
B工程:
      首先我們要將A工程中產生的RemoteService.java檔案拷貝到B工程中,在bindService方法中綁定aidl服務
      綁定AIDL服務就是將RemoteService的ID作為intent的action參數。
      說明:如果我們單獨將RemoteService.aidl檔案放在一個包裡,那個在我們將gen目錄下的該包拷貝到B工程中。如果我們將RemoteService.aidl檔案和我們的其他類存放在一起,那麼我們在B工程中就要建立相應的包,以保證RmoteService.java檔案的報名正確,我們不能修改RemoteService.java檔案
           bindService(new Inten("net.blogjava.mobile.aidlservice.RemoteService"), serviceConnection, Context.BIND_AUTO_CREATE); 
       ServiceConnection的onServiceConnected(ComponentName name, IBinder service)方法中的service參數就是A工程中MyService類中繼承了RemoteService.stub類的內部類的對象。






Android應用程式結構是:
  Linux Kernel(Linux核心)、Libraries(系統運行庫或者是c/c++核心庫)、Application  
  Framework(開發架構套件)、Applications (核心應用程式)


 在android中,請簡述jni的調用過程。(8分)
1)安裝和下載Cygwin,下載 Android NDK
  2)在ndk項目中JNI介面的設計
  3)使用C/C++實現本地方法
  4)JNI產生動態連結程式庫.so檔案
  5)將動態連結程式庫複製到java工程,在java工程中調用,運行java工程即可




自訂屬性的答案:
<?xml version="1.0" encoding="utf-8"?>
<resources>
      <declare-styleable name="myView">  
         <attr name="textColor" format="color"/>  
         <attr name="textSize" format="dimension"/>  
     </declare-styleable> 
</resources>
package cn.com.flyfot.attrs;
  public MyView(Context context, AttributeSet attr) {  
            super(context, attr);  
            mPaint = new Paint();  
            //擷取自訂屬性 
            TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);
            //擷取尺寸屬性值,預設大小為:30
            float textSize = a.getDimension(R.styleable.myView_textSize, 30);
            //擷取顏色屬性值,預設顏色為:0x990000FF
            int textColor = a.getColor(R.styleable.myView_textColor, 0x990000FF);
            //設定畫筆的尺寸和顏色
            mPaint.setTextSize(textSize);  
            mPaint.setColor(textColor);  
            //緩衝屬性,可以不設定,主要是為了提高效率
            a.recycle();
        }  


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:flyfot="http://schemas.android.com/apk/res/cn.com.flyfot.attrs"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <!-- 設定屬性 -->
   <cn.com.flyfot.attrs.MyView 
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    flyfot:textSize="120px"  
    flyfot:textColor="#ABCDEFEF"  
    />
 
<!-- 
    注意引入命名空間:xmlns:flyfot="http://schemas.android.com/apk/res/cn.com.flyfot.attrs"
     --> 
   
</LinearLayout>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.