天天看點

阿裡Android一面(校招)

4.8号晚上8點多接到了阿裡一面的電話,面試官人很好,和我聊了半個多小時。我面的是無線事業部,就是做淘寶用戶端的那個部門。面試問的都很基礎,剛開始問了hashmap和快速排序。接着就是問Android相關的問題。因為資料結構和算法是基礎,這裡就不多說了,主要寫一下與Android相關的問題。

首先問了一個Android中事件分發的問題,如下圖:

阿裡Android一面(校招)

一個LinerLayout裡放一個Button,當點選Button的時候事件是怎麼傳遞的?

點選事件用MotionEvent來表示,當點選事件發生時,最先傳遞給Activity,用Activity的dispatchTouchEvent來進行事件的派發,具體的工作是用Activity内部的Window來完成的。Window将事件傳遞個decor view,decor view一般是目前幾面的底層容器(setContentView所設定的View的父容器,decor view是一個FrameLayout),通過Activity.getWindow().getDecorView()可以獲得。現在,事件傳遞到decorView了,decorView再将事件傳遞給LinerLayout,LinerLayout将事件傳遞給Button。

這裡要補充的是:當父容器通過 dispatchTouchEvent來傳遞事件時,如果他的onInterceptTouchEvent函數傳回true,就不會将事件傳遞個子view,當然Android的還提供了一種防止父容器阻斷事件的機制:隻要子View調用requestDisallowInterceptTouchEvent方法,就能保證子View一定能收到點選事件。

關于時間的派發可以看一下我的另一篇部落格Android滑動事件沖突。

接着面試官又問了Button中調用setOnclickedListener和在onTouchEvent中處理點選事件的差別,這個我覺的很簡單,就說都差不多,setOnclickedListener重點onClick就是Android在onTouchEvent中完成的。

這個問題不懂面試官想問什麼,歡迎大家評論,告訴我一下,謝謝 :)

還問了一個關于HTTP傳回碼的問題:你知道HTTP傳回碼代表什麼嗎?

1××  保留

2××  表示請求成功地接收

3××  重定向

4××  客戶錯誤

5××  伺服器錯誤

最後,問了一個Android中動态加載SDK的問題,面試官給我提示了幾個參數,可這個我之前沒做過,完全不懂。

問題描述:現在要動态加載倉庫中的兩個SDK,但這兩個SDK中都調用了同一個jar吧,怎麼解決這個沖突?

希望懂的朋友能評論一下,:)

繼續閱讀