1. 程式人生 > >CVTE安卓二面面經

CVTE安卓二面面經

一面:

1、Service兩種啟動方式有什麼區別?

2、binder機制瞭解嗎,說一下。怎麼確定客戶端呼叫的具體是哪一個方法?底層是怎麼處理的?

3、四種引用

4、GC回收演算法,為什麼要用分代收集演算法,假如有個大物件放不進Survivor區怎麼辦?分配擔保機制。

5、有了解過OKHttp的原始碼嗎,有什麼缺點?有用過其他的網路請求嗎?

6、activity生命週期,彈出一個dialog,activity的生命週期會變化嗎,那跳轉到一個不是全屏的activity呢?為什麼不一樣?

onStart和onResume有什麼區別?位於前臺和可見有什麼區別?

7、MVC解決什麼問題?那和MVP有什麼不一樣?

8、瞭解window嗎,那說說window是什麼東西,為什麼會有window?rootView有什麼關係。。。

9、你瞭解過哪些設計模式,最熟的是哪一種(感覺要跪)?說一種你認為最好的單例模式?為什麼靜態內部類的單例可以實現執行緒安全?

10、手寫生產者消費者模式,沒有要求。手寫反轉字串,不可以用現有的api

11、有了解過java執行緒安全的容器嗎?currentHashMap底層是怎麼實現執行緒安全的呢,和HashTable有什麼不一樣,使用的鎖是什麼鎖?

12、HashMap發生雜湊衝突時怎麼處理?你知道還有哪些解決雜湊衝突的方法?為什麼要用這種方法

13、你瞭解多執行緒同步嗎?synchronized和reentrantLock有什麼不同,瞭解reentrantLock的條件物件嗎?什麼情況需要使用?

14、廣播有哪些註冊方法?剛開機後沒有開啟app能收到靜態廣播嗎?什麼情況會收不到廣播?瞭解有序廣播嗎?

15、你專案中的socket是怎麼保持連線的?有了解過心跳包嗎?

16、activity的啟動模式,如何使用singleTask實現singleInstance?

17、自定義view有寫過嗎?

二面:

1、平時有看一些安卓的原始碼嗎?messageQueue底層是怎麼實現的?Looper有什麼作用?

2、專案有什麼架構設計嗎?Builder模式用在專案哪些場景?

3、binder池有了解嗎?onTransact()和*&&%¥#(聽不懂)

4、策略模式和狀態模式有什麼不同?(專案中用到)

5、職業規劃,想往哪個方向發展

6、自定義view需要注意什麼?如何實現自定義view的動畫?

7、記憶體抖動有了解嗎?如何排除?

8、效能優化方面有了解嗎?

9、有沒有學習kotlin和RxJava?

10、有看過哪些原始碼嗎?說一下。EventBus的粘性事件是怎麼處理的?

11、說一下ImageLoader的快取策略,LRUCache是怎麼實現的?

12、手寫一個棧,需要考慮執行緒同步和泛型

13、java設計的一些原則的理解,單一職責原則,開閉原則等

總體而言,就面試體驗而言,就面試體驗而言,是我面過最好的公司。。。一面問的問題比較多,先問專案,再問安卓,再問Java,多針對基礎。二面問的偏向專案優化。雖然很多問題答不上來,面試官還是很友好的。

Android移動網際網路技術:879078537