1. Java語言基本數據類型有哪些?分別占用的記憶體空間是多少? 答: byte(1位元組),boolean(1位元組),char(2位元組),short(2位元組),int(4位元組),float(4位元組),long(8位元組),double(8位元組)。 答: &:數值運算時為按位與運算,邏輯值運算時分別計算 ...
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 |
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); &
|