Android面試複習

一、Activity的生命週期java

二、Service的生命週期android

三、Service和Activity在同一個線程嗎c++

默認狀況下是在同一個主線程中。但能夠經過清單中android:process屬性配置不一樣的進程。數據庫

四、java中的soft reference是個什麼東西緩存

    若是一個對象只具備軟引用,則內存空間足夠,垃圾回收器就不會回收它;若是內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就能夠被程序使用。軟引用可用來實現內存敏感的高速緩存。網絡

    軟引用能夠和一個引用隊列(ReferenceQueue)聯合使用,若是軟引用所引用的對象被垃圾回收器回收,Java虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。socket

5,內部類機制ide

1、定義oop

放在一個類的內部的類咱們就叫內部類。post

2、 做用

1).內部類能夠很好的實現隱藏

 通常的非內部類,是不容許有 private 與protected權限的,但內部類能夠

2).內部類擁有外圍類的全部元素的訪問權限

3).但是實現多重繼承

4).能夠避免修改接口而實現同一個類中兩種同名方法的調用

6,說一下java中的封裝、抽象、繼承和多態

封裝在面嚮對象語言中,封裝特性是由類來體現的,咱們將現實生活中的一類實體定義成類,其中包括屬性和行爲(在Java中就是方法),就好像人類,           能夠具備name,sex,age等屬性,同時也具備eat(),sleep()等行爲,咱們在行爲中實現必定的功能,也可操做屬性,這是面向對象的封裝特性; 
抽象抽象就是將一類實體的共同特性抽象出來,封裝在一個抽象類中,因此抽象在面嚮對象語言是由抽象類來體現的。好比鳥就是一個抽象實體,由於抽象         實體並非一個真正的對象,它的屬性還不能徹底描述一個對象,因此在語言中體現爲抽象類不能實例化; 
繼承繼承就像是咱們現實生活中的父子關係,兒子能夠遺傳父親的一些特性,在面嚮對象語言中,就是一個類能夠繼承另外一個類的一些特性,從而能夠代碼         重用,其實繼承體現的是is-a關係,父類同子類在本質上仍是一類實體; 
多態多態就是經過傳遞給父類對象引用不一樣的子類對象從而表現出不一樣的行爲,多態可爲程序提供更好的可擴展性,一樣也能夠代碼重用。

7,private、protected、default、public

一、private修飾詞,表示成員是私有的,只有自身能夠訪問;   

二、protected,表示受保護權限,體如今繼承,即子類能夠訪問父類受保護成員,同時相同包內的其餘類也能夠訪問protected成員。   

三、無修飾詞(默認),表示包訪問權限(friendly, java語言中是沒有friendly這個修飾符的,這樣稱呼應該是來源於c++ ),同一個包內能夠訪問,訪問權限是包級訪問權限;  

四、public修飾詞,表示成員是公開的,全部其餘類均可以訪問;

8,說一下你對service的理解

   service是四大組件之一,適用於處理長時間操做又不須要與用戶交互的狀況或者提供與其餘應用程序交互的功能。

9,四大組件都用過哪些,簡單的介紹一下它們的用法

Activity :

     應用程序中,一個Activity一般就是一個單獨的屏幕,它上面能夠顯示一些控件也能夠監聽並處理用戶的事件作出響應。

BroadcastReceiver廣播接收器:

    應用程序可使用它對外部事件進行過濾只對感興趣的外部事件(如當電話呼入時,或者數據網絡可用時)進行接收並作出響應。廣播接收器沒有用戶界面。然而,它們能夠啓動一個activity或serice 來響應它們收到的信息,或者用NotificationManager 來通知用戶。通知能夠用不少種方式來吸引用戶的注意力──閃動背燈、震動、播放聲音等。通常來講是在狀態欄上放一個持久的圖標,用戶能夠打開它並獲取消息。

Service 服務:

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

Content Provider內容提供者 :

     android平臺提供了Content Provider使一個應用程序的指定數據集提供給其餘應用程序。這些數據能夠存儲在文件系統中、在一個SQLite數據庫、或以任何其餘合理的方式。其餘應用能夠經過ContentResolver類(見ContentProviderAccessApp例子)從該內容提供者中獲取或存入數據.(至關於在應用外包了一層殼),只有須要在多個應用程序間共享數據是才須要內容提供者。例如,通信錄數據被多個應用程序使用,且必須存儲在一個內容提供者中。

    它的好處:統一數據訪問方式。

10,udp和TCP的不一樣之處

UDP:1,每一個數據報中都給出了完整的地址信息,所以無須要創建發送方和接收方的鏈接。          

         2 ,UDP傳輸數據時是有大小限制的,每一個被傳輸的數據報必須限定在64KB以內。         

         3,UDP是一個不可靠的協議,發送方所發送的數據報並不必定以相同的次序到達接收方 

TCP1,面向鏈接的協議,在socket之間進行數據傳輸以前必然要創建鏈接,因此在TCP中須要鏈接時間。          

         2,TCP傳輸數據大小限制,一旦鏈接創建起來,雙方的socket就能夠按統一的格式傳輸大的數據。 

         3,TCP是一個可靠的協議,它確保接收方徹底正確地獲取發送方所發送的所有數據。

11,在哪些狀況下java代碼中須要調用C代碼

     一、在程序對時間敏感或對性能要求特別高時,有必要用更底層的語言

     二、在已經有現成的用其餘語言完成的功能時,須要用java直接調用

     三、在須要用到java標準平臺不具有的依賴於操做系統的特性時

12,介紹一下android中的task

    Task,簡單的說,就是一組以棧的模式彙集在一塊兒的Activity組件集合。它們有潛在的先後驅關聯,新加入的Activity組件,位於棧頂,並僅有在棧頂的Activity,纔會有機會與用戶進行交互。而當棧頂的 Activity完成使命退出的時候,Task會將其退棧,並讓下一個將跑到棧頂的Activity來於用戶面對面,直至棧中再無更多 Activity,Task結束。

13,Activity的啓動模式 

Activity啓動模式設置:

         <activity android:name=".MainActivity" android:launchMode="standard" />

Activity的四種啓動模式:

    1. standard

        模式啓動模式,每次激活Activity時都會建立Activity,並放入任務棧中。

    2. singleTop

        若是在任務的棧頂正好存在該Activity的實例, 就重用該實例,否者就會建立新的實例並放入棧頂(即便棧中已經存在該Activity實例,只要不在棧頂,都會建立實例)。 

    3. singleTask

        若是在棧中已經有該Activity的實例,就重用該實例(會調用實例的onNewIntent())。重用時,會讓該實例回到棧頂,所以在它上面的實例將會被移除棧。若是棧中不存在該實例,將會建立新的實例放入棧中。 

    4. singleInstance

        在一個新棧中建立該Activity實例,並讓多個應用共享此棧中的該Activity實例。一旦該模式的Activity的實例存在於某個棧中,任何應用再激活該Activity時都會重用該棧中的實例,其效果至關於多個應用程序共享一個應用,無論誰激活該Activity都會進入同一個中。

15,java中final定義的類有什麼特色

     不能被繼承

16.service裏面能夠彈土司麼

     能夠。     

 Handler handler=new Handler(Looper.getMainLooper());  
        handler.post(new Runnable(){  
            public void run(){  
                Toast.makeText(getApplicationContext(), "Hello Android!", Toast.LENGTH_LONG).show();  
            }  
        });
相關文章
相關標籤/搜索