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