1、寫出幾種常見的設計模式,並詳細列舉出一種。前端
單例設計模式,工廠設計模式,適配器設計模式,模板設計模式,裝飾設計模式java
2、描述下tcp接收數據的過程。android
1:創建服務器端的socket服務,須要一個端口
2:服務端沒有直接流的操做,而是經過accept方法獲取客戶端對象,在經過獲取到的客戶端對象的流和客戶端進行通訊
3:經過客戶端的獲取流對象的方法,讀取數據或者寫入數據
4:若是服務完成,須要關閉客戶端,而後關閉服務器,可是,通常會關閉客戶端,不會關閉服務器,由於服務端是一直提供服務的sql
3、xml的幾種解析方式,並寫出他們的優缺點。數據庫
Dom 優勢:能夠進行增刪改查邏輯
缺點:會形成內存溢出.
sax 優勢:它不會形成內存溢出
缺點:它只能查,不能實現增 刪 改.設計模式
xmlpull數組
4、什麼是JSON解析安全
5、Java中的JVM和Android中的DalvikVM有什麼區別服務器
JVM(Java虛擬機)是一個虛構出來的運行Java程序的運行時,是經過在實際的計算機上仿真模擬各類計算機功能的實現。它具備完善的硬件架構(如處理器、堆棧、寄存器等),還具備相應的指令系統,使用JVM就是使Java程序支持與操做系統無關。理論上在任何操做系統中,只要有對應的JVM,便可運行Java程序。
Dalvik VM是在Android系統上運行Android程序的虛擬機,其指令集是基於寄存器架構的,執行特有的文件格式-dex字節碼來完成對象生命週期管理、堆棧管理、線程管理、安全異常管理、垃圾回收等重要功能。網絡
6、簡述SharedPreference的使用,並說明存儲位置。
位置就是 data data的目錄下,而後找到本身應用的包的名稱。
//3.說明用戶名密碼不爲空 使用sp來存數據 獲取sp的實例
SharedPreferences sp = getSharedPreferences(「config」, 0); //:使用sp 系統會生成一個xml格式的文件
//3.1 獲取sp的編輯器
SharedPreferences.Editor edit = sp.edit();
//3.2 存數據 用戶名 和密碼
edit.putString(「name」,name);
edit.putString(「pwd」,pwd);
//3.3 調用commit方法提交數據
edit.commit();
7、簡述Android中sqlite數據庫操做方法,並寫出方法名字和方法內作哪些操做
ExecSQL
Insert
Delete
Update
Query
10、String和StringBuffer、StringBuilder的區別
三者在執行速度方面的比較:StringBuilder > StringBuffer > String
String 字符串常量
StringBuffer 字符串變量(線程安全)
StringBuilder 字符串變量(非線程安全)
(1)若是要操做少許的數據用 String;
(2)多線程操做字符串緩衝區下操做大量數據 StringBuffer;
(3)單線程操做字符串緩衝區下操做大量數據 StringBuilder。
11、進程和線程的區別
a.地址空間和其它資源:進程間相互獨立,同一進程的各線程間共享。某進程內的線程在其它進程不可見。
b.通訊:進程間通訊IPC,線程間能夠直接讀寫進程數據段(如全局變量)來進行通訊——須要進程同步和互斥手段的輔助,以保證數據的一致性。
c.調度和切換:線程上下文切換比進程上下文切換要快得多。
d.在多線程OS中,進程不是一個可執行的實體。
12、什麼是反射,及使用步驟
反射就是把java類中各類成分映射成相應的java類.
13、當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其它方法?
1.其餘方法前是否加了synchronized關鍵字,若是沒加,則能。
2.若是這個方法內部調用了wait,則能夠進入其餘synchronized方法。
3.若是其餘個方法都加了synchronized關鍵字,而且內部沒有調用wait,則不能。
4.若是其餘方法是static,它用的同步鎖是當前類的字節碼,與非靜態的方法不能同步,由於非靜態的方法用的是this。
14、是否能夠繼承String類?
不能夠,由於String類有final修飾符,而final修飾的類是不能被繼承的,實現細節不容許改變。
15、List, Set, Map是否繼承自Collection接口?
List和Set是繼承自Collection接口的接口,Set不容許重複的項目,List容許重複項目,Set接口派生的類有TreeSet,HashSet,LinkedHashSet。 List接口派生的類有ArrayList,Vector等。 Map是獨立的接口,不繼承Collection接口。
16、String s = new String(「xyz」);建立了幾個String Object?
String s=new String(「xyz」)究竟建立String Object分爲兩種狀況:
1.若是String常理池中,已經建立」xyz」,則不會繼續建立,此時只建立了一個對象new String(「xyz」);
2.若是String常理池中,沒有建立」xyz」,則會建立兩個對象,一個對象的值是」xyz」,一個對象new String(「xyz」)。
17、final, finally, finalize的區別。
final—修飾符(關鍵字)若是一個類被聲明爲final,意味着它不能再派生出新的子類,不能做爲父類被繼承。所以一個類不能既被聲明爲 abstract的,又被聲明爲final的。將變量或方法聲明爲final,能夠保證它們在使用中不被改變。被聲明爲final的變量必須在聲明時給定初值,而在之後的引用中只能讀取,不可修改。被聲明爲final的方法也一樣只能使用,不能重載。
finally—再異常處理時提供 finally 塊來執行任何清除操做。若是拋出一個異常,那麼相匹配的 catch 子句就會執行,而後控制就會進入 finally 塊(若是有的話)。
finalize—方法名。Java 技術容許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去以前作必要的清理工做。這個方法是由垃圾收集器在肯定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,所以全部的類都繼承了它。子類覆蓋 finalize() 方法以整理系統資源或者執行其餘清理工做。finalize() 方法是在垃圾收集器刪除對象以前對這個對象調用的。
18、談談android大衆經常使用的五種佈局。
在Android中,共有五種佈局方式,分別是:FrameLayout(框架佈局),LinearLayout (線性佈局),AbsoluteLayout(絕對佈局),RelativeLayout(相對佈局),TableLayout(表格佈局)。
(1)FrameLayout 框架佈局,放入其中的全部元素都被放置在最左上的區域,並且沒法爲這些元素指定一個確切的位置,下一個子元素會重疊覆蓋上一個子元素,適合瀏覽單張圖片。
(2)LinearLayout 線性佈局,是應用程序中最經常使用的佈局方式,主要提供控件水平或者垂直排列的模型,每一個子組件都是以垂直或水平的方式來定位.(默認是垂直)
(3)AbsoluteLayout 絕對定位佈局,採用座標軸的方式定位組件,左上角是(0,0)點,往右x軸遞增,往下Y軸遞增,組件定位屬性爲android:layout_x 和 android:layout_y來肯定座標。
(4)RelativeLayout 相對佈局,根據另一個組件或是頂層父組件來肯定下一個組件的位置。和CSS裏面的相似。
(5)TableLayout 表格佈局,相似Html裏的Table.使用TableRow來佈局,其中TableRow表明一行,TableRow的每個視圖組件表明一個單元格
19、Adapter有什麼做用?常見的Adapter有哪些?
簡述:
adapter是數據與ui之間的橋樑,它把後臺數據與前端ui鏈接到一塊兒,是一個展現數據的載體。
經常使用的adapter:
BaseAdapter : 基礎適配器,對於spinner listview gridview 都是通用的,它是一個抽象類,繼承後要實現的方法不少
ArrayAdapter : 是BaseAdapter的一個子類,能夠直接使用泛型,使用起來比較簡單
CursorAdapter:
ListAdapter:
SimpleAdapter :擴展性好,能夠定義各類各樣的佈局,它裏面涉及到的數據全是hashmap構成的List
SimpleCursorAdapter: 能夠從數據庫中讀取數據顯示在列表上
ResourceCursorAdapter:
20、ListView的優化方案
View view;
if(convertView == null){
view = LayoutInfalter.from(getContext()).inflate(resourceID,null)
}
else{
view = convertView
}
21、請介紹下Android的數據存儲方式。
Android提供了5種方式存儲數據:
一、使用SharedPreferences存儲數據;
二、文件存儲數據;
三、SQLite數據庫存儲數據;
四、使用ContentProvider存儲數據;
五、網絡存儲數據;
22、請寫出你最多見到的5個runtime exception。
RuntimeException是java中全部運行時異常的父類,實際運行時出現的都是它的子類,看看RuntimeException的Java doc就能夠隨便列出幾個: 1, Object x = new Integer(0); System.out.println((String)x); 當試圖將對象強制轉換爲不是實例的子類時,拋出該異常(ClassCastException) 2, int a=5/0; 一個整數「除以零」時,拋出ArithmeticException異常。 3, String s=null; int size=s.size(); 當應用程序試圖在須要對象的地方使用 null 時,拋出NullPointerException異常 4, 「hello」.indexOf(-1); 指示索引或者爲負,或者超出字符串的大小,拋出StringIndexOutOfBoundsException異常 5, String[] ss=new String[-1]; 若是應用程序試圖建立大小爲負的數組,則拋出NegativeArraySizeException異常。