《Android項目實戰(zhàn)——手機安全衛(wèi)士》_面試題答案_第1頁
《Android項目實戰(zhàn)——手機安全衛(wèi)士》_面試題答案_第2頁
《Android項目實戰(zhàn)——手機安全衛(wèi)士》_面試題答案_第3頁
《Android項目實戰(zhàn)——手機安全衛(wèi)士》_面試題答案_第4頁
《Android項目實戰(zhàn)——手機安全衛(wèi)士》_面試題答案_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、Android項目實戰(zhàn)手機安全衛(wèi)士面試題答案第1章 項目簡介1、 請問Android程序的真正入口是什么。Android程序的真正入口是Application類的onCreate()方法。2、 請問JSON數(shù)據(jù)與XML數(shù)據(jù)各有哪些優(yōu)缺點。1)JSON定義JSON是一種輕量級的數(shù)據(jù)交互格式,具有良好的可讀性和快速編寫的特性。業(yè)內(nèi)主流技術為其提供了完整的解決方案(有點類似于正則表達式 ,獲得了當今大部分語言的支持),從而可以在不同平臺間進行數(shù)據(jù)交互。JSON采用兼容性很高的文本格式,同時也具備類似于C語言體系的行為。2)XML定義XML表示擴展標記語言 (Extensible Markup Lan

2、guage, XML) ,用于標記電子文件使其具有結(jié)構(gòu)性的標記語言,可以用來標記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對自己的標記語言進行定義的源語言。XML是標準通用標記語言 (SGML) 的子集,非常適合 Web 傳輸。 3)XML和JSON的優(yōu)缺點對比l 可讀性方面JSON和XML的數(shù)據(jù)可讀性基本相同,JSON和XML的可讀性可謂不相上下,一邊是建議的語法,一邊是規(guī)范的標簽形式,XML可讀性較好些。 l 可擴展性方面XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,JSON不能的。l 編碼難度方面XML有豐富的編碼工具,比如Dom4j、JDom等,JSON也有json.or

3、g提供的工具,但是JSON的編碼明顯比XML容易許多,即使不借助工具也能寫出JSON的代碼,可是要寫好XML就不太容易了。l 流行度方面XML已經(jīng)被業(yè)界廣泛的使用,而JSON才剛剛開始,但是在Ajax這個特定的領域,未來的發(fā)展一定是XML讓位于JSON。l 數(shù)據(jù)體積方面JSON相對于XML來講,數(shù)據(jù)的體積小,傳遞的速度更快些。l 數(shù)據(jù)交互方面JSON與JavaScript的交互更加方便,更容易解析處理,更好的數(shù)據(jù)交互。l 傳輸速度方面JSON的傳輸速度要遠遠快于XML。 第2章 手機防盜模塊1、請問Android中有幾種數(shù)據(jù)存儲方式,每種方式有哪些特點。 Android中有5種數(shù)據(jù)存儲方式,分

4、別為文件存儲、SQLite數(shù)據(jù)庫、SharedPreferences、ContentProvider、網(wǎng)絡。每種存儲方式的特點如下:1)文件存儲文件存儲方式是一種較常用的方法,在Android中讀取/寫入文件的方法,與Java中實現(xiàn)I/O的程序是完全一樣的,提供了openFileInput()和openFileOutput()方法來讀取設備上的文件。2)SQLite數(shù)據(jù)庫SQLite是Android所集成的一個輕量級的嵌入式數(shù)據(jù)庫,它不僅可以使用Andorid API操作,同時它也支持SQL語句進行增刪改查等操作。3)SharedPreferences SharedPreferences是An

5、droid提供的用于存儲一些簡單配置信息的一種機制,采用了XML格式將數(shù)據(jù)存儲到設備中。不僅可以在同一個包下使用,還可以訪問其他應用程序的數(shù)據(jù),但是由于SharedPreferences的局限性,在實際操作中很少用來讀取其他應用程序的數(shù)據(jù)。4)ContentProviderContentProvider主要用于不同應用程序之間共享數(shù)據(jù),ContentProvider更好的提供了數(shù)據(jù)共享接口的統(tǒng)一性,使不同應用共享數(shù)據(jù)更規(guī)范和安全。5)網(wǎng)絡存儲數(shù)據(jù)通過網(wǎng)絡上提供的存儲空間來上傳(存儲)或下載(獲取)我們存儲在網(wǎng)絡空間中的數(shù)據(jù)信息。2、請問為什么要對ListView控件進行優(yōu)化,以及如何優(yōu)化。在使

6、用ListView控件的過程中,由于加載條目過多在滑動時可能造成卡頓。這是因為ListView在當前屏幕顯示多少個條目,就會創(chuàng)建多少個對象,每一個條目都是一個對象。在滑動時,滑出屏幕的條目對象會被銷毀,新加載到屏幕上的條目會創(chuàng)建新的對象,這樣在ListView快速滑動時就會不斷的【創(chuàng)建對象】à【銷毀對象】à【創(chuàng)建對象】,并且每一個條目都需要加載一次布局,加載布局時會不斷進行findViewById()操作初始化控件,而布局XML文件是以樹形進行加載,每次加載一個條目都需要從根節(jié)點進行初始化,這樣對內(nèi)存消耗也比較大,并且浪費時間。如果每個條目都有圖片,圖片加載的時間比較長,就

7、會造成內(nèi)存溢出異常。為此就需要對ListView進行優(yōu)化,優(yōu)化的目的是在滑動時不會重復創(chuàng)建對象,減少內(nèi)存消耗和屏幕渲染處理。具體步驟如下:1)創(chuàng)建靜態(tài)類創(chuàng)建一個靜態(tài)類,將需要加載的控件變量放在該靜態(tài)類中,保證所有控件只創(chuàng)建一次對象,不會重復創(chuàng)建對象,具體代碼如下所示:static class ViewHolderTextView mNameTV;TextView mPhoneTV;2)復用緩存View對象 在Adapter的getView(int position, View convertView, ViewGroup parent)方法中,第二個參數(shù)convertView代表的就是之前滑動

8、出屏幕的條目對象。如果是第一次加載該方法時,會創(chuàng)建新的View對象,如果滑動ListView時,滑動出屏幕的View對象會以緩存的形式存在,而convertView就是緩存的View對象,我們可以復用緩存該對象減少新對象的創(chuàng)建。在加載布局時先判斷convertView是否存在,如果convertView=null說明沒有緩存的View對象,則使用View.inflate()方法加載布局,進行布局的初始化,否則復用緩存的View對象。如果復用了緩存的View對象,也就是convertView,滑動時當前屏幕的條目可能和之前劃出屏幕的條目使用的是同一個對象,這樣就可能造成出現(xiàn)重復條目等異常,因此需

9、要對convertView進行setTag()設置將holder綁定到了view上,以確定當前顯示的是哪一個條目,防止出現(xiàn)重復條目。具體代碼如下所示:if(convertView = null)convertView = View.inflate(context, R.layout.item_list_contact_select, null);holder = new ViewHolder();holder.mNameTV = (TextView) convertView.findViewById(R.id.tv_name);holder.mPhoneTV = (TextView) conv

10、ertView.findViewById(R.id.tv_phone);convertView.setTag(holder);elseholder = (ViewHolder) convertView.getTag();第3章 通訊衛(wèi)士模塊1、 請問Handler消息機制的原理是什么,及應用場景。在Android系統(tǒng)中出于性能優(yōu)化考慮,Android的UI操作并不是線程安全的,這意味著如果有多個線程并發(fā)操作UI組件,可能導致線程安全問題。為了解決這個問題,Android制定了一條簡單的原則,只允許UI線程(亦即主線程)修改Activity中的UI組件。但實際上,有部分UI需要在子線程中控制其修

11、改邏輯,因此子線程需要通過handler通知主線程修改UI,實現(xiàn)線程間通信。(在游戲開發(fā)中尤其常見,例如需要讓新啟動的線程周期性的改變UI,或者實現(xiàn)文件下載等。) Handler機制主要包括四個關鍵對象,分別是:Message、Handler、MessageQueue、Looper。下面對這四個關鍵對象進行簡要的介紹。1)MessageMessage是在線程之間傳遞的消息,它可以在內(nèi)部攜帶少量的信息,用于在不同線程之間交換數(shù)據(jù)。Message的what字段可以用來攜帶一些整型數(shù)據(jù),obj字段可以用來攜帶一個Object對象。2)HandlerHandler顧名思義就是處理者的意思,它主要用于發(fā)

12、送消息和處理消息。一般使用Handelr對象的sendMessage()方法發(fā)送消息,發(fā)出的消息經(jīng)過一系列的輾轉(zhuǎn)處理后,最終會傳遞到Handler對象的handlerMessage()方法中。3)MessageQueueMessageQueue是消息隊列的意思,它主要用來存放通過Handler發(fā)送的消息。通過Handler發(fā)送的消息會存在MessageQueue中等待處理。每個線程中只會有一個MessageQueue對象。4)LooperLooper是每個線程中的MessageQueue的管家。調(diào)用Looper的loop()方法后,就會循環(huán)檢查MessageQueue中是否有消息,如果Mess

13、ageQueue中存在一條消息,就會將它取出,并傳遞到Handler的handlerMessage()方法中。此外每個線程也只會有一個Looper對象。在主線程中創(chuàng)建Handler對象時,系統(tǒng)已經(jīng)為我們創(chuàng)建了Looper對象,所以不用手動創(chuàng)建Looper對象,而在子線程中創(chuàng)建Handler對象時,我們需要調(diào)用Looper.prepare()方法創(chuàng)建一個消息循環(huán),最后調(diào)用 Looper.loop()使消息循環(huán)起作用,從消息隊列中取消息,處理消息。2、 請問如何將 SQLite 數(shù)據(jù)庫文件與 apk文件一起發(fā)布。可以將數(shù)據(jù)庫文件(dictionary.db)復制到 Eclipse And

14、roid工程中的 res/raw 目錄中。所在 res/raw 目錄中的文件不會被編譯成二進制文件,這樣可以直接提取該目錄中的文件。第4章 軟件管家模塊1、 請問Android中的dip、px和sp單位有何區(qū)別。1)dip: device independent pixels(設備獨立像素),不同設備有不同的顯示效果,這個和設備硬件有關,一般我們?yōu)榱酥С諻VGA、HVGA和QVGA推薦使用這個,不依賴像素。2)px: pixels(像素),屏幕上的點,不同設備顯示效果相同,這是絕對像素,永遠不會改變。一般我們HVGA代表320x480像素,這個用的比較多。3)sp: scaled pixels

15、(放大像素),主要用于顯示字體的大小,與dp類似,但是可以根據(jù)用戶的字體大小首選項進行縮放,主要用于字體顯示best for text size。根據(jù) google 的建議,TextView 的字號最好使用 sp 做單位,而且查看TextView的源碼可知 Android 默認使用 sp 作為字號單位。2、 請問注冊廣播有幾種方式,這幾種方式有何不同。 1)靜態(tài)注冊:在AndroidManifest.xml中注冊廣播,將廣播注冊到系統(tǒng)文件中,即使應用關閉,當有廣播到來時廣播也會收到消息進行處理。2)動態(tài)注冊:在代碼中注冊和注銷廣播,當廣播注冊的所依賴界面關閉時,需要手動將廣播注銷掉。第5章 手

16、機殺毒模塊 1、 請問StringBuffer和StringBuilder有哪些區(qū)別。1)StringBuffer:線程同步的,安全(可用于并發(fā)環(huán)境),效率低(少量數(shù)據(jù)看不出差別)。2)StringBuilder:線程不同步的,不能用于并發(fā)環(huán)境,如果使用可能會出現(xiàn)問題,但效率比較高。 2、 請問Android 中有幾類動畫,以及它們的特點是什么。Android中的動畫通??梢苑譃橹饚瑒赢嫼脱a間動畫兩類,具體特點如下:1) 補間動畫(Tween Animation) 通過對View中的內(nèi)容進行一系列的圖形變換來實現(xiàn)動畫效果,其中圖形變化包括平移、縮放、旋轉(zhuǎn)、改變透明度等。補間動畫的效果可以通過X

17、ML文件來定義也可以通過編碼方式來實現(xiàn),通常情況下以XML形式定義的動畫都會放置在程序的res/anim(自定義的)文件夾下。在Android中,提供了4種補間動畫,分別是透明度漸變動畫(AlphaAnimation)、旋轉(zhuǎn)動畫(RotateAnimation)、縮放動畫(ScaleAnimation)、平移動畫(TranslateAnimation)。2) 逐幀動畫(Frame Animation)就是按順序播放事先準備好的靜態(tài)圖像,利用人眼的“視覺暫留”原理,給用戶造成動畫的錯覺。放膠片看電影的原理與逐幀動畫的原理是一樣的,它們都是一張一張地播放事先準備好的靜態(tài)圖像。第6章 緩存清理模塊1

18、、 請問AIDL的工作原理以及實現(xiàn)步驟。AIDL全稱Android Interface Definition Language(Android接口描述語言) 是一種接口描述語言。編譯器可以通過aidl文件生成一段代碼,通過預先定義的接口達到兩個進程內(nèi)部通信的目的。實現(xiàn)AIDL的步驟如下:1) 創(chuàng)建AIDL文件(如IService.aidl):在這個文件中定義接口, 該接口定義了可供客戶端訪問的方法或?qū)傩浴ackage cn.itcast.alipayservice;interface IService void callALiPayService();2) 編譯AIDL文件:Eclipse可

19、以根據(jù)aidl文件自動生產(chǎn)Java文件并編譯(如IService.java), 編譯后的文件會在gen目錄下,這個過程不需要人為控制。3) 實現(xiàn)IService接口:編寫一個MyService類,MyService是Service的子類,在MyService類中定義了一個內(nèi)嵌類(MyBinder),該類是IService.Stub的子類。public class MyService extends Service private static final String TAG = "ALiPayService"Overridepublic IBinder onBind(In

20、tent intent) Log.v(TAG, "綁定支付寶,準備付費"); return new MyBinder(); private class MyBinder extends IService.Stub Overridepublic void callALiPayService() methodInService(); 需要注意的是,onBind()方法必須返回MyBinder類的實例對象,否則客戶端無法獲得服務對象。另外還需要在清單文件中注冊MyService服務。2、請問接口和抽象類有哪些區(qū)別。 l 抽象類中可以有構(gòu)造方法,而接口中不能有構(gòu)造方法。l 抽象類中

21、可以有普通成員變量,而接口中不能有普通成員變量。l 抽象類中可以包含非抽象的普通方法,而接口中所有的方法必須是抽象的,不能有非抽象的普通方法。l 抽象類中的抽象方法的訪問類型可以是public,protected和默認類型,但接口中的抽象方法只能是public類型的,并且默認即為public abstract類型。l 抽象類中可以包含靜態(tài)方法,接口內(nèi)不能包含靜態(tài)方法。l 抽象類和接口中都可以包含靜態(tài)成員變量,抽象類中的靜態(tài)成員變量的訪問類型可以任意,但接口中定義的變量只能是public static類型,并且默認為public static類型。l 一個類可以實現(xiàn)多個接口,但只能繼承一個抽象類

22、。第7章 進程管理模塊1、 請問進程間通訊有幾種方式。1)Activity:既可以在進程內(nèi)訪問(同一個應用程序),也可以跨進程訪問。Activity跨進程訪問與進程內(nèi)訪問略有不同,雖然他們都需要Intent對象,但跨進程訪問并不需要指定Context對象和Activity的Class對象,而需要指定的是要訪問Activity所對應的Action(一個字符串),有些還需要指定一個Uri。例如調(diào)用系統(tǒng)照相機就是通過Activity實現(xiàn)的進程間通信。2)廣播(Broadcast):廣播是一種被動的跨進程通通訊方式。當某個程序向系統(tǒng)發(fā)送廣播時,其他的應用程序只能被動接收廣播數(shù)據(jù)。這就像電臺進行廣播一樣

23、,聽眾只能被動地收聽,而不能主動與電臺進行溝通。在應用程序中發(fā)送廣播比較簡單,只需要調(diào)用sendBroadcast()方法即可,該方法需要一個Intent對象,通過Intent對象可以發(fā)送需要的數(shù)據(jù)。3)Content Provider:提供了一種在多個應用程序之間數(shù)據(jù)共享的方式(跨進程共享數(shù)據(jù))應用程序可以利用Content Provider完成數(shù)據(jù)查詢、數(shù)據(jù)修改、數(shù)據(jù)添加、數(shù)據(jù)刪除功能。4)Service(服務):Service是Android系統(tǒng)中非常重要的一個組件,它可以脫離應用程序運行,也就是說,應用程序只起到一個啟動Service的作用,一旦Service被啟動,就算應用程序關閉,

24、Service仍然會在后臺運行。Service有兩個作用,后臺運行和跨進程通信。當如果讓程序可以跨進程通信,這就需要使用AIDL服務,AIDL 是Android接口定義語言,同這種語言定義的接口后,Eclipse插件(ODT)會自動生成相應的Java代碼接口。并實現(xiàn)跨進程通信功能。2、 請問啟動、停止Service有幾種方式,各自有什么特點。 1)startService():調(diào)用者與服務之間沒有關連,即使調(diào)用者退出了,服務仍然運行。停止服務時要調(diào)用stopService()方法。2)bindService():調(diào)用者與服務綁定在了一起,調(diào)用者一旦退出,服務也就終止。停止服務時要調(diào)用onUnb

25、ind()方法解綁。第8章 流量統(tǒng)計模塊1、 請問使用SQLite數(shù)據(jù)庫時有幾種優(yōu)化方式。1)索引優(yōu)化:簡單的說,索引就像書本的目錄,目錄可以快速找到所在頁數(shù),數(shù)據(jù)庫中索引可以幫助快速找到數(shù)據(jù),而不用全表掃描,合適的索引可以大大提高數(shù)據(jù)庫查詢的效率。其優(yōu)點是大大加快了數(shù)據(jù)庫檢索的速度,包括對單表查詢、連表查詢、分組查詢、排序查詢。經(jīng)常是一到兩個數(shù)量級的性能提升,且隨著數(shù)據(jù)數(shù)量級增長。缺點是索引的創(chuàng)建和維護存在消耗,索引會占用物理空間,且隨著數(shù)據(jù)量的增加而增加。在對數(shù)據(jù)庫進行增刪改時需要維護索引,所以會對增刪改的性能存在影響。2)事務優(yōu)化:對于需要一次性修改多條數(shù)據(jù)時,可以考慮使用SQLite中

26、的事務進行批量處理。3)查詢優(yōu)化:相對于封裝過的ContentProvider而言,使用原始SQL語句執(zhí)行效率高,例如使用方法rawQuery、execSQL的執(zhí)行效率比較高。2、 請問Activity有幾種啟動模式,以及每種模式的特點。 1)standard:標準模式,一調(diào)用 startActivity()方法就會產(chǎn)生一個新的實例。2)singleTop:棧頂模式,如果已經(jīng)有一個實例位于 Activity 棧的頂部時,就不產(chǎn)生新的實例,而只是調(diào)用Activity的newInstance()方法。如果不位于棧頂,就會產(chǎn)生一個新的實例。3)singleTask:單例任務模式,會在一個新的 Task 中產(chǎn)生這個實例,以后每次調(diào)用都會使用這個,不會去產(chǎn)生新的實例了。4)singleInstance:單例模式,這個跟 singleTask 基本上是一樣,但有一個區(qū)別,在這個模式下的 Activity 實例所處的 Task 中,只能有這個activity 實例,不能有其他的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論