1. 程式人生 > >android高階面試題彙總

android高階面試題彙總

各位大俠,年底跳槽大熱即將開啟,你想跳到更好的,薪水更高的公司嗎?能夠詳細的回答出以下幾個問題,那麼你距離高薪就沒有距離了。晚上公佈答案!!!

1.android 記憶體洩漏是怎麼回事?怎麼處理?

答:記憶體洩漏主要原因是開發者在一些靜態變數的引用或者系統服務資源使用完畢後沒有及時的釋放導致出現記憶體洩漏。多個記憶體洩漏還會導致記憶體溢位。

2.訊息處理機制是怎麼個處理過程?

答:訊息處理機制從字面意思來看,就是Android開發中使用該機制來進行訊息的傳遞。主要運用在UI執行緒和子執行緒,子執行緒和子執行緒之間的訊息傳遞。其中包含了有三個概念,Handler,Looper,MessageQueue。各自都是什麼功能呢,首先MessageQueue是一個訊息佇列,它是一個連結串列的結構,遵循著先進先出的原則,Android中通過Message物件傳送訊息到MessageQueue中。Looper是一個訊息傳遞的運輸工具,它扮演的角色是,運送MessageQueue給handle去處理。Handle是一個訊息接收並處理的平臺,它接收訊息並且處理它。


3.什麼是自定義元件,你在專案中用到了哪些?

答:自定義元件分為三種,分別為組合元件、繼承元件、自繪元件。

在專案中,組合元件很常用,大多數App都會用到自定義的title,一個title中有搜尋、返回鍵、標題文字。這就是一個組合型的元件;

繼承元件的話,主要是在原先系統控制元件不滿足要求的情況下,為了拓展它的功能而運用的。比如exctend LinearLayout、ListView,AutoCompleteTextview等,實現OnMeasure、onDraw

自繪元件,主要是圖形影象方面運用的比較多,比如勾畫一個餅狀圖、儀表盤。主要是exctend View 實現onDraw方法,根據座標點進行繪製。

4.activity的生命週期

答:正常的Activity的生命週期是:onCreate,onStart,onResume,onStop,onDestory

1:A頁面跳B頁面,然後finish B   A生命週期是:onPaused,onStop;onRestart,onResume

2:處於A頁面按home鍵  A生命週期:onPaused,onStop

5.四大啟動模式,分別的說一下有什麼區別?

答:首先四大啟動模式分別是 standard、singleTask、singleTop、singleInstance。

standard:標準啟動模式,也是Android預設的啟動模式。

singleTop:如果設定了該模式,當前的Acitivity如果存在任務棧頂,則不需要建立新的activity;

singleTask:如果設定了該模式,當前的Acitivity如果存在任務棧中,則不需要建立新的activity例項,並把這個activity之上的例項,通通出棧;

singleInstance如果設定了該模式,當前的Acitivity如果存在該應用中的任何一個任務棧中,則不需要建立新的activity;

6.專案中用到了哪些框架?以及瞭解程度如何?

答:okhttp,imageLoader,zxing,xutils,pushSDK,高德Sdk,百度FaceSDK

7.android中事件分發機制的內部流程?詳解recyclerView用途

答:Android的事件分發機制是指使用者建立一個點選事件,系統會將該事件分發到每一層佈局中。其中一共有三層佈局,分別是activity層---->viewGroup層---->view層,每一層都有實現一個dispatchTouchEvent、onTouchEvent的方法。事件分發是先通過由上而下的機制進行事件的傳遞。若在該層的dispatchTouchEvent方法中處理最後return true的話,那麼事件將會被該層消費,不會繼續往下層傳遞.若是return false,則時間繼續往下層傳遞至View層,然後最終被view的onTouchEvent消費,然後按照自下而上的方式傳遞給每一層的onTouchEvent方法,最後傳遞給使用者一個事件處理的結果。

recyclerView實際上是ListView和GridView的升級版。它存在於Android L support.v7包中。與ListView對比增加了滑動刪除、拖拽的實現,和自動重新整理資料的實現。開發者只要實現其中的ItemTouchHelper內部類方法中對應的滑動刪除和拖拽的方法就可以接收其回撥。要注意的是需要和recyclerView進行繫結。itemTouchHelper.attachToRecyclerView(mrecyclerView).

8.你在專案中有哪些常用或者遇到過的設計模式,舉幾個例子,並說說特點。

答:常用的設計模式有建造者模式、單例模式、工廠模式、原型模式、介面卡模式。

若想詳細瞭解參考這裡 http://blog.csdn.net/ruizhenggang/article/details/78837183

9.自定義歌詞的滾動和播放是怎麼實現的?

答:自定義歌詞有兩種實現方式。一種是Textview覆蓋的方式,實現播放中的歌詞高亮;一種是使用drawtext方式畫出歌詞。

首先程式會讀取目錄下的歌詞檔案,儲存在對應的物件中,包括每節歌詞的播放時間和時長;然後獲取對應的音訊檔案的總時長。通過簡單的數學計算,然後分別開啟兩個執行緒,一個播放音樂一個執行對應的歌詞。若播到對應的歌詞則通過頁面顯示的文字,用高亮文字進行覆蓋。這是一種簡單的歌詞播放功能。還有一種是通過drawText方式,將正在播放的歌詞直接用不同的顏色繪畫出來。

10.自定義折線圖和自定義的手勢密碼實現的原理?

答:

11.在專案中常用哪些佈局,螢幕適配是怎麼做的?

答:常用的佈局有LinearLayout,realativeLayout,FrameLayout。螢幕適配儘量使用linearLayout來做。或者可以使用百分比適配的方式。

12.詳細描述一下AscynTask是什麼?

答:

13.android的四大元件,以及元件與元件之間是怎麼互動的?資料的儲存有哪些?

答:四大元件有 activity、Service、contentProvider、broadcastReceiver

通過Intent來進行相互的呼叫。

資料儲存有:sharedPerfence,fileOutStream,SDCard,DButils,http儲存。

14.android中listView怎麼實現左滑刪除的?然後它是怎麼避免左滑事件和上下滑事件不衝突的?

答:

15.android中一個圖片的list,實現點選圖片,根據點選點展開一個activity,實現方案。

答:

16.handler中,若連續傳送多條訊息,且第一條訊息傳送後睡兩秒,第二條睡眠5秒,第三條正常傳送,執行的順序是什麼?

答:

17.有使用過哪些系統的元件或功能呢?

答:

18.對於luncherMode瞭解多少?

答:

19.service的使用,startService和bindService有什麼區別?

答:

20.有了解boradCastReceiver的優先順序嗎?

答:

21.獲取android根佈局,以及rootview下所有的button,並設定顏色

22.service中開啟子執行緒和Activity中開啟子執行緒對比

23.bitmap的快取存在哪?怎麼獲取?

24.activity怎樣傳遞資料到Fragment?Fragment怎麼傳遞資料到Activity?

25.效能優化,怎麼保證應用啟動不卡頓