美文网首页Android进阶之路Android开发Android开发经验谈
为进大厂刷爆面试题,最后倒在了基础题上?太苦了!

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

作者: 程序员的Vere | 来源:发表于2020-03-11 22:00 被阅读0次

    开头有话说

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

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

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

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

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

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

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

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


    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/pdlkjhtx.html