(轉)Android 50道面試題總結(大家看看吧)

來源:互聯網
上載者:User

標籤:android   style   http   color   使用   檔案   

 

 

1、 方法重載與覆蓋的區別?(Overload與Override的區別)
2、 String 和StringBuffer的區別
3、 字串“abcde”通過寫一個函數不讓調用第三方的字串,實現一個字串倒序,比如字串“abcde”變成“edcba”.
4、 抽象類別與介面的區別(abstract與interface的區別
5、 集合的實作類別與區別?
6、 線程有幾種狀態,分別是哪些?(調用run()和調用start()的區別
7、 線程的實現方式
8、 sleep() 與wait()的區別
9、 線程中wait,join,sleep,yield,notify,notifyall,synchronized,區別及聯絡
10、 Final、finally、finanlize()的區別
11、 常用設計模式及應用情境,用兩種方式實現單例模式,要求安全執行緒
12、 常用排序演算法,時間複雜度,實現思路
13、 android系統架構?
14、 Activity生命週期?儲存activity的一些資訊在哪個生命週期方法中
15、 Activity的onSaveInstanceState() 和 onRestoreInstanceState()
16、 Android的四大組件是什嗎?它們的作用是什嗎?
17、 廣播如何調用,有什麼方式,各自的區別?
18、 Android中asset檔案夾和raw檔案夾區別
19、 Android中的五種儲存方式及其應用情境
20、 什麼是ANR 如何避免它?(Android線程間的通訊方式?
21、 Handler的運行機制(運行原理)(Handler,Looper,MessageQueue,Message之間的關係) 8
22、 listview最佳化策略
23、 ListView分頁載入實現思路
24、 ListView圖片非同步載入實現思路
25、 Intent的原理,作用,可以傳遞哪些類型的參數
26、 如何?螢幕解析度的自適應
27、 簡述Android中的IPC機制
28、 Android程式入口如何判斷?
29、 android哪幾種方式訪問網路
30、 說說HttpClient的通訊過程
31、 移動互聯資料互動格式有哪些及其區別?(Json與xml的區別
32、 XML解析有哪幾種?各自優缺點,官方推薦使用哪種?
33、 百度地圖核心類,及實現的功能
34、 GC記憶體泄露在什麼情況下回出現?怎麼解決
35、 android記憶體的最佳化
36、 載入大圖片的時候如何防止記憶體溢出
37、 Android緩衝機制
38、 如何?訊息推送,有哪些方式,各自優缺點,最常使用哪種?
39、 MVC在Android中的應用
40、 Android自訂群組件實現思路
41、 版本更新的實現思路
42、 播放視頻有哪些實現方式
43、 NDK開發流程?(JNI運行原理
44、 如何?一鍵退出
45、 AndroidManifest.xml資訊清單檔<Activity>標籤中屬性android:excludeFromRecents="true"android:screenOrientation="portrait" android:configChanges="orientation|locale"的含義
46、 如何將一個Activity設定成視窗的樣式
47、 談談UI中,Padding和Margin有什麼區別,gravity與layout_gravity的區別
48、 哪個組件可以實現手風琴效果,用來實現設定介面的類,實現抽屜效果,懸浮視窗?
49、 Android SDK 3.0(HoneyComb)及4.0(IceCream)新特性
50、 android用戶端如何?自動登入


  1、方法重載與覆蓋的區別?( Overload與Override的區別)答: 方法的重載屬於編譯時間多態,方法名相同參數列表不同,傳回值必須相同或都沒有傳回值類型。方法的覆蓋屬於運行時多態,子類覆蓋父類的方法,子類指向父類引用,在調用方法的時候用父類的引用調用。2、String和StringBuffer的區別答: STRING的長度是不可變的,STRINGBUFFER的長度是可變的。如果你對字串中的內容經常進行操作,特別是內容要修改時,那麼使用StringBuffer,如果最後需要String,那麼使用StringBuffer的toString()方法。StringBuder是不安全的 StringBuffer 是安全的3、字串“abcde”通過寫一個函數不讓調用第三方的字串,實現一個字串倒序,比如字串“abcde”變成“edcba”答: String   src   =  "ABCDEF ";
String   dst   =  new  StringBuffer(src).reverse().toString();4、抽象類別與介面的區別(abstract與interface的區別)答:abstract可以修飾抽象方法,而一個類只要有一個抽象方法,就必須用abstract定義該類,即抽象類別。用interface修飾的類,裡面的方法都是抽象方法,因此在定義介面的時候,可以直接不加那些修飾,系統會預設的添上去。介面裡面的欄位都是公有常量,即public static final修飾的欄位。5、集合的實作類別與區別?答:Collection介面,集合結構總的父介面,有兩個子介面list和set   List介面元素有序可重複.   實作類別有:ArrayList 數組實現輕量級,運行快,線程不安全。JDK1.2 查詢快            Vector   數組實現重量級,運行慢,安全執行緒。JDK1.0            LinkedList鏈表實現 常用語堆棧與隊列的實現增刪操作快Set 介面 元素無序不可重複實作類別有:HashSet,底層用hashCode()演算法實現,保證元素的無序唯一,自訂對象存進HashSet為了保證元素內容不重複需要覆蓋hashCode()與equals()方法。          SortedSet(不重要) 元素有序(Unicode升序)唯一  TreeSet要求元素有序,自訂的對象需要實現Comparable介面的 compareTo(object o)方法Map(介面): 與Collection介面無關,有一個子介面SortedMap特點: 元素是key-value, key唯一,無序; value可重複  實作類別: HashMap 輕量級線程不安全的,允許key或value為null JDK1.2        HashTable 重量級安全執行緒的 不允許key或value為null   JDK1.0           Properties是HashTable的子類,主鍵和值都是字串  SortedMap:(不重要)  特點: key唯一,有序(Unicode升序)  實作類別:TreeMap6、線程有幾種狀態,分別是哪些?(調用run()和調用start()的區別)答:1)、建立狀態(New):新建立了一個線程對象。  2)、就緒狀態(Runnable):線程對象建立後,其他線程調用了該對象的start()方法。該狀態的線程位於可運行線程池中,變得可運行,等待擷取CPU的使用權。  3)、運行狀態(Running):就緒狀態的線程擷取了CPU,執行run()方法。  4)、阻塞狀態(Blocked):阻塞狀態是線程因為某種原因放棄CPU使用權,暫時停止運行。直到線程進入就緒狀態,才有機會轉到運行狀態。阻塞的情況分三種:  (一)、等待阻塞:啟動並執行線程執行wait()方法,JVM會把該線程放入等待池中。  (二)、同步阻塞:啟動並執行線程在擷取對象的同步鎖時,若該同步鎖被別的線程佔用,則JVM會把該線程放入鎖池中。  (三)、其他阻塞:啟動並執行線程執行sleep()或join()方法,或者發出了I/O請求時,JVM會把該線程置為阻塞狀態。當sleep()狀態逾時、join()等待線程終止或者逾時、或者I/O處理完畢時,線程重新轉入就緒狀態。5)、死亡狀態(Dead):線程執行完了或者因異常退出了run()方法,該線程結束生命週期。當調用start方法的時候,該線程就進入就緒狀態。等待CPU進行調度執行,此時還沒有真正執行線程。當調用run方法的時候,是已經被CPU進行調度,執行線程的主要任務。7、線程的實現方式答:線程的實現有兩種方式,一是繼承Thread類,二是實現Runnable介面8、sleep()與 wait()的區別答:1.這兩個方法來自不同的類分別是,sleep來自Thread類,和wait來自Object         類。         2.最主要是sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他線程可         以使用同步控制塊或者方法。sleep不出讓系統資源;wait是進入線程等待池         等待,出讓系統資源,其他線程可以佔用CPU。一般wait不會加時間限制,         因為如果wait線程的運行資源不夠,再出來也沒用,要等待其他線程調用         notify/notifyAll喚醒等待池中的所有線程,才會進入就緒隊列等待OS分配系         統資源。sleep(milliseconds)可以用時間指定使它自動喚醒過來,如果時間不到         只能調用interrupt()強行打斷。3.wait,notify和notifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用4. Sleep需要捕獲異常,而wait不需要9、線程中wait,join,sleep,yield, notify,notifyall,synchronized,區別及聯絡答:1).sleep()方法在指定時間內讓當前正在執行的線程暫停執行,但不會釋放“鎖標誌”。不推薦使用。sleep()使當前線程進入阻塞狀態,在指定時間內不會執行。2).wait()方法在其他線程調用對象的notify或notifyAll方法前,導致當前線程等待。線程會釋放掉它所佔有的“鎖標誌”,從而使別的線程有機會搶佔該鎖。喚醒當前對象鎖的等待線程使用notify或notifyAll方法,waite() 和notify()必須在synchronized函數或synchronized block中進行調用。
  • yield方法暫停當前正在執行的線程對象。yield()只是使當前線程重新回到可執行狀態,所以執行
  • 3)yield()的線程有可能在進入到可執行狀態後馬上又被執行。yield()只能使同優先順序或更高優先順序的線程有執行的機會。4).join方法等待該線程終止。等待調用join方法的線程結束,再繼續執行。如:t.join();//主要用於等待t線程運行結束,若無此句,main則會執行完畢,導致結果不可預測。Final、finally、finanlize()的區別答:final?用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。finally是異常處理語句結構的一部分,表示總是執行。finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。 
Loader: 裝載器從android3.0開始引進。它使得在activity或fragment中非同步載入資料變得簡單50、android用戶端如何?自動登入答: 通過SharedPreferences儲存使用者名稱,密碼,當儲存不為空白時實現自動登入功能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.