4.8號晚上8點多接到了阿里一面的電話,面試官人很好,和我聊了半個多小時。我面的是無線事業部,就是做淘寶客戶端的那個部門。面試問的都很基礎,剛開始問了hashmap和快速排序。接着就是問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吧,怎么解決這個沖突?
希望懂的朋友能評論一下,:)
