android面試題及答案

JAVAjava

1.GC是什麼? 爲何要有GC?
GC是垃圾收集的意思(Gabage Collection),內存處理是編程人員容易出現問題的地方,忘記或者錯誤的內存回收會致使程序或系統的不穩定甚至崩潰,Java提供的GC功能能夠自動監測對象是否超過做用域從而達到自動回收內存的目的,Java語言沒有提供釋放已分配內存的顯示操做方法。
 
2.XML包括哪些解釋技術,區別是什麼?
DOM和SAX
DOM將文檔解析成一顆文檔樹,可在節點上進行遍歷、增長、修改和刪除。一次性讀入內存,對內存消耗大。
SAX至上而下解析文檔,以事件進行驅動。不會一次性讀入內存,對內存消耗小,不能任意讀取節點,而且不能對節點進行增長、修改和刪除。
 
3.switch語句可否做用在byte上,可否做用在long上,可否做用在String上?
switch能做用在byte、char、short和int上,JDK1.7後能夠做用在String上。
 
4."=="和equals方法究竟有什麼區別?
==和equals均可以比較地址。==是運算符,equals是方法,方法能夠經過重寫改變其行爲,如String的equals就是比較字符串內容。
 
5.構造方法可否被重寫和重載?
構造方法不能被重寫可是能被重載。
 
6.面向對象的特徵有哪些?
封裝、繼承、多態和抽象。
7.抽象類和接口的區別?
1).抽象類是abstract class修飾,接口是interface修飾。
2).抽象類能夠有任意類型的屬性,接口只能有靜態常量修飾的屬性。
3).抽象類能夠有普通方法和抽象法方法,接口的方法都是抽象方法。
4).抽象類和接口都不能實例化,可是抽象類有構造方法,接口沒有構造方法。
5).抽象類只能單根繼承,接口能夠多重實現。
 
8.內部類能夠引用它的包含類的成員嗎?有沒有什麼限制? 
能夠引用。若是須要指定當前類時要用外部類.this來引用。若是引用局部變量,須要將局部變量指定爲final。
 
9.String s = new String("xyz");建立了幾個String Object? 兩者之間有什麼區別?
2個對象。"xyz"建立在字符串常量池中,new String()建立在堆中。
 
10.try {}裏有一個return語句,那麼緊跟在這個try後的finally {}裏的code會不會被執行,何時被執行,在return前仍是後? 
會在return前執行。
 
11.Integer與int的區別
Integer爲包裝類,int是基本數據類型。包裝類擁有方法和屬性,基本數據類型不具有。包裝類能夠經過intValue來轉換成基本數據類型,也能夠經過new Integer()將基本數據類型轉換爲包裝類。在JDK1.5後,包裝類和基本數據類型能夠實現自動轉換。
 
12.sleep()和wait()有什麼區別?
sleep是Thread類的方法,wait是Object類的方法。
sleep是自動喚醒,wait須要其餘線程來喚醒。
sleep不會釋放同步鎖,wait會釋放同步鎖。
sleep能夠用在任意方法中,wait只能用在同步方法或同步塊中。
 
13.Sleep() 不會釋放對象鎖 到時自動恢復 wait()會釋放對象鎖 進入等待此對象的等待鎖定池 發出notify()方法後 才進入等待鎖定池準備對象鎖的獲取進入運行狀態
 
14.同步和異步有何異同,在什麼狀況下分別使用他們?
同步指同一時間只能一個線程執行該方法,其餘線程須要等待。異步指多個線程能夠同時執行某個方法,並共享同一資源。
同步可讓訪問的資源具備安全性,由於同一時間只能一個線程對其進行訪問。可是效率不高。
異步對訪問的資源會形成不穩定性,好比多個線程同時訪問一個資源,一個在修改、一個在刪除、一個在讀取,這樣可能會形成資源的混亂。可是因爲同時運行,執行效率獲得提升。
 
15.啓動一個線程是用run()仍是start()? 
start()方法啓動線程,run方法是線程執行的主方法。
 
16.java中有幾種類型的流?JDK爲每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?
java中有三種流,分別是字節流(InputStream、OutputStream)、字符流(Reader、Writer)、對象流(ObjectInputStream、ObjectOutputStream)。
 
17.字節流與字符流的區別?
字節流用於讀取或寫出二進制數據,好比圖片、影像等數據。
字符流用於讀取或寫出字符數據,好比傳輸字符串。
全部的數據均可以經過字節流來進行處理,不過若是是字符數據,用字節流還須要進行轉換後傳輸,若是使用字符流能夠方便數據的轉換。
 
18.error和exception有什麼區別?
error是系統錯誤,代碼不能處理的錯誤,好比內存溢出、堆棧溢出等。
exception是程序異常,能夠經過代碼try-catch進行處理,好比空指針異常,數組越界等。
 
19.談談final,finally,finalize的區別?
final是修飾符,能夠修飾類(不能被繼承)、屬性(常量)、和方法(不能被重寫)。
finally是異常處理塊中的代碼塊,表示不管如何都會執行的代碼塊。
finalize是Object類的方法,該方法在對象被垃圾回收以前執行的方法。
 
20.當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
若是其餘方法沒有加synchronized的話是能夠進入的。
 
21.當一個對象被看成參數傳遞到一個方法後,此方法可改變這個對象的屬性,並可返回變化後的結果,那麼這裏究竟是值傳遞仍是引用傳遞?
java中只有值傳遞,若是傳遞的對象,實際也是傳遞該對象的地址。
 
22.做用域public,private,protected,以及不寫時的區別
public公共修飾符,表示任意類均可以訪問。
protected爲受保護的修飾符,表示同類、同包以及不一樣包可是父子關係的是能夠訪問。
不寫表示默認修飾符,或者稱爲package修飾符,該修飾符表示只有同類或同包下的類能夠訪問,出了這個包就不能訪問了。
private爲私有修飾符,表示只有同類中能夠訪問,出了這個類就不能訪問了。
 
23.用最有效率的方法算出2乘以8等於幾 2《 3
將2的二進制向左移3位。java中用<<來移位。
 
24.heap和stack有什麼區別。
heap表示堆,stack表示棧。堆中放對象,棧中放引用變量。
堆空間是一個無序的空間,棧是先進後出的結構。
 
25.運行時異常與通常異常有何異
運行時異常是指繼承於RuntimeException的異常,這些異常在編譯時能夠不進行處理,當運行時若是出現問題纔會拋出。如NullPointException、ArrayIndexOutOfBoundsException
通常異常也稱爲編譯時異常,這些異常是繼承Exception但又不屬於RuntimeException的子類,若是程序中出現這些異常,在編譯時必須進行捕獲或拋出,不然編譯沒法經過。如IOException、FileNotFoundException
 
26.垃圾回收的優勢和原理。並考慮2種回收機制
Java語言中一個顯著的特色就是引入了垃圾回收機制,使c++程序員最頭疼的內存管理的問題迎刃而解,它使得Java程序員在編寫程序的時候再也不須要考慮內存管理。因爲有個垃圾回收機制,Java中的對象再也不有"做用域"的概念,只有對象的引用纔有"做用域"。垃圾回收能夠有效的防止內存泄露,有效的使用可使用的內存。垃圾回收器一般是做爲一個單獨的低級別的線程運行,不可預知的狀況下對內存堆中已經死亡的或者長時間沒有使用的對象進行清楚和回收,程序員不能實時的調用垃圾回收器對某個對象或全部對象進行垃圾回收。回收機制有分代複製垃圾回收和標記垃圾回收,增量垃圾回收。
 
27.描述一下JVM加載class文件的原理機制?
JVM中類的裝載是由ClassLoader和它的子類來實現的,Java ClassLoader 是一個重要的Java運行時系統組件。它負責在運行時查找和裝入類文件的類。
 
28.是否能夠從一個static方法內部發出對非static方法的調用?
不能,除非先建立非static方法所在類的對象。
 
29.什麼是java序列化,如何實現java序列化?
 
30.使用serializable關鍵字 使用一個輸出流構造一個對象流流對象 而後使用對象流對象的writeObject()就能夠將參數爲obj的對象寫出
 
31.Anonymous Inner Class(匿名內部類)是否能夠extends(繼承)其它類,是否能夠implements(實現)interface(接口)?
匿名內部類能夠繼承類或實現接口,但不是顯示的使用extends或implements來繼承或實現。
 
32.ArrayList和Vector的區別,HashMap和Hashtable的區別?
ArrayList是JDK1.2的集合類而且線程不安全,Vector是1.0的集合類而且線程安全,兩者用法相似。
HashMap線程不安全且能放空鍵或空值,Hashtable線程安全且不能放空鍵或空值。
 
33.String 和StringBuffer有什麼差異?在什麼狀況下使用它們?
String字符串的基本類,該字符串是不可變的。StringBuffer是利用堆來存儲字符串,而且能夠對字符串的內容進行改變。
 
34.new一個類對象和使用類名建立一個對象有什麼區別?兩者使用時應該注意什麼?
new對象是最多見的建立對象的方式,利用類模板是經過反射來建立對象。雖然new對象時在底層也會經過類模板來建立對象,可是new對象的效率要比直接經過類模板建立對象的方式要高。
可是使用類模板的方式可讓程序的靈活性提升。
 
35.LinkedList和ArrayList的區別?
1)LinkedList是鏈表結構的集合,ArrayList數組結構的集合。
2)LinkedList在中間或前面增長或刪除數據時效率比ArrayList高。
3)LinkedList在最後添加或刪除數據時效率比ArrayList低。
4)遍歷數據時ArrayList效率高於LinkedList。
 
36.介紹JAVA開發中經常使用的Collection FrameWork(集合框架)?
Java中集合框架分爲Collection和Map接口,Collection接口下的集合每一個元素都由一個值組成,Map接口下的集合類每一個元素都是由鍵值對組成。
Collection接口下面有List和Set接口,List接口下常見的類有ArrayList、LinkedList、Vector。它們中的元素能夠重複,而且是有序的。Set接口下常見的類有HashSet、TreeSet。它們中的元素不能重複,而且是無序的。
 
37.在異常當中 throw和throws 有什麼區別和聯繫?
throw是在代碼中拋出一個異常,後面跟的是異常對象,虛擬機運行到這裏時會當即引起一個異常。
throws是寫在方法聲明上的,表示聲明該方法可能會拋出異常,後面跟的是異常類型。調用該方法的時候能夠選擇處理它或繼續往外拋。
 
38.重載和重寫的區別
重載是指在一個類中,兩個或兩個以上的方法具備相同方法名和不一樣參數列表,則表示這些方法爲重載方法。
重寫是指在父類和子類中,子類的方法和父類的方法具備相同方法名、相同參數列表、相同返回類型、子類的訪問修飾符範圍不小於父類的訪問修飾符範圍,異常的類型和個數不大於或多於父類的異常類型和個數,則表示該方法爲重寫方法。換句話說重載方法是區分同一個類中相同方法名的方法,重寫方法是找到父類相同方法名的方法並從新改變方法的行爲。
 
Android
 
39.activity、Service、BroadcastReceiver的做用(android)
Activity:Activity是Android程序與用戶交互的窗口,是Android構造塊中最基本的一種,它須要爲保持各界面的狀態,作不少持久化的事情,妥善管理生命週期以及一些跳轉邏輯
service:後臺服務於Activity,封裝有一個完整的功能邏輯實現,接受上層指令,完成相關的指令,定義好須要接受的Intent提供同步和異步的接口
BroadCast Receiver:接受一種或者多種Intent做觸發事件,接受相關消息,作一些簡單處理,轉換成一條Notification,統一了Android的事件廣播模型
 
40.描述一個完整的Android activity lifecycle
activity的生命週期方法有:onCreate()、onStart()、onReStart()、onResume()、onPause()、onStop()、onDestory();
 
41.顯式intent和隱式intent的區別是什麼(android)
Intent定義:Intent是一種在不一樣組件之間傳遞的請求消息,是應用程序發出的請求和意圖。做爲一個完整的消息傳遞機制,Intent不只須要發送端,還須要接收端。
顯式Intent定義:對於明確指出了目標組件名稱的Intent,咱們稱之爲顯式Intent。
隱式Intent定義:對於沒有明確指出目標組件名稱的Intent,則稱之爲隱式Intent。
說明:Android系統使用IntentFilter 來尋找與隱式Intent相關的對象。
 
42.Android中線程同步的方法
線程同步的方法能夠採用同步方法和同步塊。
 
43.怎麼將一個Activity封裝成對話框的樣子? 怎樣將Activity封裝成長按Menu菜單的樣子?
簡單你只須要設置 一下Activity的主題就能夠了在AndroidManifest.xml 中定義 Activity的地方一句話: 
Xml代碼 
android :theme="@android:style/Theme.Dialog" 
android:theme="@android:style/Theme.Dialog" 
這就使你的應用程序變成對話框的形式彈出來了,或者 
Xml代碼 
android:theme="@android:style/Theme.Translucent" 
android:theme="@android:style/Theme.Translucent" 
就變成半透明的。
重寫OnCreateOptionMenu方法來處理按下menu後的行爲,而後再該方法中彈出對話框形式的Activity。
也能夠利用事件監聽來監聽menu按鍵,並在該按鈕按下後彈出對話框形式的Activity。
 
44.介紹一下Android系統的體系結構
應用層:android的應用程序一般涉及用戶界面和交互。
應用框架層:UI組件、各類管理器等。
函數庫層:系統C庫、媒體庫、webkit、SQLite等。
linux核心庫:linux系統運行的組件。
 
*45.描述下橫豎屏切換時候 activity 的生命週期
不設置Activity的android:configChanges時,切屏會從新調用各個生命週期,切橫屏時會執行一次,切豎屏時會執行兩次. 
設置Activity的android:configChanges="orientation"時,切屏仍是會從新調用各個生命週期,切橫、豎屏時只會執行一次. 
設置Activity的android:configChanges="orientation|keyboardHidden"時,切屏不會從新調用各個生命週期,只會執行onConfigurationChanged方法.
 
46.android 中的動畫有哪幾種,它們的特色和區別是什麼 ?
兩種,一種是補間動畫(Tween)動畫、還有一種是幀動畫(Frame)動畫。Tween動畫,這種實現方式可使視圖組件移動、放大、縮小以及產生透明度的變化;另外一種Frame動畫,傳統的動畫方法,經過順序的播放排列好的圖片來實現,相似電影。
 
47.一條最長的短信息約佔多少 byte?
140byte,70個漢字。
 
48.描述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。
 
49.如何將 SQLite 數據庫 (dictionary.db 文件 ) 與 apk 文件一塊兒發佈 ?
能夠將dictionary.db文件複製到Eclipse Android工程中的res\raw目錄中。全部在res\raw目錄中的文件不會被壓縮,這樣能夠直接提取該目錄中的文件。 
使用openDatabase方法來打開數據庫文件,若是該文件不存在,系統會自動建立/sdcard/dictionary目錄,並將res\raw目錄中的 dictionary.db文件複製到/sdcard/dictionary目錄中
 
50.說說 android 中 mvc 的具體體現
mvc是model,view,controller的縮寫,mvc包含三個部分:
模型(model)對象:是應用程序的主體部分,全部的業務邏輯都應該寫在該層。
視圖(view)對象:是應用程序中負責生成用戶界面的部分。也是在整個mvc架構中用戶惟一能夠看到的一層,接收用戶的輸入,顯示處理結果。
控制器(control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新model對象狀態的部分,控制器更重要的一種導航功能,響應用戶出發的相關事件,交給m層處理。
android鼓勵弱耦合和組件的重用,在android中mvc的具體體現以下:
1)視圖(view):通常採用xml文件進行界面的描述,使用的時候能夠很是方便的引入。
2)控制層(controller):android的控制層的重任一般落在了衆多的acitvity的肩上,這句話也就暗含了不要在acitivity中寫過多的代碼,要經過activity交割model業務邏輯層處理,這樣作的另一個緣由是android中的acitivity的響應時間是5s,若是耗時的操做放在這裏,程序就很容易被回收掉。
3)模型層(model):對數據庫的操做、對網絡等的操做都應該在model裏面處理,固然對業務計算等操做也是必須放在的該層的。
 
51.請介紹下 Android 中經常使用的五種佈局
幀佈局(FrameLayout)
線性佈局(LinearLayout)
表格佈局(TableLayout)
相對佈局(RelativeLayout)
絕對佈局(AbsoluteLayout)
 
52.如何啓用 Service ,如何停用 Service
1)startService用於啓動Service、stopService中止Service。
2)bindService綁定Service,unbindService解除Service的綁定。
 
53.如何優化ListView
一、若是自定義適配器,那麼在getView方法中要考慮方法傳進來的參數contentView是否爲null,若是爲null就建立contentView並返回,若是不爲null則直接使用。在這個方法中儘量少建立view。
二、給contentView設置tag(setTag()),傳入一個viewHolder對象,用於緩存要顯示的數據,能夠達到圖像數據異步加載的效果。
三、若是listview須要顯示的item不少,就要考慮分頁加載。好比一共要顯示100條或者更多的時候,咱們能夠考慮先加載20條,等用戶拉到列表底部的時候再去加載接下來的20條。
 
54.描述4 種 activity 的啓動模式
1)standard :系統的默認模式,一次跳轉即會生成一個新的實例。假設有一個activity命名爲MainActivity,執行語句:
startActivity(new Intent(MainActivity.this, MainActivity.class))後,MainActivity將跳轉到另一個MainActivity,也就是如今的Task棧裏面有MainActivity的兩個實例。按返回鍵後你會發現仍然是在MainActivity(第一個)裏面。
2)singleTop:singleTop 跟standard 模式比較相似。若是已經有一個實例位於Activity棧的頂部時,就不產生新的實例,而只是調用Activity中的newInstance()方法。若是不位於棧頂,會產生一個新的實例。例:當MainActivity爲 singleTop 模式時,執行跳轉後棧裏面依舊只有一個實例,若是如今按返回鍵程序將直接退出。
3)singleTask: singleTask模式和後面的singleInstance模式都是隻建立一個實例的。在這種模式下,不管跳轉的對象是否是位於棧頂的activity,程序都不會生成一個新的實例(固然前提是棧裏面已經有這個實例)。這種模式至關有用,在之後的多activity開發中,常常會由於跳轉的關係致使同個頁面生成多個實例,這個在用戶體驗上始終有點很差,而若是你將對應的activity聲明爲 singleTask 模式,這種問題將不復存在。
4)singleInstance: 設置爲 singleInstance 模式的 activity 將獨佔一個task(感受task能夠理解爲進程),獨佔一個task的activity與其說是activity,倒不如說是一個應用,這個應用與其餘activity是獨立的,它有本身的上下文activity。
 
55.什麼是Intent,如何使用?
Android基本的設計理念是鼓勵減小組件間的耦合,所以Android提供了Intent (意圖) ,Intent提供了一種通用的消息系統,它容許在你的應用程序與其它的應用程序間傳遞Intent來執行動做和產生事件。使用Intent能夠激活Android應用的三個核心組件:活動、服務和廣播接收器。
經過startActivity() orstartActivityForResult()啓動一個Activity;
過 startService() 啓動一個服務,或者經過bindService() 和後臺服務交互;
經過廣播方法(好比 sendBroadcast(),sendOrderedBroadcast(),sendStickyBroadcast())發給broadcast receivers
 
56.Android用的數據庫是什麼樣的?它和sql有什麼區別?爲何要用ContentProvide?它和sql的實現上有什麼差異?
Adnroid用的是SQLite數據庫。它和其餘網絡數據庫相似,也是經過SQL對數據進行管理。SQLite的操做很是簡單,包括數據類型在建表時也能夠不指定。
使用ContentProvider 能夠將數據共享給其餘應用,讓除本應用以外的應用也能夠訪問本應用的數據。它的底層是用SQLite 數據庫實現的,因此其對數據作的各類操做都是以Sql實現,只是在上層提供的是Uri。
 
57.經過Intent傳遞一些二進制數據的方法有哪些?
1)使用Serializable接口實現序列化,這是Java經常使用的方法。
2)實現Parcelable接口,這裏Android的部分類好比Bitmap類就已經實現了,同時Parcelable在Android AIDL中交換數據也很常見的。 
 
58.對一些資源以及狀態的操做保存,最好是保存在生命週期的哪一個函數中進行?
onResume()恢復數據、onPause()保存數據。
 
59.如何一次性退出全部打開的Activity
編寫一個Activity做爲入口,當須要關閉程序時,能夠利用Activity的SingleTop模式跳轉該Activity,它上面的全部Activity都會被銷燬掉。而後再將該Activity關閉。
或者再跳轉時,設置intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);這樣也能將上面的Activity銷燬掉。
 
60.說說Service的生命週期?
啓動Service的方式有兩種,各自的生命週期也有所不一樣。
1、經過startService啓動Service:onCreate、onStartCommand、onDestory。
2、經過bindService綁定Service:onCreate、onBind、onUnbind、onDestory。
 
61.什麼是AIDL?AIDL是如何工做的?
AIDL(Android接口描述語言)是一種接口描述語言; 編譯器能夠經過aidl文件生成一段代碼,經過預先定義的接口達到兩個進程內部通訊進程的目的. 若是須要在一個Activity中, 訪問另外一個Service中的某個對象, 須要先將對象轉化成AIDL可識別的參數(多是多個參數), 而後使用AIDL來傳遞這些參數, 在消息的接收端, 使用這些參數組裝成本身須要的對象。AIDL是基於接口的,但它是輕量級的。它使用代理類在客戶端和實現層間傳遞值.。
 
62.Android如何把文件存放在SDCard上?
在AndroidManifest.xml中加入訪問SDCard的權限以下:
<!– 在SDCard中建立與刪除文件權限 –>
<uses-permission android:name=」android.permission.MOUNT_UNMOUNT_FILESYSTEMS」/>
<!– 往SDCard寫入數據權限 –>
<uses-permission android:name=」android.permission.WRITE_EXTERNAL_STORAGE」/>
要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,而且能夠進行讀寫。
注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權限。
Environment.getExternalStorageState()方法用於獲取SDCard的狀態,若是手機裝有SDCard,而且能夠進行讀寫,那麼方法返回的狀態等於Environment.MEDIA_MOUNTED。
Environment.getExternalStorageDirectory()方法用於獲取SDCard的目錄。
 
63.註冊廣播有幾種方式,這些方式有何優缺點?
兩種。一種是經過代碼註冊,這種方式註冊的廣播會跟隨程序的生命週期。二種是在AndroidManifest.xml中配置廣播,這種常駐型廣播當應用程序關閉後,若是有信息廣播來,程序也會被系統調用自動運行。
 
64.什麼是ANR 如何避免它? 
在Android上,若是你的應用程序有一段時間響應不夠靈敏,系統會向用戶顯示一個對話框,這個對話框稱做應用程序無響應(ANR:Application Not Responding)對話框。用戶能夠選擇讓程序繼續運行,可是,他們在使用你的應用程序時,並不但願每次都要處理這個對話框。所以,在程序裏對響應性能的設計很重要,這樣,系統不會顯示ANR給用戶。要避免它,應該儘可能少在主線程作耗時太長的操做,應該將這些操做放在線程當中去作。
 
65.Android自己的api並未聲明會拋出異常,則其在運行時有無可能拋出runtime異常,你遇到過嗎?諾有的話會致使什麼問題?如何解決? 
有可能,好比空指針異常、數組下表越界等異常,這些異常拋出後可能會致使程序FC。在編寫代碼時應該作好檢測,多考慮可能會發生錯誤的狀況,從代碼層次解決這些問題。
 
66.爲何要用 ContentProvider?它和 sql 的實現上有什麼差異?
使用ContentProvider 能夠將數據共享給其餘應用,讓除本應用以外的應用也能夠訪問本應用的數據。它的底層是用SQLite 數據庫實現的,因此其對數據作的各類操做都是以Sql實現,只是在上層提供的是Uri。
 
67.談談 UI 中, Padding 和 Margin 有什麼區別?
padding指內邊距,表示組件內部元素距離組件邊框的距離。
marin指外邊距,表示組件與組件之間的距離。
 
68.請介紹下 Android 的數據存儲方式。
Android 提供了5種方式存儲數據:
1)使用SharedPreferences存儲數據;
2)文件存儲數據;
3)SQLite數據庫存儲數據;
4)使用ContentProvider存儲數據;
5)網絡存儲數據; 
相關文章
相關標籤/搜索