溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發(fā)布時間:2020-08-08 16:11:42 來源:ITPUB博客 閱讀:161 作者:yilian 欄目:移動開發(fā)

開頭有話說

面試不刷題,相當于不穿鎧甲上戰(zhàn)場,這心里,慌得很!

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

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

今天就給大家?guī)韼椎篮唵蔚拿嬖囶},來測試一下自己有沒有大意!

一,view的事件分發(fā)機制

dispatchTouchEvent 分發(fā)事件

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

onTouchEvent 處理點擊事件

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

二,Handler原理機制

Handler主要負責發(fā)送和接受消息,Looper負責不斷輪詢MessageQueue,有新的消息就交給Handler處理,如果輪詢不到新的消息,那就自身就處于阻塞狀態(tài)。

Handler簡單圖解

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

Handler鐵三角

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

λ MessageQueue:消息隊列,用于將所有收到的消息以隊列的形式進行排列,并提供入隊和出隊的方法。在looper的構造函數中創(chuàng)建,因此一個Looper也就對應了一個MessageQueue.

通過enqueueMessage實現消息的入隊,通過next方法實現出隊

2.Looper 輪詢器 作用:與當前線程綁定,保證一個線程只會有一個Looper實例,同時一個Looper實例也只有一個- MessageQueue。Looper 通過loop()方法調用messagequeue的next方法,不斷從 MessageQueue中去取消息

詳解單個handler原理

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

圖解多個handler原理

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

Handler的創(chuàng)建流程

  • 1、首先Looper.prepare()在本線程中保存一個Looper實例,然后該實例中保存一個MessageQueue對象;因為Looper.prepare()在一個線程中只能調用一次,所以MessageQueue在一個線程中只會存在一個。
  • 2、Looper.loop()會讓當前線程進入一個無限循環(huán),不端從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可以成功創(chuàng)建呢,這是因為在Activity的啟動代碼中,已經在當前UI線程調用了Looper.prepare()和Looper.loop()方法。

三,mvc,mvp,mvvm

三個架構模式:

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

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

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

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

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

  • MVVM:Model-View-ViewModel,是對MVP的一個優(yōu)化模式,

采用了雙向綁定:View的變動,自動反映在ViewModel,反之亦然。

MVC, MVP, MMVM用來解決業(yè)務邏輯和視圖之間的耦合

Mvc和mvp的最主要區(qū)別:

Mvc中model可以直接和view交互

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

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

最后

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

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

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

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

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

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

為進大廠刷爆面試題,最后倒在了基礎題上?太苦了!
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI