温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

为进大厂刷爆面试题,最后倒在了基础题上?太苦了!

发布时间:2020-08-08 16:11:42 来源:ITPUB博客 阅读:133 作者:yilian 栏目:移动开发

开头有话说

面试不刷题,相当于不穿铠甲上战场,这心里,慌得很!

不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

而我们很多人,一心刷那个高级面试题上,最后却倒在了基础题上,实在可惜。

今天就给大家带来几道简单的面试题,来测试一下自己有没有大意!

一,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,可以有效的帮助大家掌握知识点。

总之也是在这里帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

关注我看个人介绍,或直接  点击我免费领取

分享不易,不点赞+关注支持一下嘛?

为进大厂刷爆面试题,最后倒在了基础题上?太苦了!
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI