Android庞大的源码体系是怎么设计的?2020字节跳动Framework 高频面试题详细总结

三、Binder 机制(IPC、AIDL 的使用)

1、什么是 AIDL 以及如何使用(★★★★)

①aidl 是 Android interface definition Language 的英文缩写,意思 Android 接口定义语言。

②使用 aidl 可以帮助我们发布以及调用远程服务,实现跨进程通信。

③将服务的 aidl 放到对应的 src 目录,工程的 gen 目录会生成相应的接口类

2、AIDL 的全称是什么?如何工作?能处理哪些类型的数 据?(★★★)

AIDL 全称 Android Interface Definition Language(AndRoid 接口描述语 言) 是一种接口描述语言; 编译器可以通过 aidl 文件生成一段代码,通过预先 定义的接口达到两个进程内部通信进程跨界对象访问的目的。需要完成2件事情: 1. 引入 AIDL 的相关类.; 2. 调用 aidl 产生的 class.理论上, 参数可以传递基本数 据类型和 String, 还有就是 Bundle 的派生类, 不过在 Eclipse 中,目前的 ADT 不 支持 Bundle 做为参数。

3.android 的 IPC 通信方式,线程(进程间)通信机制有哪些?

1)ipc 通信方式:binder、contentprovider、socket

2)操作系统进程通讯方式:共享内存、socket、管道

4.为什么使用 Parcelable,好处是什 么?

简单来说,Parcelable 是一个 interface,有一个方法 writeToParcel(Parcel dest, int flags),该方法接收两个参数,其中第一个参数类型是 Parcel。看起来 Parcelable 好像是 对 Parcelable 的一种包装,从实际开发中,会在方法 writeToParcel 中调用 Parcel 的某 些方法,完成将对象写入 Parcelable 的过程。

5. Android 图像显示相关流程,Vsync 信号等

1)没有使用 Vsync 的情况

2)有 Vsync 的情况

3)双重缓冲

4)三重缓冲

BATJ 大牛笔记Android Framework 内核解析

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

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

章节部分内容展示:

那位BATJ 的大佬是这个方面的专家,他整理出来的这份资料一共有452页,都是他根据自己的工作实战经验,把Android Framework 内核解析精编出来的劳动成果,那份资料火爆全网,但是现在开放下载了!

文章内容比较长,一篇文章写不完,为了不影响大家的阅读体验,下面只以截图的方式进行部分内容的展示。

大家可以看一下有没有自己需要或者感兴趣的点,方便对自己的知识体系进行查漏补缺。

第一节 Binder 系列—开篇

一、概述

二、 Binder

三、 提纲

四. 源码目录

第二节 Binder Driver 初探

一、Binder 驱动概述

二、 Binder 核心方法

三、附录

第三节 Binder Driver 再探

一、Binder 通信简述

二、Binder 通信协议

三. 场景总结

四、Binder 内存机制

第四节 Binder 启动 ServiceManager

一. 概述

二. 启动过程

三. 核心工作

四. 总结

第五节获取 ServiceManager

一. 概述

二. 获取 ProcessState 对象

三. 获取 BpBinder 对象

四. 获取 BpServiceManager

五. 总结

Android Framework 精编内核解析预览图

第六节注册服务(addService)

第七节获取服务(getService)

第八节 framework 层分析

第九节如何使用 Binder

第十节如何使用 AIDL

第十一节 Binder 总结

第十二节 Binder 面试题全解析

最后,面试前还该准备哪些资源复习?


其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

最后

下面是辛苦给大家整理的学习路线


就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

这里再分享一下我面试期间的复习路线:(以下体系的复习资料是我从各路大佬收集整理好的)

《Android开发七大模块核心知识笔记》

最后

下面是辛苦给大家整理的学习路线

[外链图片转存中…(img-WsDOaOja-1647698371541)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值