遇到的android面試題

2021-07-11 03:54:48 字數 3832 閱讀 1556

1、簡述android中實現多執行緒的幾種方法,及各自的優缺點

多執行緒實現方式implements runnable 或 extends thread

1)activity.runonuithread(runnable)

2)view.post(runnable) ;view.postdelay(runnable , long)

3)handler

4)asynctask:

asynctask

優點:1.簡單,快捷,只需要在doinbackground ()中處理業務,在onpostexecute()方法中更新ui,**層次結構簡單

2.當相同非同步任務的資料特別龐大,asynctask這種執行緒池結構的優勢會充分體現出來

缺點:1.asynctask類包含乙個全域性靜態的執行緒池,預設配置了5個可用執行緒,如果超過5個執行緒則會進入到緩衝佇列中等待。緩衝佇列最多有128個等中的執行緒

2.asynctask可能存在新開大量執行緒消耗系統資源和導致應用fc(force close)的風險

3.asynctask在處理大量多種不同非同步任務的時候顯得不適合。

handler

優點:handler原理是僅僅就是傳送了乙個訊息佇列,並沒有新開執行緒帶來的資源消耗,對於紛繁複雜的不同小非同步任務處理起來相對簡單。

缺點:相對asynctask來說顯得**過多,過於臃腫,結構過於複雜,層次不明朗

2、簡述android下的定時器有哪些實現方法

android定時器實現

一、採用handler與執行緒的sleep(long)方法;

二、採用handler的postdelayed(runnable, long)方法;

三、採用handler與timer及timertask結合的方法;

方法一:handler    子執行緒呼叫handler的sendmessage(message)傳送事件。

方法二:view.post(runnable )

方法三:activity.runonuithread(runnable )

方法四:asynctask

1、基於訊息的通訊機制 intent---bundle,extra

2、利用static靜態資料,public static 成員變數

3、 基於外部儲存的傳輸

4、基於ipc通訊機制

4、android中activity的啟動模式分為哪幾種?

activity啟動模式的設定在androidmanifest.xml檔案中,通過配置activity的屬性android:launchmode=""設定。

1. standard模式(預設)

2. singletop模式

3. singletask模式

4. singleinstance模式

5、請簡述android的生命週期,在什麼情況下轉換,以及各階段需要什麼樣的處理?

oncreate:     建立介面 ,資料 的初始化

onstart:    使用者可見不可互動的

onresume:   使用者可互動

onpause:    可見但不可互動的

onstop:     變得不可見

ondestroy:  activity銷毀

6、請實現乙個方法將一億以內的數字程式設計漢語數字,比如:將51040轉變成:"伍萬壹仟零肆拾"  方法原型為:string convertint2chinese(int num)

public class numbertocn ;

/*** 漢語中貨幣單位大寫,這樣的設計類似於佔位符

*/private static final string cn_upper_monetray_unit = ;

/*** 特殊字元:整

*/private static final string cn_full = "整";

/*** 特殊字元:負

*/private static final string cn_negative = "負";

/*** 金額的精度,預設值為2

*/private static final int money_precision = 2;

/*** 特殊字元:零元整

*/private static final string cn_zeor_full = "零元" + cn_full;

/*** 把輸入的金額轉換為漢語中人民幣的大寫

* * @param numberofmoney

* 輸入的金額

* @return 對應的漢語大寫

*/public static string number2cnmontrayunit(bigdecimal numberofmoney)

//這裡會進行金額的四捨五入

long number = numberofmoney.movepointright(money_precision)

.setscale(0, 4).abs().longvalue();

// 得到小數點後兩位值

long scale = number % 100;

int numunit = 0;

int numindex = 0;

boolean getzero = false;

// 判斷最後兩位數,一共有四中情況:00 = 0, 01 = 1, 10, 11

if (!(scale > 0))

if ((scale > 0) && (!(scale % 10 > 0)))

int zerosize = 0;

while (true)

// 每次獲取到最後乙個數

numunit = (int) (number % 10);

if (numunit > 0)

if ((numindex == 13) && (zerosize >= 3))

sb.insert(0, cn_upper_monetray_unit[numindex]);

sb.insert(0, cn_upper_number[numunit]);

getzero = false;

zerosize = 0;

} else

if (numindex == 2)

} else if (((numindex - 2) % 4 == 0) && (number % 1000 > 0))

getzero = true;

}// 讓number每次都去掉最後乙個數

number = number / 10;

++numindex;

}// 如果signum == -1,則說明輸入的數字為負數,就在最前面追加特殊字元:負

if (signum == -1)

// 輸入的數字小數點後兩位為"00"的情況,則要在最後追加特殊字元:整

if (!(scale > 0))

return sb.tostring();

}public static void main(string args)

}

7、實現乙個支援大量資料的listview的adapter,每行有2個testview,顯示name和value,資料型別自選。

8、選擇題:關於contentvalues類說法正確的是

和hashtable比較類似,它也是負責儲存一些名值對,但是它儲存的名值對當中的名是乙個string型別,而值都是基本型別。

最近遇到的面試題關於android方面

1.有一種數字叫做回文數字,如121,12321這種對稱的數字,試編寫乙個方法來判斷乙個數字是否是回文數字,如果是回文數字,輸出 true 不是輸出 false public string test string str else 2.請說出執行緒與程序的區別 答 執行緒是在程序裡面的,而每個應用程...

網上遇到的面試題

題目 寫乙個方法,要求引數int型別,如 傳入乙個12345,返回結果54321。面試的時候遇到這個題,還有個要求,是方法體內的 不能超過8行,而且還要用遞迴。public static void main string args public static int f int i,int j 題目...

android面試題二

六 android 中的動畫有哪幾種,它們的特點和區別是什麼 逐幀動畫和補間動畫。補間動畫 給出兩個關鍵幀 初和末 和變化時間 方式,通過一些演算法對view的內容在規定的時間內完成一系列的圖形變換。主要包括四種效果 alpha scale translate和rotate。七 請介紹下 andro...