1裙犹、Android四大組件
Android四大基本組件:Activity、BroadcastReceiver廣播接收器、ContentProvider內(nèi)容提供者鸟蟹、Service服務(wù)。
Activity:
應(yīng)用程序中使兔,一個(gè)Activity就相當(dāng)于手機(jī)屏幕建钥,它是一種可以包含用戶界面的組件,主要用于和用戶進(jìn)行交互虐沥。一個(gè)應(yīng)用程序可以包含許多活動(dòng)熊经,比如事件的點(diǎn)擊,一般都會(huì)觸發(fā)一個(gè)新的Activity置蜀。
BroadcastReceiver廣播接收器:
應(yīng)用可以使用它對(duì)外部事件進(jìn)行過(guò)濾只對(duì)感興趣的外部事件(如當(dāng)電話呼入時(shí)奈搜,或者數(shù)據(jù)網(wǎng)絡(luò)可用時(shí))進(jìn)行接收并做出響應(yīng)。廣播接收器沒(méi)有用戶界面盯荤。然而馋吗,它們可以啟動(dòng)一個(gè)activity或serice 來(lái)響應(yīng)它們收到的信息,或者用NotificationManager來(lái)通知用戶秋秤。通知可以用很多種方式來(lái)吸引用戶的注意力──閃動(dòng)背燈宏粤、震動(dòng)、播放聲音等灼卢。一般來(lái)說(shuō)是在狀態(tài)欄上放一個(gè)持久的圖標(biāo)绍哎,用戶可以打開(kāi)它并獲取消息。
ContentProvider內(nèi)容提供者:
內(nèi)容提供者主要用于在不同應(yīng)用程序之間實(shí)現(xiàn)數(shù)據(jù)共享的功能鞋真,它提供了一套完整的機(jī)制崇堰,允許一個(gè)程序訪問(wèn)另一個(gè)程序中的數(shù)據(jù),同時(shí)還能保證被訪問(wèn)數(shù)據(jù)的安全性。只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)時(shí)才需要內(nèi)容提供者海诲。例如:通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程序使用繁莹,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。它的好處:統(tǒng)一數(shù)據(jù)訪問(wèn)方式特幔。
Service服務(wù):
是Android中實(shí)現(xiàn)程序后臺(tái)運(yùn)行的解決方案咨演,它非常適合去執(zhí)行那些不需要和用戶交互而且還要長(zhǎng)期運(yùn)行的任務(wù)(一邊打電話,后臺(tái)掛著QQ)蚯斯。服務(wù)的運(yùn)行不依賴于任何用戶界面薄风,即使程序被切換到后臺(tái),或者用戶打開(kāi)了另一個(gè)應(yīng)用程序拍嵌,服務(wù)仍然能夠保持正常運(yùn)行遭赂,不過(guò)服務(wù)并不是運(yùn)行在一個(gè)獨(dú)立的進(jìn)程當(dāng)中,而是依賴于創(chuàng)建服務(wù)時(shí)所在的應(yīng)用程序進(jìn)程撰茎。當(dāng)某個(gè)應(yīng)用程序進(jìn)程被殺掉后嵌牺,所有依賴于該進(jìn)程的服務(wù)也會(huì)停止運(yùn)行(正在聽(tīng)音樂(lè),然后把音樂(lè)程序退出)龄糊。
2逆粹、代碼能力
1、請(qǐng)用自己最擅長(zhǎng)的編程語(yǔ)言炫惩,將一個(gè)字符串反轉(zhuǎn)并輸出僻弹?
參考答案:
(1)python實(shí)現(xiàn):
方法1、使用[::-1]:
s = 'python'print s[::-1]
方法2他嚷、使用reverse()方法:
l = list(s)l.reverse()print ''.join(l)
(2)java實(shí)現(xiàn):
方法1蹋绽、使用StringBuffer,一點(diǎn)技巧也沒(méi)有:
public String reverse(String s){return new StringBuffer(s).reverse().toString();}
方法2筋蓖、靈活運(yùn)用了字符串功能:
public String reverse(String s){char[] letters=s.toCharArray();char temp;int len=letters.length;for(int i=len/2-1;i>=0;i--){temp=letters[i];letters[i]=letters[len-1-i];letters[len-1-i]=temp;}return new String(letters);}
2卸耘、針對(duì)數(shù)十個(gè)安卓應(yīng)用市場(chǎng)渠道包,請(qǐng)問(wèn)如何進(jìn)行大體的功能驗(yàn)證粘咖,簡(jiǎn)單敘述一下思路蚣抗?
參考答案:可以自動(dòng)化遍歷某個(gè)目錄下面的所有渠道包apk,然后循環(huán):安裝——》登錄——》**操作——》退出——卸載
3瓮下、測(cè)試思路
1翰铡、給你一個(gè)模塊,比如注冊(cè)模塊讽坏,你會(huì)怎么樣設(shè)計(jì)與執(zhí)行測(cè)試锭魔?
參考答案:數(shù)據(jù)——》從哪里來(lái)(入口)——》到哪里去(出口)——》數(shù)據(jù)庫(kù)(檢驗(yàn)數(shù)據(jù)的正確性)
2路呜、你認(rèn)為app測(cè)試過(guò)程中迷捧,相對(duì)于web,要更多注意哪些測(cè)試點(diǎn)漠秋?或者說(shuō)app測(cè)試和web測(cè)試有哪些不同之處?
參考答案:
他們的主要區(qū)別在于具體測(cè)試的細(xì)節(jié)和方法有區(qū)別膛堤,比如:性能測(cè)試,在WEB測(cè)試只需要測(cè)試響應(yīng)時(shí)間這個(gè)要素晌该,在App測(cè)試中還需要考慮流量測(cè)試和耗電量測(cè)試。
安裝測(cè)試:WEB測(cè)試基本上沒(méi)有客戶端層面的安裝測(cè)試朝群,但是App測(cè)試是存在客戶端層面的安裝測(cè)試,那么就具備相關(guān)的測(cè)試點(diǎn)姜胖。
交叉事件測(cè)試:就是在操作某個(gè)軟件的時(shí)候誉帅,來(lái)電話、來(lái)短信右莱,電量不足提示等外部事件蚜锨。
操作類型測(cè)試:如橫屏測(cè)試慢蜓,手勢(shì)測(cè)試
網(wǎng)絡(luò)測(cè)試:包含弱網(wǎng)和網(wǎng)絡(luò)切換測(cè)試。需要測(cè)試弱網(wǎng)所造成的用戶體驗(yàn)晨抡,重點(diǎn)要考慮回退和刷新是否會(huì)造成二次提交。弱網(wǎng)絡(luò)的模擬如捅,據(jù)說(shuō)可以用360wifi實(shí)現(xiàn)設(shè)置。主要是針對(duì)2G镜遣、3G、4G烈涮、wifi三種網(wǎng)絡(luò)環(huán)境進(jìn)行測(cè)試 ;
兼容性測(cè)試:在WEB端是兼容瀏覽器坚洽,在App端兼容的是手機(jī)設(shè)備西土。而且相對(duì)應(yīng)的兼容性測(cè)試工具也不相同讶舰,WEB因?yàn)槭菧y(cè)試兼容瀏覽器,所以需要使用不同的瀏覽器進(jìn)行兼容性測(cè)試(常見(jiàn)的是兼容IE6般甲,IE8敷存,chrome锚烦,firefox)如果是手機(jī)端帝雇,那么就需要兼容不同品牌涮俄,不同分辨率尸闸,不同android版本甚至不同操作系統(tǒng)的兼容苞尝。(常見(jiàn)的兼容方式是兼容市場(chǎng)占用率前N位的手機(jī)即可)茧痕,有時(shí)候也可以使用到兼容性測(cè)試工具野来,但WEB兼容性工具多用IETester等工具,而App兼容性測(cè)試會(huì)使用Testin這樣的商業(yè)工具也可以做測(cè)試踪旷。
4、測(cè)試技術(shù)
1舀患、說(shuō)說(shuō)會(huì)用哪些抓包工具气破?怎么用的?
參考答案:比如fiddler低匙,主要用來(lái)做app抓包使用碳锈,先在fiddler客戶端做好各項(xiàng)配置,端口設(shè)置為8888强重,然后在手機(jī)上設(shè)置代理,就可以抓包了,主要看的是服務(wù)器返回的值倘要、還能夠修改傳入?yún)?shù)召嘶、傳出的參數(shù)、模擬網(wǎng)絡(luò)延時(shí)尝苇,去構(gòu)造不同場(chǎng)景糠溜。
2非竿、0app的日志如何抓取?
adb logcat | find "com.sankuai.meituan" >d:\hello.txt
也可以用ddms抓取红柱,手機(jī)連上電腦,打開(kāi)ddms工具嘉抒,或者在Android Studio開(kāi)發(fā)工具中些侍,打開(kāi)DDMS
3蚂会、你平常會(huì)看日志嗎, 一般會(huì)出現(xiàn)哪些異常(Exception)?
這個(gè)主要是面試官考察你會(huì)不會(huì)看日志颂龙,是不是看得懂java里面拋出的異常措嵌,Exception.一般面試中java Exception(runtimeException )是必會(huì)被問(wèn)到的問(wèn)題
app崩潰的常見(jiàn)原因應(yīng)該也是這些了企巢。常見(jiàn)的異常列出四五種或听,是基本要求誉裆。
常見(jiàn)的幾種如下:
NullPointerException - 空指針引用異常
ClassCastException - 類型強(qiáng)制轉(zhuǎn)換異常足丢。
IllegalArgumentException - 傳遞非法參數(shù)異常斩跌。
ArithmeticException - 算術(shù)運(yùn)算異常
ArrayStoreException - 向數(shù)組中存放與聲明類型不兼容對(duì)象異常
IndexOutOfBoundsException - 下標(biāo)越界異常
NegativeArraySizeException - 創(chuàng)建一個(gè)大小為負(fù)數(shù)的數(shù)組錯(cuò)誤異常
NumberFormatException - 數(shù)字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支持的操作異常
4、什么是alpha測(cè)試和beta測(cè)試袖订?
alpha測(cè)試:在公司場(chǎng)地著角,由員工主導(dǎo)的測(cè)試行為吏口;beta測(cè)試:在客戶場(chǎng)地产徊,由客戶主導(dǎo)進(jìn)行的測(cè)試。
5谆刨、請(qǐng)寫(xiě)出一個(gè)SQL來(lái)查詢分?jǐn)?shù)前五5的所有人刁岸?
mysql:select * from 分?jǐn)?shù)表 order by 分?jǐn)?shù) desc limit 5;oracle:select top 5 * from 分?jǐn)?shù)表 order by 分?jǐn)?shù) desc;
6虹曙、linux常用命令有哪些番舆?
cd命令:切換到某個(gè)目錄
ls命令:列出當(dāng)前目錄的所有文件疏哗、文件夾
pwd命令:列出當(dāng)前目錄的路徑
cp命令:復(fù)制
mv命令:剪切
grep命令:管道
find命令:查找
rm命令:刪除
ps命令:查看進(jìn)程
kill命令:殺掉某個(gè)進(jìn)程
cat命令:查看某文件
tar命令:打包
chmod命令:賦權(quán)限
chown命令:改變文件的所有者
vim命令:文本編輯
7沃斤、請(qǐng)說(shuō)明Android手機(jī)和IOS手機(jī),系統(tǒng)有什么區(qū)別?
兩者運(yùn)行機(jī)制不同:IOS采用的是沙盒運(yùn)行機(jī)制坦袍,安卓采用的是虛擬機(jī)運(yùn)行機(jī)制捂齐。
兩者后臺(tái)制度不同:IOS中任何第三方程序都不能在后臺(tái)運(yùn)行奠宜;安卓中任何程序都能在后臺(tái)運(yùn)行压真,直到?jīng)]有內(nèi)存才會(huì)關(guān)閉。
IOS中用于UI指令權(quán)限最高佃迄,安卓中數(shù)據(jù)處理指令權(quán)限最高床绪。
8作箍、請(qǐng)簡(jiǎn)要介紹一下安卓系統(tǒng)四層架構(gòu)逆趋?
從上到下萄涯,依次是:應(yīng)用程序?qū)印窇?yīng)用程序框架層——》系統(tǒng)運(yùn)行庫(kù)層——》Linux核心層
9涝影、簡(jiǎn)單介紹一下Android SDK中自帶的幾個(gè)工具/命令的功能燃逻?
參考答案:
ddms:Dalvik Debug Monitor Service,是 Android 開(kāi)發(fā)環(huán)境中的Dalvik[虛擬機(jī)]調(diào)試監(jiān)控服務(wù)姆怪。
monkey:Android中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中肥卡。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入揪胃、觸摸屏輸入只嚣、手勢(shì)輸入等)册舞,實(shí)現(xiàn)對(duì)正在開(kāi)發(fā)的應(yīng)用程序進(jìn)行壓力測(cè)試调鲸。
uiautomator:UIAutomator是Eclipse自帶的用于UI自動(dòng)化測(cè)試工具即供,可仿真APP上的單擊逗嫡、滑動(dòng)株依、輸入文本等操作抹锄。
monitor:同uiautomator
adb:ADB的全稱為Android Debug Bridge伙单,就是起到調(diào)試橋的作用吻育。通過(guò)ADB我們可以在Eclipse中方面通過(guò)DDMS來(lái)調(diào)試Android程序,就是debug工具。
10总寻、常用的adb命令有哪些渐行?請(qǐng)隨便寫(xiě)一個(gè)monkey腳本祟印,并解釋其中參數(shù)的含義?
參考答案:
adb devices悲幅、adb install卓鹿、adb uninstall吟孙、adb shell pm 杰妓、adb shell am
adb shell monkey -p com.xiaoniu.finance -s 123 --throttle 500 --ignore-crashes --ignore-timeouts --ignore-security-exceptions -v -v -v 2000 > d:\xnonline-monkey-test1.txt
-p:app包名栋艳、
--throttle:每個(gè)操作的間隔時(shí)間吸占,單位ms
--ignore-crashes:忽略崩潰
--ignore-timeouts:忽略超時(shí)
--ignore-security-exceptions:忽略安全異常
-v -v -v:日志詳細(xì)等級(jí)矾屯,3個(gè)v代表最詳細(xì)等級(jí)的日志
d:\xnonline-monkey-test1.txt:代表將產(chǎn)生的日志,放到本地PC的D盤排作,并命名為:xnonline-monkey-test1.txt
11妄痪、測(cè)試過(guò)程中遇到app出現(xiàn)crash或者ANR衫生,你會(huì)怎么處理?
參考答案:可以先把日志過(guò)濾出來(lái):adb logcat | findstr xxxxx(過(guò)濾日志信息)?黄伊,然后再搜索其中的關(guān)鍵字西篓,比如:exception岂津、crash吮成,看看是那些方法或者異常導(dǎo)致了問(wèn)題的發(fā)送粱甫,初步定位問(wèn)題原因后危纫,可以交給開(kāi)發(fā)人員去具體查找深層原因并修復(fù)种蝶。
12螃征、請(qǐng)簡(jiǎn)單介紹一下使用過(guò)的安卓UI自動(dòng)化測(cè)試工具盯滚?
參考答案:
appium:是一個(gè)移動(dòng)端的自動(dòng)化框架魄藕,可用于測(cè)試原生應(yīng)用,移動(dòng)網(wǎng)頁(yè)應(yīng)用和混合型應(yīng)用荷荤,且是跨平臺(tái)的。
robotium:是一款國(guó)外的Android自動(dòng)化測(cè)試框架古毛,主要針對(duì)Android平臺(tái)的應(yīng)用進(jìn)行黑盒自動(dòng)化測(cè)試稻薇,它提供了模擬各種手勢(shì)操作(點(diǎn)擊塞椎、長(zhǎng)按案狠、滑動(dòng)等)吹零、查找和斷言機(jī)制的API灿椅,能夠?qū)Ω鞣N控件進(jìn)行操作。
13伸辟、你覺(jué)得app的性能測(cè)試窃蹋,即專項(xiàng)測(cè)試警没,需要重點(diǎn)關(guān)注哪些方面杀迹?
參考答案:內(nèi)存、cpu占用续语、耗電量滥朱、流量力试、流暢度等