android面試題
1. 下列哪些語句關於記憶體回收的說明是正確的? (b ) a、 程式設計師必須創建一個執行緒來釋放記憶體
b、 記憶體回收程式負責釋放無用記憶體
c、 記憶體回收程式允許程式設計師直接釋放記憶體
d、 記憶體回收程式可以在指定的時間釋放記憶體對象
2. 下面異常是屬於runtime exception 的是(abcd)(多選) a、arithmeticexception
b、illegalargumentexception
c、nullpointerexception
d、bufferunderflowexception
3. math.round(11.5)等於多少(). math.round(-11.5)等於多少(c). c a、11 ,-11 b、11 ,-12 c、12 ,-11 d、12 ,-12
4. 下列程式段的輸出結果是:(b )
void complicatedexpression_r(){
int x=20, y=30;
boolean b;
b=x>50&&y>60||x>50&&y<-60||x<-50&&y>60||x<-50&&y<-60;
system.out.println(b);
}
a、true b、false c、1 d、011.activity5. 對一些資源以及狀態的操作保存,最好是保存在生命周期的哪個函式中進行(d) a、onpause() b、oncreate() c、 onresume() d、onstart()
6. intent傳遞數據時,下列的數據類型哪些可以被傳遞(abcd)(多選) a、serializable b、charsequence c、parcelable d、bundle
7. android 中下列屬於intent的作用的是(c) a、實現應用程式間的數據共享
b、是一段長的生命周期,沒有用戶界面的程式,可以保持套用在後台運行,而不會因為切換頁面而消失
c、可以實現界面間的切換,可以包含動作和動作數據,連線四大組件的紐帶
d、處理一個應用程式整體性的工作
8. 下列屬於sax解析xml檔案的優點的是(b) a、將整個文檔樹在記憶體中,便於操作,支持刪除,修改,重新排列等多種功能
b、不用事先調入整個文檔,占用資源少
c、整個文檔調入記憶體,浪費時間和空間
d、不是長久駐留在記憶體,數據不是持久的,事件過後,若沒有保存數據,數據就會消失
百度android開發面試題
1、 android dvm的進程和linux的進程, 應用程式的進程是否為同一個概念
dvm指dalvik的虛擬機。每一個android應用程式都在它自己的進程中運行,都擁有一個獨立的dalvik虛擬機實例。而每一個dvm都是在linux 中的一個進程,所以說可以認為是同一個概念。
2、sim卡的ef 檔案有何作用
sim卡的檔案系統有自己規範,主要是為了和手機通訊,sim本
身可以有自己的作業系統,ef就是作存儲並和手機通訊用的
3、嵌入式作業系統記憶體管理有哪幾種,各有何特性 ?
頁式,段式,段頁,用到了mmu,虛擬空間等技術
4、什麼是嵌入式實時作業系統, android 作業系統屬於實時作業系統嗎?
嵌入式實時作業系統是指當外界事件或數據產生時,能夠接受並以足夠快的速度予以處理,其處理的結果又能在規定的時間之內來控制生產過程或對處理系統作出快速回響,並控制所有實時任務協調一致運行的嵌入式作業系統。主要用於工業控制、軍事設備、
航空航天等領域對系統的回響時間有苛刻的要求,這就需要使用實時系統。又可分為軟實時和硬實時兩種,而android是基於linux核心的,因此屬於軟實時。
5、一條最長的簡訊息約占多少byte?
中文70(包括標點),英文160個位元組
6、 android中的動畫有哪幾類,它們的特點和區別是什麼?
兩種,一種是tween動畫、還有一種是frame動畫。tween動畫,這種實現方式可以使視圖組件移動、放大、縮小以及產生透明度的變化;另一種frame動畫,傳統的動畫方法,通過順序的播放排列好的圖片來實現,類似電影。
7、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。
8、說說mvc模式的原理,它在android中的運用
mvc(model_view_contraller)” 模型_視圖_控制器”。 mvc應用程式總是由這三個部分組成。event(事件)導致controller改變model或view,或者同時改變兩者。只要 controller改變了models的數據或者屬性,所有依賴的view都會自動更新。類似的,只要controller改變了view,view會
從潛在的model中獲取數據來刷新自己。
view重繪和記憶體泄露的好像是面試經常問的問題
1. view的刷新:
在需要刷新的地方,使用handle.sendmessage傳送信息,然後在handle的getmessage裡面執行invaliate或者postinvaliate.
2. gc記憶體泄露
出現情況:
1.資料庫的cursor沒有關閉
2.構造adapter時,沒有使用快取contentview
衍生listview的最佳化問題-----減少創建view的對象,充分使用contentview,可以使用一靜態類來最佳化處理getview的過程/
3.bitmap對象不使用時採用recycle()釋放記憶體
4.activity中的對象的生命周期大於activity
調試方法: ddms==> heapszie==>dataobject==>[total size]