前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >那些大厂必问的Handler和Binder,有必要去研究么?

那些大厂必问的Handler和Binder,有必要去研究么?

原创
作者头像
Android技术干货分享
修改2020-08-31 17:49:14
1K0
修改2020-08-31 17:49:14
举报
文章被收录于专栏:Android技术分享Android技术分享

经常会有人问:有必要去研究Handler和Binder么?感觉工作中好像用不到呀。

刚学完新知识的我…

以前开始学习Android的时候,有时候想研究源码,研究一些Android底层原理,只能去翻书,或者向其他公司的大牛请教,一个疑问有时候会卡好几天。

那时候只要了解四大组件、视图、网络请求,你就能拿到一份薪资丰厚的offer;当时,如果你要是精通java基础,知道如何处理OOM,组件生命周期原理,熟悉android源码、架构体系,进阿里腾讯都是很轻松。

现在,你只会这些再出去试试?

现在面试对Android开发者的要求越来越高了!尤其是阿里、头条、腾讯等大厂,面试问的很多都是原理。

Android Framework的三大核心功能:

1、View.java:View工作原理,实现包括绘制view、处理触摸、按键事件等。 2、ActivityManagerService.java:Ams 管理所有应用程序的Activity 等 。 3、WindowManagerService.java:Wms 为所有应用程序分配窗口,并管理这些窗口。

来来来,看看这几道大厂关于handler和Binder的面试真题,能不能答上来?

Handler相关面试题

  • 一个线程有几个Handler?
  • Handler 内存泄漏原因?为什么其他的内部类没有说过有这个问题?
  • 为何主线程可以new Handler?如果想要在子线程中new Handler要做些什么准备?
  • 子线程中维护的Looper,消息队列无消息的时候的处理方案是什么?有什么用?
  • 既然可以存在多个Handler往MessageQueue中添加数据(发消息时各个Handler可能处于不同线程),那它内部是如何确保线程安全的?
  • 我们使用Message时应该如何创建它?
  • Looper死循环为什么不会导致应用卡死?
  • 谈谈消息机制 Handler 作用 ?有哪些要素 ?流程是怎样的 ?
  • 一个线程能否创建多个 Handler,Handler 跟 Looper 之间的对应关 系 ?
  • 软引用跟弱引用的区别
  • Handler 引起的内存泄露原因以及最佳解决方案
  • 为什么系统不建议在子线程访问 UI?
  • 使用 Handler 的 postDealy 后消息队列会有什么变化?
  • 可以在子线程直接 new 一个 Handler 吗?怎么做?
  • Message 可以如何创建?哪种效果更好,为什么?
  • ........

Handler面试题答案

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是浮于表象,这对我们的知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读Android系统源码,还包括各种优秀的开源库。

这里还为大家整理了Android开发相关源码精编解析

深入解析 Handler 源码解析

  • 发送消息
  • 消息入队
  • 消息循环
  • 消息遍历
  • 消息的处理
  • 同步屏障机制
  • 阻塞唤醒机制

Binder相关面试题

  • Binder有什么优势?(字节跳动)
  • Binder是如何做到一次拷贝的?(腾讯)
  • MMAP的原理讲解;(腾讯)
  • 为什么Intent不能传递大数据?(阿里)
  • 描述AIDL生成的java类细节;(字节跳动)
  • 四大组件底层的通信机制;(字节跳动)
  • 为什么Intent不能传递大数据?(阿里)
  • Binder机制是如何跨进程的?
  • Binder机制原理
  • ........

Binder面试题答案

深入解析Binder源码解析

  • 设计架构整体图
  • 数据结构鸟瞰
  • Binder设计基础
  • ioctl(): 内核/用户空间调用
  • mmap(): 内核/用户空间内存映射
  • Binder中的ONEWAY与非ONEWAY调用
  • Binder中的生产者与消费者
  • Binder代理对象的handle句柄
  • Binder内核中的红黑树

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点!

最后我在这里分享一下这段时间从朋友,大佬那里收集到的一些2019-2020BAT 面试真题解析,里面内容很多也很系统,包含了很多内容:Android 基础、Java 基础、Android 源码相关分析、常见的一些原理性问题等等,可以很好地帮助我们深刻理解Android相关知识点的原理以及面试相关知识

这份资料把大厂面试中常被问到的技术点整理成了 PDF ,包知识脉络 + 诸多细节;还有 高级架构技术进阶脑图 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

这里也分享给广大面试同胞们,希望每位程序猿们都能面试成功~

以上内容均放在了开源项目:我的github 中已收录,里面包含不同方向的自学Android路线、面试题集合/面经、及系列技术文章等,资源持续更新中...

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Handler相关面试题
  • Binder相关面试题
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档