2022 | Android大厂面试必问之FrameWork——Binder、Handler、WMS、AMS核心原理解析

通常作为一个Android APP开发者,我们并不关心Android的源代码实现,不过随着Android开发者越来越多,企业在筛选Android程序员时越来越看中一个程序员对于Android底层的理解和思考,这里的底层主要就是Android Framewok中各个组件的运行原理。

这里分享一份**《Android Framework 开发揭秘》**,深入Android底层原理的探索。内容包括:系统启动流程分析、Binder 解析、Handler解析、AMS 解析、WMS解析、PKMS Android10.0 源码解读。

每一章节都会对一个Framework知识点进行详细解析,并且还包括相关面试题的详细解析。帮助大家在巩固Framework知识点的同时复习知识点的常用面试题。(资料文末免费领取~)

第一章 系统启动流程分析

第一节 Android启动概览 第二节 init.rc解析 第三节 Zygote 第四节 面试题

第二章 Binder 解析

第一节 宏观认识 Binder 第二节 binder 的 jni 方法注册 第三节 binder驱动 第四节 数据结构 第五节 启动 service_manager 第六节 获取 service_manager 第七节 addService 流程 第八节 Binder 面试题全解析

第三章 Handler解析

第一节 源码分析 第二节 难点问题 第三节 Handler 常问面试题

第四章 AMS 解析

第一节 引言 第二节 Android架构 第三节 通信方式 第四节 系统启动系列 第五节 AMS 第六节 AMS 面试题解析

第五章 WMS解析

第一节 Activity 与 Window 相关概念 第二节 计算Activity窗口大小的过程分析 第三节 对窗口的组织方式分析 第四节 对输入法窗口的管理分析 第五节 对壁纸窗口的管理分析 第六节 计算窗口Z轴位置的过程分析 第七节 显示Activity组件的启动窗口的过程分析 第八节 切换Activity窗口的过程分析 第九节 显示窗口动画的原理分析

第六章 PKMS Android10.0 源码解读

第一节 前言 PKMS 是什么东西? 第二节 PKMS 概述信息 第三节 PKMS角色位置 第四节 PKMS 启动过程分析 第五节 APK的扫描 第七节 PMS之权限扫描 第八节 PackageManagerService大综合笔记

需要《Android Framework 开发揭秘》、 Android Framework面试题(含答案解析)资料的朋友,可以点击此处免费领取!

Framework相关面试题

系统启动

  • android系统启动流程
  • SystemServer,ServiceManager,SystemServiceManager的关系
  • 孵化应用进程这种事为什么不交给SystemServer来做,而专门设计一个Zygote
  • Zygote的IPC通信机制为什么使用socket而不采用binder

Binder

  • Android中进程和线程的关系,区别
  • 为何需要进行IPC,多进程通信可能会出现什么问题
  • Android中IPC方式有几种、各种方式优缺点
  • 为何新增Binder来作为主要的IPC方式
  • 什么是Binder
  • Binder的原理,Binder Driver 如何在内核空间中做到一次拷贝的?
  • 使用Binder进行数据传输的具体过程
  • Binder框架中ServiceManager的作用
  • 什么是AIDL
  • AIDL使用的步骤
  • AIDL支持哪些数据类型
  • AIDL的关键类,方法和工作流程
  • 如何优化多模块都使用AIDL的情况
  • 使用 Binder 传输数据的最大限制是多少,被占满后会导致什么问题
  • Binder 驱动加载过程中有哪些重要的步骤
  • 系统服务与bindService启动的服务的区别
  • Activity的bindService流程
  • 不通过AIDL,手动编码来实现Binder的通信

Handler

  • Handler的实现原理
  • 子线程中能不能直接new一个Handler,为什么主线程可以 主线程的Looper第一次调用loop方法,什么时候,哪个类
  • 3.Handler导致的内存泄露原因及其解决方案
  • 4.一个线程可以有几个Handler,几个Looper,几个MessageQueue对象
  • 5.Message对象创建的方式有哪些 & 区别?Message.obtain()怎么维护消息池的?
  • Handler 有哪些发送消息的方法
  • Handler的post与sendMessage的区别和应用场景
  • handler postDealy后消息队列有什么变化,假设先 postDelay 10s, 再postDelay 1s, 怎么处理这2条消息
  • MessageQueue是什么数据结构
  • Handler怎么做到的一个线程对应一个Looper,如何保证只有一个MessageQueue,ThreadLocal 在 Handler机制中的作用
  • HandlerThread是什么 & 好处 &原理 & 使用场景
  • IdleHandler及其使用场景
  • 消息屏障,同步屏障机制
  • 子线程能不能更新UI
  • 为什么Android系统不建议子线程访问UI
  • Android中为什么主线程不会因为Looper.loop()里的死循环卡死,MessageQueue#next 在没有消息的时候会阻塞,如何恢复?
  • Handler消息机制中,一个looper是如何区分多个Handler的,当Activity有多个Handler的时候,怎么样区分当前消息由哪个Handler处理,处理message的时候怎么知道是去哪个callback处理的
  • Looper.quit/quitSafely的区别
  • 通过Handler如何实现线程的切换
  • Handler 如何与 Looper 关联的
  • Looper 如何与 Thread 关联的
  • Looper.loop()源码
  • MessageQueue的enqueueMessage()方法如何进行线程同步的
  • MessageQueue的next()方法内部原理
  • 子线程中是否可以用MainLooper去创建Handler,Looper和Handler是否一定处于一个线程
  • ANR和Handler的联系

WMS

  • 什么是WMS
  • WMS是如何管理Window的
  • IWindowSession是什么,WindowSession的创建过程是怎样的
  • WindowToken是什么
  • WindowState是什么
  • Android窗口大概分为几种?分组原理是什么
  • Dialog的Context只能是Activity的Context,不能是Application的Context
  • App应用程序如何与SurfaceFlinger通信的,View 的绘制是如何把数据传递给 SurfaceFlinger 的
  • 共享内存的具体实现是什么
  • relayout是如何向SurfaceFlinger申请Surface
  • 什么是Surface

AMS

  • ActivityManagerService是什么?什么时候初始化的?有什么作用?
  • ActivityThread是什么?ApplicationThread是什么?他们的区别
  • Instrumentation是什么?和ActivityThread是什么关系?
  • ActivityManagerService和zygote进程通信是如何实现的
  • ActivityRecord ProcessRecord
  • ActivityManager ,ActivityManagerProxy的关系
  • 手写实现简化版AMS

文章篇幅有限,需要《Android Framework 开发揭秘》、 Android Framework面试题(含答案解析)资料的朋友,可以点击此处免费领取!

全部评论

相关推荐

11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
10-06 12:46
门头沟学院 Java
跨考小白:定时任务启动
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务