android面試會(huì)問到哪些問題?需要做哪些準(zhǔn)備呢?華清遠(yuǎn)見教育科技集團(tuán)收集整理了一些2017年新的android面試題,希望對(duì)參加android崗位面試和想要學(xué)習(xí)和從事android相關(guān)職位的同學(xué)有所幫助。
1:android活動(dòng)Activity的生命周期?
這幾乎是個(gè)老少咸宜,永遠(yuǎn)不會(huì)過時(shí)的問題,而且極有可能是第一個(gè)問題。這個(gè)問題當(dāng)然沒什么好講的啦,死記硬背是沒什么用的了,關(guān)鍵是理解。本人就曾遇到這個(gè)問題的變種問題,問onStart(),與onResume()有什么區(qū)別?如果面試官拋出這個(gè)問題,是不是有點(diǎn)措手不及。今天又聽說有同學(xué)遭遇了更變態(tài)的問題:什么情況下Activity走了onCreat(),而不走onStart(),這簡(jiǎn)直就是腦筋急轉(zhuǎn)彎嘛。
2:android服務(wù)service的生命周期?
這里要注意service有兩種啟動(dòng)方式,startService()和bindService();
3:如何理解Activity,View,Window三者之間的關(guān)系?
這個(gè)問題真的很不好回答。所以這里先來個(gè)算是比較恰當(dāng)?shù)谋扔鱽硇稳菹滤鼈兊年P(guān)系吧。Activity像一個(gè)工匠(控制單元),Window像窗戶(承載模型),View像窗花(顯示視圖)LayoutInflater像剪刀,Xml配置像窗花圖紙。
1:Activity構(gòu)造的時(shí)候會(huì)初始化一個(gè)Window,準(zhǔn)確的說是PhoneWindow。
2:這個(gè)PhoneWindow有一個(gè)“ViewRoot”,這個(gè)“ViewRoot”是一個(gè)View或者說ViewGroup,是初始的根視圖。
3:“ViewRoot”通過addView方法來一個(gè)個(gè)的添加View。比如TextView,Button等
4:這些View的事件監(jiān)聽,是由WindowManagerService來接受消息,并且回調(diào)Activity函數(shù)。比如onClickListener,onKeyDown等。
4:Activity的幾種LaunchMode及使用場(chǎng)景
standard 模式
這是默認(rèn)模式,每次激活A(yù)ctivity時(shí)都會(huì)創(chuàng)建Activity實(shí)例,并放入任務(wù)棧中。使用場(chǎng)景:大多數(shù)Activity。
singleTop 模式
如果在任務(wù)的棧頂正好存在該Activity的實(shí)例,就重用該實(shí)例( 會(huì)調(diào)用實(shí)例的 onNewIntent() ),否則就會(huì)創(chuàng)建新的實(shí)例并放入棧頂,即使棧中已經(jīng)存在該Activity的實(shí)例,只要不在棧頂,都會(huì)創(chuàng)建新的實(shí)例。使用場(chǎng)景如新聞?lì)惢蛘唛喿x類App的內(nèi)容頁面。
singleTask 模式
如果在棧中已經(jīng)有該Activity的實(shí)例,就重用該實(shí)例(會(huì)調(diào)用實(shí)例的 onNewIntent() )。重用時(shí),會(huì)讓該實(shí)例回到棧頂,因此在它上面的實(shí)例將會(huì)被移出棧。如果棧中不存在該實(shí)例,將會(huì)創(chuàng)建新的實(shí)例放入棧中。使用場(chǎng)景如瀏覽器的主界面。不管從多少個(gè)應(yīng)用啟動(dòng)瀏覽器,只會(huì)啟動(dòng)主界面一次,其余情況都會(huì)走onNewIntent,并且會(huì)清空主界面上面的其他頁面。
singleInstance 模式
在一個(gè)新棧中創(chuàng)建該Activity的實(shí)例,并讓多個(gè)應(yīng)用共享該棧中的該Activity實(shí)例。一旦該模式的Activity實(shí)例已經(jīng)存在于某個(gè)棧中,任何應(yīng)用再激活該Activity時(shí)都會(huì)重用該棧中的實(shí)例( 會(huì)調(diào)用實(shí)例的 onNewIntent() )。其效果相當(dāng)于多個(gè)應(yīng)用共享一個(gè)應(yīng)用,不管誰激活該 Activity 都會(huì)進(jìn)入同一個(gè)應(yīng)用中。使用場(chǎng)景如鬧鈴提醒,將鬧鈴提醒與鬧鈴設(shè)置分離。singleInstance不要用于中間頁面,如果用于中間頁面,跳轉(zhuǎn)會(huì)有問題,比如:A -> B (singleInstance) -> C,完全退出后,在此啟動(dòng),首先打開的是B。
5:View的繪制流程
measure過程
layout過程
draw過程
//blog.csdn.net/yanbober/article/details/46128379/
6:Touch事件的傳遞機(jī)制
public boolean dispatchTouchEvent(MotionEventev); //用來分派eventpublicbooleanonInterceptTouchEvent(MotionEventev);//用來攔截eventpublicbooleanonTouchEvent(MotionEventev);//用來處理event
其中Activity和View控件(TextView)擁有分派和處理事件方法,View容器(LinearLayout)具有分派,攔截,處理事件方法。這里也有個(gè)比喻:都會(huì)把任務(wù)向下分派,一旦下面的人把事情做不好,就不會(huì)再把后續(xù)的任務(wù)交給下面的人來做了,只能自己親自做,如果自己也做不了,就只能告訴上級(jí)不能完成任務(wù),上級(jí)又會(huì)重復(fù)他的過程。另外,都有權(quán)利攔截任務(wù),對(duì)下級(jí)隱瞞該任務(wù),而直接自己去做,如果做不成,也只能向上級(jí)報(bào)告不能完成任務(wù)。
//gold.xitu.io/entry/56af0ba0c24aa800547b60ea
//blog.csdn.net/morgan_xww/article/details/9372285
7:Android中的幾種動(dòng)畫
曾被問到Android中有幾種動(dòng)畫,這個(gè)問題也好難回答。Android3.0之前有2種,3.0后有3種。
FrameAnimation(逐幀動(dòng)畫):將多張圖片組合起來進(jìn)行播放,類似于早期電影的工作原理,很多App的loading是采用這種方式。
TweenAnimation(補(bǔ)間動(dòng)畫):是對(duì)某個(gè)View進(jìn)行一系列的動(dòng)畫的操作,包括淡入淡出(Alpha),縮放(Scale),平移(Translate),旋轉(zhuǎn)(Rotate)四種模式。
PropertyAnimation(屬性動(dòng)畫):屬性動(dòng)畫不再僅僅是一種視覺效果了,而是一種不斷地對(duì)值進(jìn)行操作的機(jī)制,并將值賦到指定對(duì)象的指定屬性上,可以是任意對(duì)象的任意屬性。
//blog.csdn.net/yanbober/article/details/46481171
8:Android中跨進(jìn)程通訊有幾種方式
1:訪問其他應(yīng)用程序的Activity
如調(diào)用系統(tǒng)通話應(yīng)用
IntentcallIntent=newIntent(Intent.ACTION_CALL,Uri.parse("tel:12345678");startActivity(callIntent);
2:Content Provider
如訪問系統(tǒng)相冊(cè)
3:廣播(Broadcast)
如顯示系統(tǒng)時(shí)間
4:AIDL服務(wù)
9:AIDL理解
//bbs.51cto.com/thread-1086040-1.html
10:Handler的原理
//blog.csdn.net/lmj623565791/article/details/38377229
11:Binder機(jī)制原理
//blog.csdn.net/boyupeng/article/details/47011383
12:熱修復(fù)的原理
1:JavaSisst
2:AspectJ
3:Xposef
這里給出Xposef方案
//mp.weixin.qq.com/s?__biz=MzA3Mjk1MjA4Nw==&mid=400452659&idx=1&sn=841b49b875ec3b307f261ed52a7d9c4e&scene=23&srcid=1119JWRt0adNwGxTHiyok460#rd
13:設(shè)計(jì)一套圖片異步加載緩存方案
//www.cnblogs.com/zyw-205520/p/4997863.html
//blog.csdn.net/boyupeng/article/details/47127605
14:Android內(nèi)存泄露及管理
//gold.xitu.io/entry/56d64b9e816dfa005943a55c
15:Activity與Fragment通信
//gold.xitu.io/entry/56a87b2b2e958a0051906227
16:Fragment的那些坑
//www.jianshu.com/p/d9143a92ad94
//www.jianshu.com/p/fd71d65f0ec6
//www.jianshu.com/p/38f7994faa6b
17:Android UI適配
這里給出hongyang大神的方案
//blog.csdn.net/lmj623565791/article/details/45460089
18:布局優(yōu)化
//www.jianshu.com/p/145fc61011cd
19:Http Https
//www.jianshu.com/p/93fdebe5fef1
20:網(wǎng)絡(luò)請(qǐng)求優(yōu)化
//www.jianshu.com/p/3141d4e46240
21:數(shù)據(jù)庫優(yōu)化
//www.jianshu.com/p/3b4452fc1bbd
22:圖片優(yōu)化
//www.jianshu.com/p/5bb8c01e2bc7
23:HybridJAVA 與JS交互
//droidyue.com/blog/2014/09/20/interaction-between-java-and-java-in-android/
24:?jiǎn)卫?/strong>
//www.jianshu.com/p/a956024629cb
25:Java GC原理
//www.jianshu.com/p/d75a32ac5bed?
26:ANR
//www.jianshu.com/p/124f3b75e164
27:Volley
//www.jianshu.com/p/9e17727f31a1
28:JAVA注解反射原理
//www.jianshu.com/p/3968ffabdf9d
29:算法
//www.jianshu.com/p/ae97c3ceea8d
30:設(shè)計(jì)模式
//gold.xitu.io/entry/56ebb4ad5bbb50004c440972
31:RxJava
//gank.io/post/560e15be2dca930e00da1083?from=timeline&isappinstalled=0#toc_1
熱點(diǎn)新聞
課程問答