Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> Android面試題(1),android面試題

Android面試題(1),android面試題

編輯:關於android開發

Android面試題(1),android面試題


1.  Java語言基本數據類型有哪些?分別占用的內存空間是多少?

答:

byte(1字節),boolean(1字節),char(2字節),short(2字節),int(4字節),float(4字節),long(8字節),double(8字節)。

 

2.  &和&&的區別。

答:

&:數值運算時為按位與運算,邏輯值運算時分別計算兩個表達式的值,再作與運算;

&&:邏輯與運算符,先計算第一個表達式的值,如果為true,那就計算第二個表達式的值,再作與運算,如果為false,不計算第二個表達式,直接返回false(常用)。

 

 

3.  sleep() 和 wait() 有什麼區別?

答:

sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他

線程,但是監控狀態依然保持,到時後會自動恢復。調用 sleep 不會釋放對象鎖。

wait是 Object 類的方法,對此對象調用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出 notify方法(或 notifyAll)後本線程才進入對象鎖定池准備獲得對象鎖進入運行狀態。

 

4.  Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?

答:

方法的重寫 Overriding 和重載 Overloading是 Java多態性的不同表現。重寫 Overriding是父類與子類之間多態性的一種表現,重載 Overloading 是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數, 我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded 的方法是可以改變返回值的類型。

 

 

5.  給出一個數列2,5,12,56,70,8,使用冒泡排序法實現排序後輸出。

答:

public class SortDemo{

    public static void main(String[] args){

        int[] nums = {2,3,12,56,70,8};

        for(int i=0;i<nums.length-1;i++){

  for(int j=0;j<nums.length-i-1;j++){

  if(nums[j]>nums{j+1}){

  int temp = nums[j];

  nums[j]=nums[j+1];

nums[j+1] = temp;

}

}

}

System.out.println(“排序後的結果為:”);

for(int i=0;i<nums.length;i++){

  System.out.print(nums[i]+” ”);

}

}

}

 

6.  寫出Singleton模式的代碼實現。

Singleton 模式主要作用是保證在 Java 應用程序中,一個類 Class 只有一個實例存在。

一般 Singleton 模式通常有幾種種形式:

第一種形式: 定義一個類,它的構造函數為 private 的,它有一個 static的 private的該類變量,在類初始化時實例話,通過一個 public 的getInstance方法獲取對它的引用,繼而調用其中的方法。

public class Singleton {

    private Singleton(){}

    //在自己內部定義自己一個實例,是不是很奇怪?

    //注意這是 private 只供內部調用

    private static Singleton instance = new Singleton();

    //這裡提供了一個供外部訪問本 class 的靜態方法,可以直接訪問  

    public static Singleton getInstance() {

        return instance;   

    } 

第二種形式: 

public class Singleton {  

    private static Singleton instance = null;

    public static synchronized Singleton getInstance() {

        //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     

        //使用時生成實例,提高了效率!

        if (instance==null)

            instance=new Singleton();

            return instance;  

        } 

    }

}

其他形式:

定義一個類,它的構造函數為 private 的,所有方法為 static 的。

一般認為第一種形式要更加安全些

 

7.  實現一個線程的方式有幾種,分別寫出示例代碼。

答:

兩種方式,分別是繼承Thread類和實現Runnable接口

1、繼承Thread類:

public class ThreadDemo extends Thread{

  public void run(){

  //實現代碼

}

}

啟動線程

new ThreadDemo().start();

 

2、實現Runnable接口

public class ThreadDemo implements Runnable{

  public void run(){

  //實現代碼

}

}

啟動線程

new Thread(new ThreadDemo()).start();

 

8.  try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?

答:

會,在return前執行

 

9.  用最有效率的方法算出2乘以8等於幾?

答:

2<<3

 

10.面向對象的特征有哪些?簡單闡述自己的理解。

(1).抽象:

抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

(2).繼承:

繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。

(3).封裝:

封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。

(4). 多態性:

多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

 

11.RuntimeExcepion與Exception的區別

答 :

異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

 

12.String與StringBuffer的區別。

答:

String的長度是不可變的,StringBuffer的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法

 

13.列出最少10個常用的IO實現類。

FileInputStream,FileOutputStream,FileReader,FileWriter,BufferedInputStream,

BufferedOutputStream,BufferedReader,InputStreamReader,PrintStream,PrintWriter

 

14.Vector類和ArrayList類的區別

答:

ArrayList與Vector主要從二方面來說.

一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的

二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半

 

15.abstract class和interface有什麼區別?

答:

聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法

接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然後,它可以在實現了該接口的類的任何對象上調用接口的方法。由於有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口

 

16.事務是什麼?

事務是單個邏輯工作單元,要麼全部做完,要麼全部不做,事務由兩種狀態,一個提交一個回滾。事務由四個特性ACID,原子性、一致性、隔離性和永遠性。

 

17.寫出查詢數據庫表的JDBC的連接步驟。

1、加載JDBC驅動程序

2、提供連接URL

3、建立一個數據庫的連接

4、創建一個Statement

5、執行SQL語句

6、處理結果

7、關閉JDBC對象

 

18.更新Student表中id為10的記錄,把name字段的值改為”jack”,age字段的值改為25,寫出SQL語句。

update Student set name=’jack’,age=25 where id=10

 

19.寫出查詢Student表中記錄總數的SQL語句

Select count(id) from student

 

20.在JDBC編程中,Statement與PreparedStatement有什麼區別

1、Statement使用字符串拼接的方式編寫SQL語句,PreparedStatement使用占位符的方式編寫SQL語句,PreparedStatement方式的可讀性和可維護性更強;

2、PreparedStatement盡最大可能提高性能,在被DB的編譯器編譯後的執行代碼被緩存下來,那麼下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中就會得到執行,而Statement則每次執行都必須編譯語句。

3、PreparedStatement具有防SQL注入的安全處理,而Statement容易被SQL注入,安全性差

 

21.Collection 和 Collections的區別

答:Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.

Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作

 

22.分別解釋java中的4種訪問修飾符的用法。

作用域     當前類   同一package      子孫類       其他package
public       √          √             √             √
protected    √          √             √             ×
friendly     √          √             ×             ×
private      √          ×             ×             ×

 

23.     常用的設計模式有哪些,並闡述作用。

Java 中的 23 種設計模式:

Factory(工廠模式),      Builder(建造模式),       Factory Method(工廠方法

模式),

Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),

Adapter(適配器模式),    Bridge(橋梁模式),        Composite(合成模式),

Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),

Command(命令模式),      Interpreter(解釋器模式), Visitor(訪問者模式),

Iterator(迭代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),

Observer(觀察者模式),   State(狀態模式),         Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

 

24.     請簡述Android的四大基本組件。

Android四大基本組件分別是Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器。

Activity :

應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監聽並處理用戶的事件做出響應。

BroadcastReceive廣播接收器:

你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收並做出響應。

Service 服務:

一個Service 是一段長生命周期的,沒有用戶界面的程序,可以用來開發如監控類程序。

Content Provider內容提供者 :

android平台提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。

 

25.     請簡述Handler工作機制。

andriod提供了 Handler 和 Looper 來滿足線程間的通信。

Handler 先進先出原則。

Looper類用來管理特定線程內對象之間的消息交換(Message Exchange)。

 

1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程裡的Message Queue(消息隊列)。

2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到Message Queue裡;或者接收Looper從Message Queue取出)所送來的消息。

3) Message Queue(消息隊列):用來存放線程放入的消息。

4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。

 

26.     在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對數據庫版本進行管理的方法是哪兩個?

public void onCreate(SQLiteDatabase db) {}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}

 

27.     Android中常用的五種布局分別是?

AbsoluteLayout,FrameLayout,LinearLayout,RelativeLayout,TableLayout

 

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

SharedPreferences

文件

SQLite數據庫

ContentProvider

網絡

 

29.     android 中有哪幾種方式解析xml?分別有什麼優缺點?

3種

SAX: 優點:占用內存小,解析速度快,解析屬性方便,缺點:靈活性較差

DOM: 優點:可以任意讀取節點,靈活性高,API與集合類似,缺點:占用一定的內存空間

PULL: 與SAX原理類似具備SAX方式的所有優點,不同的地方是,PULL提供了更方便解析的API,方便操作

 

 

30.     談談Android的IPC(或稱RPC)機制

IPC是內部進程通信的簡稱,是共享“命名管道”的資源。Android中的IPC機制是為了讓Activity和Service之間的通信,類似於遠程方法調用,類似於C/S模式的訪問。通過定義AIDL接口文件來定義IPC接口。Server端實現IPC接口,Client端調用IPC接口本地代理。

 

31.     編程題:實現網絡文件下載功能

要求:

(1)       下載地址為:http://www.github.com/finally-vince/android.rar

(2)       下載目的地:android手機sdcard根目錄

(3)       寫出核心方法即可。

         public String download(){

                            String actionUrl = "http://www.github.com/finally-vince/android.rar";

                            try {

                                     URL url = new URL(actionUrl);

                                     URLConnection conn = url.openConnection();

                                     int start = actionUrl.lastIndexOf(".");

                                     String filename = actionUrl.substring(start);

                                     BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

                                     BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/sdcard/"+System.currentTimeMillis()+filename));

                                     int len =-1;

                                     byte[] bytes = new byte[1024*10];

                                     while((len=bis.read(bytes))!=-1){

                                               bos.write(bytes,0,len);

                                     }

                                     bos.close();

                                     bis.close();

                                     return "success";

                            } catch (IOException e) {

                                     e.printStackTrace();

                                     return "error";

                            }

         }

 

 

簡答題

注意:在答題前請在答題卡上寫好姓名,答案填寫在答題卡上。

 

1.  Java語言基本數據類型有哪些?分別占用的內存空間是多少?

答:

byte(1字節),boolean(1字節),char(2字節),short(2字節),int(4字節),float(4字節),long(8字節),double(8字節)。

 

2.  &和&&的區別。

答:

&:數值運算時為按位與運算,邏輯值運算時分別計算兩個表達式的值,再作與運算;

&&:邏輯與運算符,先計算第一個表達式的值,如果為true,那就計算第二個表達式的值,再作與運算,如果為false,不計算第二個表達式,直接返回false(常用)。

 

 

3.  sleep() 和 wait() 有什麼區別?

答:

sleep 是線程類(Thread)的方法,導致此線程暫停執行指定時間,給執行機會給其他

線程,但是監控狀態依然保持,到時後會自動恢復。調用 sleep 不會釋放對象鎖。

wait是 Object 類的方法,對此對象調用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出 notify方法(或 notifyAll)後本線程才進入對象鎖定池准備獲得對象鎖進入運行狀態。

 

4.  Overload和Override的區別。Overloaded的方法是否可以改變返回值的類型?

答:

方法的重寫 Overriding 和重載 Overloading是 Java多態性的不同表現。重寫 Overriding是父類與子類之間多態性的一種表現,重載 Overloading 是一個類中多態性的一種表現。如果在子類中定義某方法與其父類有相同的名稱和參數, 我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載(Overloading)。Overloaded 的方法是可以改變返回值的類型。

 

 

5.  給出一個數列2,5,12,56,70,8,使用冒泡排序法實現排序後輸出。

答:

public class SortDemo{

    public static void main(String[] args){

        int[] nums = {2,3,12,56,70,8};

        for(int i=0;i<nums.length-1;i++){

  for(int j=0;j<nums.length-i-1;j++){

  if(nums[j]>nums{j+1}){

  int temp = nums[j];

  nums[j]=nums[j+1];

nums[j+1] = temp;

}

}

}

System.out.println(“排序後的結果為:”);

for(int i=0;i<nums.length;i++){

  System.out.print(nums[i]+” ”);

}

}

}

 

6.  寫出Singleton模式的代碼實現。

Singleton 模式主要作用是保證在 Java 應用程序中,一個類 Class 只有一個實例存在。

一般 Singleton 模式通常有幾種種形式:

第一種形式: 定義一個類,它的構造函數為 private 的,它有一個 static的 private的該類變量,在類初始化時實例話,通過一個 public 的getInstance方法獲取對它的引用,繼而調用其中的方法。

public class Singleton {

    private Singleton(){}

    //在自己內部定義自己一個實例,是不是很奇怪?

    //注意這是 private 只供內部調用

    private static Singleton instance = new Singleton();

    //這裡提供了一個供外部訪問本 class 的靜態方法,可以直接訪問  

    public static Singleton getInstance() {

        return instance;   

    } 

第二種形式: 

public class Singleton {  

    private static Singleton instance = null;

    public static synchronized Singleton getInstance() {

        //這個方法比上面有所改進,不用每次都進行生成對象,只是第一次     

        //使用時生成實例,提高了效率!

        if (instance==null)

            instance=new Singleton();

            return instance;  

        } 

    }

}

其他形式:

定義一個類,它的構造函數為 private 的,所有方法為 static 的。

一般認為第一種形式要更加安全些

 

7.  實現一個線程的方式有幾種,分別寫出示例代碼。

答:

兩種方式,分別是繼承Thread類和實現Runnable接口

1、繼承Thread類:

public class ThreadDemo extends Thread{

  public void run(){

  //實現代碼

}

}

啟動線程

new ThreadDemo().start();

 

2、實現Runnable接口

public class ThreadDemo implements Runnable{

  public void run(){

  //實現代碼

}

}

啟動線程

new Thread(new ThreadDemo()).start();

 

8.  try {}裡有一個return語句,那麼緊跟在這個try後的finally {}裡的code會不會被執行,什麼時候被執行,在return前還是後?

答:

會,在return前執行

 

9.  用最有效率的方法算出2乘以8等於幾?

答:

2<<3

 

10.面向對象的特征有哪些?簡單闡述自己的理解。

(1).抽象:

抽象就是忽略一個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是數據抽象。

(2).繼承:

繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。對象的一個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和實例變量,並且類可以修改或增加新的方法使之更適合特殊的需要。

(3).封裝:

封裝是把過程和數據包圍起來,對數據的訪問只能通過已定義的界面。面向對象計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的對象,這些對象通過一個受保護的接口訪問其他對象。

(4). 多態性:

多態性是指允許不同類的對象對同一消息作出響應。多態性包括參數化多態性和包含多態性。多態性語言具有靈活、抽象、行為共享、代碼共享的優勢,很好的解決了應用程序函數同名問題。

 

11.RuntimeExcepion與Exception的區別

答 :

異常表示程序運行過程中可能出現的非正常狀態,運行時異常表示虛擬機的通常操作中可能遇到的異常,是一種常見運行錯誤。java 編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。

 

12.String與StringBuffer的區別。

答:

String的長度是不可變的,StringBuffer的長度是可變的。如果你對字符串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法

 

13.列出最少10個常用的IO實現類。

FileInputStream,FileOutputStream,FileReader,FileWriter,BufferedInputStream,

BufferedOutputStream,BufferedReader,InputStreamReader,PrintStream,PrintWriter

 

14.Vector類和ArrayList類的區別

答:

ArrayList與Vector主要從二方面來說.

一.同步性:Vector是線程安全的,也就是說是同步的,而ArrayList是線程序不安全的,不是同步的

二.數據增長:當需要增長時,Vector默認增長為原來一培,而ArrayList卻是原來的一半

 

15.abstract class和interface有什麼區別?

答:

聲明方法的存在而不去實現它的類被叫做抽象類(abstract class),它用於要創建一個體現某些基本行為的類,並為該類聲明方法,但不能在該類中實現該類的情況。不能創建abstract 類的實例。然而可以創建一個變量,其類型是一個抽象類,並讓它指向具體子類的一個實例。不能有抽象構造函數或抽象靜態方法。Abstract 類的子類為它們父類中的所有抽象方法提供實現,否則它們也是抽象類為。取而代之,在子類中實現該方法。知道其行為的其它類可以在類中實現這些方法

接口(interface)是抽象類的變體。在接口中,所有方法都是抽象的。多繼承性可通過實現這樣的接口而獲得。接口中的所有方法都是抽象的,沒有一個有程序體。接口只可以定義static final成員變量。接口的實現與子類相似,除了該實現類不能從接口定義中繼承行為。當類實現特殊接口時,它定義(即將程序體給予)所有這種接口的方法。然後,它可以在實現了該接口的類的任何對象上調用接口的方法。由於有抽象類,它允許使用接口名作為引用變量的類型。通常的動態聯編將生效。引用可以轉換到接口類型或從接口類型轉換,instanceof 運算符可以用來決定某對象的類是否實現了接口

 

16.事務是什麼?

事務是單個邏輯工作單元,要麼全部做完,要麼全部不做,事務由兩種狀態,一個提交一個回滾。事務由四個特性ACID,原子性、一致性、隔離性和永遠性。

 

17.寫出查詢數據庫表的JDBC的連接步驟。

1、加載JDBC驅動程序

2、提供連接URL

3、建立一個數據庫的連接

4、創建一個Statement

5、執行SQL語句

6、處理結果

7、關閉JDBC對象

 

18.更新Student表中id為10的記錄,把name字段的值改為”jack”,age字段的值改為25,寫出SQL語句。

update Student set name=’jack’,age=25 where id=10

 

19.寫出查詢Student表中記錄總數的SQL語句

Select count(id) from student

 

20.在JDBC編程中,Statement與PreparedStatement有什麼區別

1、Statement使用字符串拼接的方式編寫SQL語句,PreparedStatement使用占位符的方式編寫SQL語句,PreparedStatement方式的可讀性和可維護性更強;

2、PreparedStatement盡最大可能提高性能,在被DB的編譯器編譯後的執行代碼被緩存下來,那麼下次調用時只要是相同的預編譯語句就不需要編譯,只要將參數直接傳入編譯過的語句執行代碼中就會得到執行,而Statement則每次執行都必須編譯語句。

3、PreparedStatement具有防SQL注入的安全處理,而Statement容易被SQL注入,安全性差

 

21.Collection 和 Collections的區別

答:Collection是集合類的上級接口,繼承與他的接口主要有Set 和List.

Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各種集合的搜索、排序、線程安全化等操作

 

22.分別解釋java中的4種訪問修飾符的用法。

作用域     當前類   同一package      子孫類       其他package
public       √          √             √             √
protected    √          √             √             ×
friendly     √          √             ×             ×
private      √          ×             ×             ×

 

23.     常用的設計模式有哪些,並闡述作用。

Java 中的 23 種設計模式:

Factory(工廠模式),      Builder(建造模式),       Factory Method(工廠方法

模式),

Prototype(原始模型模式),Singleton(單例模式),    Facade(門面模式),

Adapter(適配器模式),    Bridge(橋梁模式),        Composite(合成模式),

Decorator(裝飾模式),    Flyweight(享元模式),     Proxy(代理模式),

Command(命令模式),      Interpreter(解釋器模式), Visitor(訪問者模式),

Iterator(迭代子模式),   Mediator(調停者模式),    Memento(備忘錄模式),

Observer(觀察者模式),   State(狀態模式),         Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

 

24.     請簡述Android的四大基本組件。

Android四大基本組件分別是Activity,Service服務,Content Provider內容提供者,BroadcastReceiver廣播接收器。

Activity :

應用程序中,一個Activity通常就是一個單獨的屏幕,它上面可以顯示一些控件也可以監聽並處理用戶的事件做出響應。

BroadcastReceive廣播接收器:

你的應用可以使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收並做出響應。

Service 服務:

一個Service 是一段長生命周期的,沒有用戶界面的程序,可以用來開發如監控類程序。

Content Provider內容提供者 :

android平台提供了Content Provider使一個應用程序的指定數據集提供給其他應用程序。

 

25.     請簡述Handler工作機制。

andriod提供了 Handler 和 Looper 來滿足線程間的通信。

Handler 先進先出原則。

Looper類用來管理特定線程內對象之間的消息交換(Message Exchange)。

 

1)Looper: 一個線程可以產生一個Looper對象,由它來管理此線程裡的Message Queue(消息隊列)。

2)Handler: 你可以構造Handler對象來與Looper溝通,以便push新消息到Message Queue裡;或者接收Looper從Message Queue取出)所送來的消息。

3) Message Queue(消息隊列):用來存放線程放入的消息。

4)線程:UI thread 通常就是main thread,而Android啟動程序時會替它建立一個Message Queue。

 

26.     在android中使用SQLiteOpenHelper這個輔助類時,可以生成一個數據庫,並可以對數據庫版本進行管理的方法是哪兩個?

public void onCreate(SQLiteDatabase db) {}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}

 

27.     Android中常用的五種布局分別是?

AbsoluteLayout,FrameLayout,LinearLayout,RelativeLayout,TableLayout

 

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

SharedPreferences

文件

SQLite數據庫

ContentProvider

網絡

 

29.     android 中有哪幾種方式解析xml?分別有什麼優缺點?

3種

SAX: 優點:占用內存小,解析速度快,解析屬性方便,缺點:靈活性較差

DOM: 優點:可以任意讀取節點,靈活性高,API與集合類似,缺點:占用一定的內存空間

PULL: 與SAX原理類似具備SAX方式的所有優點,不同的地方是,PULL提供了更方便解析的API,方便操作

 

 

30.     談談Android的IPC(或稱RPC)機制

IPC是內部進程通信的簡稱,是共享“命名管道”的資源。Android中的IPC機制是為了讓Activity和Service之間的通信,類似於遠程方法調用,類似於C/S模式的訪問。通過定義AIDL接口文件來定義IPC接口。Server端實現IPC接口,Client端調用IPC接口本地代理。

 

31.     編程題:實現網絡文件下載功能

要求:

(1)       下載地址為:http://www.github.com/finally-vince/android.rar

(2)       下載目的地:android手機sdcard根目錄

(3)       寫出核心方法即可。

         public String download(){

                            String actionUrl = "http://www.github.com/finally-vince/android.rar";

                            try {

                                     URL url = new URL(actionUrl);

                                     URLConnection conn = url.openConnection();

                                     int start = actionUrl.lastIndexOf(".");

                                     String filename = actionUrl.substring(start);

                                     BufferedInputStream bis = new BufferedInputStream(conn.getInputStream());

                                     BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("/sdcard/"+System.currentTimeMillis()+filename));

                                     int len =-1;

                                     byte[] bytes = new byte[1024*10];

                                     while((len=bis.read(bytes))!=-1){

                                               bos.write(bytes,0,len);

                                     }

                                     bos.close();

                                     bis.close();

                                     return "success";

                            } catch (IOException e) {

                                     e.printStackTrace();

                                     return "error";

                            }

         }

 

http://www.bkjia.com/Androidjc/1192462.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/1192462.htmlTechArticleAndroid面試題(1),android面試題 1. Java 語言基本數據類型有哪些?分別占用的內存空間是多少? 答: byte(1 字節 ) , boolean(1 字節 ) , cha...

    No
  1. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved