為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

yilian發表於2020-03-11

開頭有話說

面試不刷題,相當於不穿鎧甲上戰場,這心裡,慌得很!

不論是什麼樣的大小面試,要想不被面試官虐的不要不要的,只有刷爆面試題題做好全面的準備,當然除了這個還需要在平時把自己的基礎打紮實,這樣不論面試官怎麼樣一個知識點裡往死裡鑿,你也能應付如流啊~

而我們很多人,一心刷那個高階面試題上,最後卻倒在了基礎題上,實在可惜。

今天就給大家帶來幾道簡單的面試題,來測試一下自己有沒有大意!

一,view的事件分發機制

dispatchTouchEvent 分發事件

onInterceptTouchEvent 攔截事件只有viewgroup才有,view和activity沒

onTouchEvent 處理點選事件

  • 1,圖解ACTION_DOWN 事件分發,如果面試的時候能把下面的圖畫出來。能增分不少dispatchTouchEvent和 onTouchEvent的框裡有個【true---->消費】的字,表示的意思是如果方法返回true,那麼代表事件就此消費,不會繼續往別的地方傳了,事件終止
為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!
  • 2,紅色的箭頭代表ACTION_DOWN 事件的流向,藍色的箭頭代表ACTION_MOVE 和 ACTION_UP 事件的流向
為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

二,Handler原理機制

Handler主要負責傳送和接受訊息,Looper負責不斷輪詢MessageQueue,有新的訊息就交給Handler處理,如果輪詢不到新的訊息,那就自身就處於阻塞狀態。

Handler簡單圖解

為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

Handler鐵三角

1.Handler android的訊息機制就是指Handler機制,Handler機制的執行需要MeeageQueue和Looper的輔助。

λ MessageQueue:訊息佇列,用於將所有收到的訊息以佇列的形式進行排列,並提供入隊和出隊的方法。在looper的建構函式中建立,因此一個Looper也就對應了一個MessageQueue.

透過enqueueMessage實現訊息的入隊,透過next方法實現出隊

2.Looper 輪詢器 作用:與當前執行緒繫結,保證一個執行緒只會有一個Looper例項,同時一個Looper例項也只有一個- MessageQueue。Looper 透過loop()方法呼叫messagequeue的next方法,不斷從 MessageQueue中去取訊息

詳解單個handler原理

為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

圖解多個handler原理

為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

Handler的建立流程

  • 1、首先Looper.prepare()在本執行緒中儲存一個Looper例項,然後該例項中儲存一個MessageQueue物件;因為Looper.prepare()在一個執行緒中只能呼叫一次,所以MessageQueue在一個執行緒中只會存在一個。
  • 2、Looper.loop()會讓當前執行緒進入一個無限迴圈,不端從MessageQueue的例項中讀取訊息,然後回撥msg.target.dispatchMessage(msg)方法。
  • 3、Handler的構造方法,會首先得到當前執行緒中儲存的Looper例項,進而與Looper例項中的MessageQueue想關聯。
  • 4、Handler的sendMessage方法,會給msg的target賦值為handler自身,然後加入MessageQueue中。
  • 5、在構造Handler例項時,我們會重寫handleMessage方法,也就是msg.target.dispatchMessage(msg)最終呼叫的方法。

好了,總結完成,大家可能還會問,那麼在Activity中,我們並沒有顯示的呼叫Looper.prepare()和Looper.loop()方法,為啥Handler可以成功建立呢,這是因為在Activity的啟動程式碼中,已經在當前UI執行緒呼叫了Looper.prepare()和Looper.loop()方法。

三,mvc,mvp,mvvm

三個架構模式:

  • MVC:Model-View-Controller,經典模式,很容易理解,主要缺點有兩個:

1,View對Model的依賴,會導致View也包含了業務邏輯;

2,Controller會變得很厚很複雜。

  • MVP:Model-View-Presenter,MVC的一個演變模式,將Controller換成了Presenter, 主要為了解決上述第一個缺點,將View和Model解耦,

不過第二個缺點依然沒有解決。

  • MVVM:Model-View-ViewModel,是對MVP的一個最佳化模式,

採用了雙向繫結:View的變動,自動反映在ViewModel,反之亦然。

MVC, MVP, MMVM用來解決業務邏輯和檢視之間的耦合

Mvc和mvp的最主要區別:

Mvc中model可以直接和view互動

mvp中model 與view 的互動由presenter完成

為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!
為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

最後

篇幅有限,就放出來幾道題來可以大家測試一下,更多的面試題目,我已經整理好成PDF大全,可以分享給大家。
這份Android學習PDF大全真的包含了方方面面了,內含Java基礎知識點、Android基礎、Android進階延伸、演算法合集等等


為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!

我的這份學習PDF,可以有效的幫助大家掌握知識點。

總之也是在這裡幫助大家學習提升進階,也節省大家在網上搜尋資料的時間來學習,也可以分享給身邊好友一起學習

關注我看個人介紹,或直接  點選我免費領取

分享不易,不點贊+關注支援一下嘛?


為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2679710/,如需轉載,請註明出處,否則將追究法律責任。

相關文章