- 相關(guān)推薦
Android工程師的面試題
校招的日子結(jié)束了,結(jié)果也算圓滿。忙碌了一陣子,現(xiàn)在終于可以安安靜靜的做做項目看看書寫寫論文了。下面對這段時間面試遇到的問題并結(jié)合網(wǎng)上各位的大神秒下的面試題做個總結(jié),小編會持續(xù)更新,希望能在面試中助各位一臂之力!
Java基礎(chǔ):
1、內(nèi)存泄露的原因:
資源對象沒關(guān)閉。
如Cursor、File等資源。他們會在finalize中關(guān)閉,但這樣效率太低。容易造成內(nèi)存泄露。
SQLiteCursor,當數(shù)據(jù)量大的時候容易泄露
使用Adapter時,沒有使用系統(tǒng)緩存的converView。
即時調(diào)用recycle()釋放不再使用的Bitmap。
適當降低Bitmap的采樣率,如:
3
BitmapFactory.Options options = newBitmapFactory.Options();
options.inSampleSize = 2;//圖片寬高都為原來的二分之一,即圖片為原來的四分之一
Bitmap bitmap =BitmapFactory.decodeStream(cr.openInputStream(uri), null, options); preview.setImageBitmap(bitmap);
使用application的context來替代activity相關(guān)的context。
盡量避免activity的context在自己的范圍外被使用,這樣會導致activity無法釋放。
注冊沒取消造成內(nèi)存泄露
如:廣播
集合中的對象沒清理造成的內(nèi)存泄露我們通常把一些對象的引用加入到了集合中,當我們不需要該對象時,并沒有把它的引用從集合中清理掉,這樣這個集合就會越來越大。如果這個集合是static的話,那情況就更嚴重了。
Handler應該申明為靜態(tài)對象, 并在其內(nèi)部類中保存一個對外部類的弱引用。如下:
復制代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
static class MyHandler extends Handler
{
WeakReference mActivityReference;
MyHandler(Activity activity)
{
mActivityReference= new WeakReference(activity);
}
@Override
public void handleMessage(Message msg)
{
final Activity activity = mActivityReference.get();
if (activity != null)
{
mImageView.setImageBitmap(mBitmap);
}
}
}
2、ArrayList和LinkedList的區(qū)別
ArrayList初試大小為10,大小不夠會調(diào)用grow擴容:length = length + (length >> 1)
LinkedList中Node first,last。分別指向頭尾
ArrayList和LinkedList在性能上各 有優(yōu)缺點,都有各自所適用的地方,總的說來可以描述如下:
對ArrayList和LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對
ArrayList而言,主要是在內(nèi)部數(shù)組中增加一項,指向所添加的元素,偶爾可能會導致對數(shù)組重新進行分配;而對LinkedList而言,這個開銷是
統(tǒng)一的,分配一個內(nèi)部Entry對象。
在ArrayList的 中間插入或刪除一個元素意味著這個列表中剩余的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。
LinkedList不 支持高效的隨機元素訪問。
ArrayList的空 間浪費主要體現(xiàn)在在list列表的結(jié)尾預留一定的容量空間,而LinkedList的空間花費則體現(xiàn)在它的每一個元素都需要消耗相當?shù)目臻g
可以這樣說:當操作是在一列
數(shù)據(jù)的后面添加數(shù)據(jù)而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;當你的操作是在一列數(shù)據(jù)的前面或中
間添加或刪除數(shù)據(jù),并且按照順序訪問其中的元素時,就應該使用LinkedList了。
3、hashmap和hashtable的不同
繼承不同。
復制代碼
1
2
public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
Hashtable 中的方法是同步的,而HashMap中的方法在缺省情況下是非同步的。在多線程并發(fā)的環(huán)境下,可以直接使用Hashtable,但是要使用HashMap的話就要自己增加同步處理了。
【Android工程師的面試題】相關(guān)文章:
投行面試題07-24
軟件測試面試題01-17
中層副職競聘面試題09-05
來看看谷歌的面試題08-17
濟南稼軒中學小升初面試題07-21
壓力危機類面試題目突破技巧11-09
今年最強的面試題和最牛的答卷09-20
考察個人價值觀的另類面試題02-21
人力資源行業(yè)常見面試題匯總02-03
面試題:給我們一個錄取你的理由?11-16