android面試技巧分享
1. Intent的幾種有關(guān)Activity啟動(dòng)的方式有哪些,你了解每個(gè)含義嗎?

FLAG_ACTIVITY_SINGLE_TOP如果目標Activity已經(jīng)運行在棧頂,將不會(huì )再啟動(dòng)
= singleTop
FLAG_ACTIVITY_BROUGHT_TO_FRONT 、=singleTask
FLAG_ACTIVITY_MULTIPLE_TASK=singleInstance
FLAG_ACTIVITY_CLEAR_TOP、如果被啟動(dòng)的activity已經(jīng)運行在當前 task,將不會(huì )再創(chuàng )建新的活動(dòng)實(shí)例,位于其上的其它activity將會(huì )被關(guān)閉。
2. Activity和Task的啟動(dòng)模式有哪些? 每種含義是什么?
3. 通過(guò)Intent傳遞一些二進(jìn)制數據的方法有哪些?
1). 使用Serializable接口實(shí)現序列化,這是Java常用的方法。
2). 實(shí)現Parcelable接口,這里Android的部分類(lèi)比如Bitmap類(lèi)就已經(jīng)實(shí)現了,同
時(shí)Parcelable在A(yíng)ndroid AIDL中交換數據也很常見(jiàn)的。
4. 能說(shuō)下Android應用的入口點(diǎn)嗎?
真正的Android入口點(diǎn)是application的main,你可以看下androidmanifest.xml的包含關(guān)系就清楚了。
5. Android都有哪些XML解析器,都熟練掌握嗎?
這里SAX和DOM、XmlPull相信做過(guò)Web開(kāi)發(fā)的都已經(jīng)滾瓜爛熟了。
6. SQLite支持事務(wù)嗎? 添加刪除如何提高性能?
SQLite作為輕量級的數據庫,比MySQL還小,但支持SQL語(yǔ)句查詢(xún),提高性能可以考慮通過(guò)優(yōu)化的SQL查詢(xún)語(yǔ)句方式處理。SQLITE默認就是打開(kāi)事務(wù)的。
7. Android Service和Binder、AIDL你都熟練嗎?
Binder是系統進(jìn)程間通信(IPC)方式之一。Binder使用Client-Server通信方式:一個(gè)進(jìn)程作為Server提供諸如視頻/音頻解碼,視頻捕獲,地址本查詢(xún),網(wǎng)絡(luò )連接等服務(wù);多個(gè)進(jìn)程作為Client向Server發(fā)起服務(wù)請求,獲得所需要的服務(wù)。要想實(shí)現Client-Server通信據必須實(shí)現以下兩點(diǎn):一是server 必須有確定的訪(fǎng)問(wèn)接入點(diǎn)或者說(shuō)地址來(lái)接受Client的請求,并且Client可以通過(guò)某種途徑獲知Server的地址;二是制定Command- Reply協(xié)議來(lái)傳輸數據。例如在網(wǎng)絡(luò )通信中Server的訪(fǎng)問(wèn)接入點(diǎn)就是Server主機的IP地址+端口號,傳輸協(xié)議為T(mén)CP協(xié)議。對Binder而言,Binder可以看成Server提供的實(shí)現某個(gè)特定服務(wù)的訪(fǎng)問(wèn)接入點(diǎn), Client通過(guò)這個(gè)‘地址’向Server發(fā)送請求來(lái)使用該服務(wù);對Client而言,Binder可以看成是通向Server的管道入口,要想和某個(gè) Server通信首先必須建立這個(gè)管道并獲得管道入口。Binder框架定義了四個(gè)角色:Server,Client,ServiceManager(以后簡(jiǎn)稱(chēng)SMgr)以及驅動(dòng)。其中 Server,Client,SMgr運行于用戶(hù)空間,驅動(dòng)運行于內核空間。由于A(yíng)ndroid的Java層級只是一個(gè)外殼框架而已,大部分的系統組件(Android本身)都是在Nataive層(又稱(chēng)C/C++層)執行。這是Android的整體架構,所以我們的應用程序也必須考慮分為兩層的必要性,才能完全的融入Android的整體架構里。我們看到的Android應用架構(Application Framework)其實(shí)只是Android整體架構里的外殼結構而已。Android應用框架就如同椅子的椅面,那么椅子的椅腿在哪里呢?Binder系統是在Native層的C/C++組件。Java應用程序(如Activity體系等)是透過(guò)JNI界面去呼叫Binder系統(或稱(chēng)為組件)。
AIDL:在A(yíng)ndroid中, 每個(gè)應用程序都可以有自己的進(jìn)程. 在寫(xiě)UI應用的時(shí)候, 經(jīng)常要用到Service. 在不同的進(jìn)程中, 怎樣傳遞對象呢? 顯然, Java中不允許跨進(jìn)程內存共享. 因此傳遞對象, 只能把對象拆分成操作系統能理解的簡(jiǎn)單形式, 以達到跨界對象訪(fǎng)問(wèn)的目的`. 在J2EE中,采用RMI的方式, 可以通過(guò)序列化傳遞對象. 在A(yíng)ndroid中, 則采用AIDL的方式. 理論上AIDL可以傳遞Bundle,實(shí)際上做起來(lái)卻比較麻煩.
AIDL(AndRoid接口描述語(yǔ)言)是一種借口描述語(yǔ)言; 編譯器可以通過(guò)aidl文件生成一段代碼,通過(guò)預先定義的接口達到兩個(gè)進(jìn)程內部通信進(jìn)程的目的. 如果需要在一個(gè)Activity中, 訪(fǎng)問(wèn)另一個(gè)Service中的某個(gè)對象, 需要先將對象轉化成AIDL可識別的參數(可能是多個(gè)參數), 然后使用AIDL來(lái)傳遞這些參數, 在消息的接收端, 使用這些參數組裝成自己需要的對象. AIDL的IPC的機制和COM或CORBA類(lèi)似, 是基于接口的,但它是輕量級的。它使用代理類(lèi)在客戶(hù)端和實(shí)現層間傳遞值. 如果要使用AIDL, 需要完成2件事情: 1. 引入AIDL的相關(guān)類(lèi).; 2. 調用aidl產(chǎn)生的class.
8. 你用過(guò)哪款Android手機,有哪些優(yōu)點(diǎn)和不足,相對于iPhone或Symbian又有哪些優(yōu)缺點(diǎn)?
【android面試技巧分享】相關(guān)文章:
面試技巧經(jīng)驗分享12-28
面試應答技巧分享01-04
面試小技巧分享12-19
面試技巧匯總分享12-06
關(guān)于面試的技巧分享08-30
面試最佳狀態(tài)技巧分享01-07
銀行面試的技巧分享12-30
英語(yǔ)教師面試技巧分享11-25
2016英語(yǔ)面試技巧分享12-07
關(guān)于英語(yǔ)面試技巧分享12-07