面试知识点总结01
1.Android 版本Bug
想必使用過 Android 5.0.1 系統(tǒng)的用戶對內(nèi)存泄露 bug 不會(huì)感到陌生,此缺陷不僅會(huì)導(dǎo)致內(nèi)存占用過高,還會(huì)進(jìn)而致使應(yīng)用及其后臺進(jìn)程被強(qiáng)制關(guān)閉,甚至是系統(tǒng)界面崩潰等。
內(nèi)存泄露
信息泄露
流量泄露
2.ArrayList 和LinkList的區(qū)別
ArrayList 采用的是數(shù)組形式來保存對象的,這種方式將對象放在連續(xù)的位置中,所以最大的缺點(diǎn)就是插入刪除時(shí)非常麻煩
LinkedList 采用的將對象存放在獨(dú)立的空間中,而且在每個(gè)空間中還保存下一個(gè)鏈接的索引 ,但是缺點(diǎn)就是查找非常麻煩 要叢第一個(gè)索引開始。
通俗理解: 你可以把 ArrayList看做是一個(gè)大小長度可變的數(shù)組來使用~~~ 一般情況也常用這個(gè)做查詢操作;
LinkedList呢 他其實(shí)是一種鏈表形式的容器,插入刪除很方便 。
?
3.Service的生命周期以及Banding Service 和 Start Service 的區(qū)別?
service根據(jù)不同的啟動(dòng)方式會(huì)展現(xiàn)出不同的生命周期:
如果以onStart()方式: context.startService() ->onCreate()- >onStart()->Service running context.stopService() | ->onDestroy() ->Service stop
如果Service還沒有運(yùn)行,則android先調(diào)用onCreate()然后調(diào)用onStart();如果Service已經(jīng)運(yùn)行,則只調(diào)用onStart(),所以一個(gè)Service的onStart方法可能會(huì)重復(fù)調(diào)用多次。
stopService的時(shí)候直接onDestroy,如果是調(diào)用者自己直接退出而沒有調(diào)用stopService的話,Service會(huì)一直在后臺運(yùn)行。
該Service的調(diào)用者再啟動(dòng)起來后可以通過stopService關(guān)閉Service。 所以調(diào)用startService的生命周期為:onCreate --> onStart(可多次調(diào)用) --> onDestroy
如果以onBInd()方式:
使用使用context.bindService()啟動(dòng)Service會(huì)經(jīng)歷:
? context.bindService()->onCreate()->onBind()->Service running
onUnbind() -> onDestroy() ->Service stop
onBind將返回給客戶端一個(gè)IBind接口實(shí)例,IBind允許客戶端回調(diào)服務(wù)的方法,比如得到Service運(yùn)行的狀態(tài)或其他操作。 ?這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Srevice就會(huì)調(diào)用onUnbind->onDestroy相應(yīng)退出。
? 所以調(diào)用bindService的生命周期為:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。 ?
在Service每一次的開啟關(guān)閉過程中,只有onStart可被多次調(diào)用(通過多次startService調(diào)用),其他onCreate,onBind,onUnbind,onDestory在一個(gè)生命周期中只能被調(diào)用一次。
? onStart()的方式一般用以本地服務(wù)的調(diào)用,Activity與Service不需要交互,調(diào)用者與Service無任何關(guān)系 如果以onBInd()方式:遠(yuǎn)程調(diào)用,Activity與Service會(huì)有交互,調(diào)用者與Service綁定在一起。
注意:Service需要在清單文件中進(jìn)行配置才能使用。
關(guān)于四大組件: http://www.cnblogs.com/pepcod/archive/2013/02/11/2937403.html 這個(gè)帖子寫的很好。
4.res/raw和assets目錄的區(qū)別
答: ?二者的相同點(diǎn):都會(huì)直接原封不動(dòng)的保存在APK中而不會(huì)被編譯成二進(jìn)制文件 ?
不同點(diǎn): ??
1.raw目錄下,不能存在文件,而不能包含文件夾。而assets可以包含下一級的文件夾 ?
?2.raw目錄下的資源會(huì)映射到R.java下生成資源ID,assets不會(huì)。
??3.獲得資源的方法不同如下: ??
?this.getAssets().open("xml/channels.xml"); ???
this.getResources().openRawResource(R.raw.students); ???
this.getClassLoader().getResourceAsStream("students.xml");
5.String與StringBuffer,StringBuilder的區(qū)別
1.三者在執(zhí)行速度方面的比較: StringBuilder>StringBuffer>String
2.String執(zhí)行速度最慢的原因 ?String :字符串常量 ?StringBuffer:字符串變量 ?StringBuilder:字符串變量 ?由上可知:string是字符串常量也就是不可改變的對象,
?如: String str1 ="Hello"; ??
str1 = str1+"wolrd"; ??
syso(str1);---->Helloworld; ??
雖然輸出是這樣,但是內(nèi)部實(shí)現(xiàn)是:首先創(chuàng)建一個(gè)對象str1,然后在創(chuàng)建一個(gè)新的對象str1來合并操作, ??而原來的對象被GC回收掉。 ??
而StringBuffer和StringBuilder則是在原來的對象上進(jìn)行操作。 ??StringBuffer有一個(gè)方法:append(),添加字符串; ?
?2.線程安全性:????
StringBuffer是線程安全的 ???
StringBuilder 是線程非安全的; ?
對于三者使用的總結(jié):
?1.如果要操作少量的數(shù)據(jù)用 = String
? 2.單線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuilder
? 3.多線程操作字符串緩沖區(qū) 下操作大量數(shù)據(jù) = StringBuffer
6. .9.PNG是干什么的?怎么使用? ?
9png圖片一般用在需要拉伸的地方,比如聊天程序的對話框,字?jǐn)?shù)不同,對話框的大小也不同。
?所以就有了9png,之所以叫9是因?yàn)閳D片被分割為9個(gè)部分。
?//目前制作還不是太理解。。。 ?
轉(zhuǎn)載于:https://www.cnblogs.com/taotaomajia/p/4629568.html
總結(jié)
- 上一篇: [Noip模拟赛] Power
- 下一篇: HashMap两种遍历数据的方式