Android面试题目整理与讲解
生活随笔
收集整理的這篇文章主要介紹了
Android面试题目整理与讲解
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這一篇文章專門整理一下研究過的Android面試題,內(nèi)容會隨著學習不斷的增加,如果答案有錯誤,希望大家可以指正
1.簡述Activity的生命周期
當Activity開始啟動的時候,首先調(diào)用onCreate(),onStart(),onResume()方法,此時Activity對用戶來說,是可見的狀態(tài)
當Activity從可見狀態(tài)變?yōu)楸籇ialog遮擋的狀態(tài)的時候,會調(diào)用onPause()方法,此時的Activity對用戶可見,但是不能相 應(yīng)用戶的點擊事件
當Activity從可見狀態(tài)變?yōu)楸黄渌腁ctivity完全覆蓋或者是點擊Home進入后臺的時候,會依次調(diào)用onPause(),onStop()方法,如果在這個期間,系統(tǒng)內(nèi)存不足,導致Activity被回收的話,還會調(diào)用onDestory()方法
當Activity從被Dialog遮擋的狀態(tài)恢復(fù)的時候,會調(diào)用onResume()方法,從而恢復(fù)可以點擊的狀態(tài)
當Activity從被其他Activity遮擋或者是進入后臺狀態(tài)恢復(fù),而且沒有被系統(tǒng)回收的時候,會依次調(diào)用onRestart(),onStart(),onResume(),恢復(fù)到可以與用戶進行交互的狀態(tài)
當Activity從被其他Activity遮擋或者進入后臺,而且被系統(tǒng)回收的時候,相當于重新打開一個Activity,既調(diào)用onCreate(),onStart(),onResume()方法,從而可以與用戶進行交互
在onPause()方法執(zhí)行后,系統(tǒng)會停止動畫等消耗 CPU 的操作,同時我們應(yīng)該在這里保存數(shù)據(jù),因為這個時候程序的優(yōu)先級降低,有可能被系統(tǒng)收回。在這里保存的數(shù)據(jù),應(yīng)該在 onResume 里讀出來,幫用戶恢復(fù)之前的狀態(tài)。
在onDestroy()執(zhí)行后,activity就被真的干掉,可以用 isFinishing()來判斷它,如果此時有 Progress Dialog顯示,我們應(yīng)該在onDestroy()里 cancel 掉,否則線程結(jié)束的時候,調(diào)用Dialog 的 cancel 方法會拋異常。
2.Intent啟動Activity有幾種方式,如何實現(xiàn)?
Intent啟動Activity有兩種方式,分別為顯式意圖,隱式意圖 第一種,顯示意圖的實現(xiàn)。 [java]?view plaincopyprint?
[java]?view plaincopyprint?
這樣我們就一目了然了,其實我們經(jīng)常使用的Intent的構(gòu)造方法是第二種方式的簡化版 第二種,是隱式意圖的實現(xiàn)。 首先我們看一下隱式意圖的調(diào)用方式 [java]?view plaincopyprint?
這樣當我們使用setAction的時候,就可以知道我們到底是想跳轉(zhuǎn)到哪一個頁面了。
3.Android中獲取圖片有哪幾種方式
方式一 [java]?view plaincopyprint?[java]?view plaincopyprint?
方式三
[java]?view plaincopyprint?
方式四
[java]?view plaincopyprint?
1.?ArrayList,Vector, LinkedList 的存儲性能和特性
ArrayList 和 Vector 都是使用數(shù)組方式存儲數(shù)據(jù),此數(shù)組元素數(shù)大于實際存儲的數(shù)據(jù)以便增加和插入元素,它們都允許直接按 序號索引元素,但是插入元素要涉及數(shù)組元素移動等內(nèi)存操作,所以索引數(shù)據(jù)快而插入數(shù)據(jù)慢,Vector 由于使用了 synchroni zed 方法(線程安全),通常性能上較 ArrayList 差,而 LinkedList 使用雙向鏈表實現(xiàn)存儲,按序號索引數(shù)據(jù)需要進行前向或后 向遍歷,但是插入數(shù)據(jù)時只需要記錄本項的前后項即可,所以插入速度較快。?2.Collection 和 Collections 的區(qū)別
Collection 是集合類的上級接口,繼承與他的接口主要有 Set 和 List. Collections 是針對集合類的一個幫助類,他提供一系列靜態(tài)方法實現(xiàn)對各種集合的搜索、排序、線程安全化等操作。3.HashMap 和 Hashtable 的區(qū)別
HashMap 是 Hashtable 的輕量級實現(xiàn)(非線程安全的實現(xiàn)),他們都完成了 Map 接口,主要區(qū)別在于 HashMap 允許空(null)鍵值(key),由于非線程安全,效率上可能高于 Hashtable。 HashMap 允許將 null 作為一個 entry 的 key 或者 value,而 Hashtable 不允許。? HashMap 把 Hashtable 的 contains 方法去掉了,改成 containsvalue 和 containsKey。因為 contains 方法容易讓人引起誤解。 Hashtable 繼承自 Dictionary 類,而 HashMap 是 Java1.2 引進的 Map interface 的一個實現(xiàn)。 最大的不同是,Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多個線程訪問 Hashtable 時,不需要自己為它的 方法實現(xiàn)同步,而 HashMap 就必須為之提供外同步。 Hashtable 和 HashMap 采用的 hash/rehash 算法都大概一樣,所以性能不會有很大的差異。?4.sleep() 和 wait() 有什么區(qū)別
sleep 是線程類(Thread)的方法,導致此線程暫停執(zhí)行指定時間,給執(zhí)行機會給其他線程,但是監(jiān)控狀態(tài)依然保持,到時 后會自動恢復(fù)。調(diào)用 sleep 不會釋放對象鎖。? wait 是 Object 類的方法,對此對象調(diào)用 wait 方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發(fā) 出 notify 方法(或 notifyAll)后本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態(tài)。?5.Overload 和 Override 的區(qū)別
Overloaded 的方法是否可以改變返回值的類型? 方法的重寫 Overriding 和重載 Overloading 是 Java 多態(tài)性的不同表現(xiàn)。重寫 Overriding 是父類與子類之間多態(tài)性的一種表現(xiàn),重載 Overloading 是一個類中多態(tài)性的一種表現(xiàn)。如果在子類中定義某方法與其父類有相同的名稱和參數(shù),我們說該方法被重寫 (Overriding)。子類的對象使用這個方法時,將調(diào)用子類中的定義,對它而言,父類中的定義如同被"屏蔽"了。如果在一個類 中定義了多個同名的方法,它們或有不同的參數(shù)個數(shù)或有不同的參數(shù)類型,則稱為方法的重載(Overloading)。Overloaded 的 方法是可以改變返回值的類型。?6.同步和異步有何異同,在什么情況下分別使用他們?
如果數(shù)據(jù)將在線程間共享。例如正在寫的數(shù)據(jù)以后可能被另一個線程讀到,或者正在讀的數(shù)據(jù)可能已經(jīng)被另一個線程寫過了, 那么這些數(shù)據(jù)就是共享數(shù)據(jù),必須進行同步存取。 當應(yīng)用程序在對象上調(diào)用了一個需要花費很長時間來執(zhí)行的方法,并且不希望讓程序等待方法的返回時,就應(yīng)該使用異步編程, 在很多情況下采用異步途徑往往更有效率。總結(jié)
以上是生活随笔為你收集整理的Android面试题目整理与讲解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android最全面试题71道题 详解
- 下一篇: 我的android面试经历