天天看點

Android面試知識(1)

1、GLSurfaceView的特性:

  • 管理一個surface,這個surface就是一塊特殊的記憶體,能直接排版到android的視圖view上;
  • 管理一個EGL display,它能讓opengl把内容渲染到上述的surface上;
  • 讓渲染器在獨立的線程裡運作,和UI線程分離。

2、關于Android中ContentValues類說法正确的是:

  • 他和Hashtable比較類似,也是負責存儲一些鍵值對,但是他存儲的鍵值對當中的鍵都是String類型,而值都是基本類型。

3、android的動畫分類的有:

  • Tween動畫,這種實作方式可以使視圖元件移動,放大或縮小以及産生透明度的變化。
  • Frame動畫,傳統的動畫方法,通過順序的播放排列好的圖檔來實作類似電影的效果。

4、關于Android DVM的程序和Linux的程序,應用程式的程序說法正确的是:

  • DVM指dalivk的虛拟機。每一個Android應用程式都在它自己的程序中運作,都擁有一個獨立的Dalvik虛拟機執行個體。而每一個DVM都是在Linux 中的一個程序,是以說可以認為是同一個概念。

5、Android項目工程下面的assets目錄的作用是什麼:

  • 主要放置多媒體等資料檔案

6、于res/raw目錄說法正确的是:

  • 這裡的檔案是原封不動的存儲到裝置上不會轉換為二進制的格式

7、java.io包中的_和_類主要用于對對象(Object)的讀寫?

  • ObjectInputStream
  • ObjectOutputStream

8、android中service的實作方法是:_和_。

  • startService
  • bindService

9、android的資料存儲的方式有___。

  • SharedPreference
  • 檔案
  • SQLite
  • ContentProvider
  • 網絡

10、以下程式的運作結果是_:

public class Example{ 
  String str = new String("good"); 
  char[]ch = {'a','b','c'}; 
  public static void main(String args[]){ 
    Example ex = new Example(); 
    ex.change(ex.str, ex.ch); 
    System.out.print(ex.str + " and "); 
    System.out.print(ex.ch); 
  } 
  public void change(String str,char ch[]){ 
    str = "test ok";
    ch[] = 'g'; 
  } 
} 
           

Answer:good and gbc

11、在android中,請簡述jni的調用過程。

)安裝和下載下傳Cygwin,下載下傳 Android NDK
)在ndk項目中JNI接口的設計
)使用C/C++實作本地方法
)JNI生成動态連結庫.so檔案
)将動态連結庫複制到java工程,在java工程中調用,運作java工程即可
           

12、簡述Android應用程式結構是哪些?

從底層往上分别是:
Linux Kernel(linux核心層)、
Libraries + Android Runtime(系統運作庫層,包括程式庫和Android運作庫)、
Application Framework(應用程式架構層)、
Applications(應用程式層)
           
Android面試知識(1)

13、請繼承SQLiteOpenHelper實作:

1).建立一個版本為1的“diaryOpenHelper.db”的資料庫;

2).同時建立一個 “diary”; 表(包含一個_id主鍵并自增長,topic字元型100長度,content字元型1000長度)

3).在資料庫版本變化時請删除diary表,并重新建立出diary表。

實作代碼:

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class DiarySQLiteOpenHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "diaryOpenHelper.db";
    public static final int DATABASE_VERSION = ;

    public DiarySQLiteOpenHelper(Context context, String name,
            CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

    public DiarySQLiteOpenHelper(Context context) {
        this(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String sql = "create table if not exists diary" + "("
                + "_id integer primary key autoincrement,"
                + "topic varchar(100)," + "content varchar(1000)" + ")";
        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        String sql = "drop table if exists diary";
        db.execSQL(sql);
        this.onCreate(db);
    }
}
           

繼續閱讀