為進大廠刷爆面試題,最後倒在了基礎題上?太苦了!
開頭有話說
面試不刷題,相當於不穿鎧甲上戰場,這心裡,慌得很!
不論是什麼樣的大小面試,要想不被面試官虐的不要不要的,只有刷爆面試題題做好全面的準備,當然除了這個還需要在平時把自己的基礎打紮實,這樣不論面試官怎麼樣一個知識點裡往死裡鑿,你也能應付如流啊~
而我們很多人,一心刷那個高階面試題上,最後卻倒在了基礎題上,實在可惜。
今天就給大家帶來幾道簡單的面試題,來測試一下自己有沒有大意!
一,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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 3w 字長文爆肝 Java 基礎面試題!太頂了!!!Java面試題
- 刷完500道BAT面試題,我能去面試大廠了嗎?BAT面試題
- java面試題--基礎上Java面試題
- 我倒在了美團面試演算法題:字串大數相加面試演算法字串
- 面試三輪我倒在了一道sql題上——sql效能優化面試SQL優化
- Java大廠面試題Java面試題
- 【9】進大廠必須掌握的面試題-DevOps面試面試題dev
- 【Java面試】Java面試題基礎系列212道(上)Java面試題
- 大廠微服務及後端基礎若干面試題總結微服務後端面試題
- 後面試時代與 AI 刷題面試AI
- Spark Core基礎面試題總結(上)Spark面試題
- 【5】進大廠必須掌握的面試題-Java面試-spring面試題JavaSpring
- 【4】進大廠必須掌握的面試題-Java面試-jdbc面試題JavaJDBC
- java基礎面試題Java面試題
- Java面試系列:Java面試題基礎系列228道(上)Java面試題
- 10次面試9次被刷?吃透這500道大廠Java高頻面試題後,怒斬offerJava面試題
- 面試鴨上線了!程式設計師線上面試刷題神器面試程式設計師
- 2019 JavaScript面試題詳解(基礎+進階)JavaScript面試題
- 面試官讓我回去把基礎搞紮實,含淚狂刷Android基礎面試118題面試Android
- 【12】進大廠必須掌握的面試題-持續測試面試面試題
- 【11】進大廠必須掌握的面試題-持續整合面試面試題
- Golang 基礎面試題 01Golang面試題
- Java基礎面試題下Java面試題
- js面試題(基礎)梳理JS面試題
- go面試題-基礎類Go面試題
- 面試刷題總結面試
- 面試題錦(大廠面試前夕的掙扎)面試題
- 史上最詳細的一線大廠Mysql面試題詳解MySql面試題
- 大廠高頻面試題Spring Bean生命週期最詳解面試題SpringBean
- Spring Boot基礎面試題2020大集合Spring Boot面試題
- 大廠iOS面試題——備戰2019iOS面試題
- 大廠常見Java面試題:HibernateJava面試題
- 大廠常考的Spring面試題Spring面試題
- 大廠必問的Redis面試題Redis面試題
- Java面試題-基礎篇一Java面試題
- Java面試題-基礎篇二Java面試題
- iOS 基礎面試題彙總iOS面試題
- Java面試題-基礎篇四Java面試題