面试题 - Android

面试题 - Android
BambooAPP进程启动流程
Activity finish流程
WMS addWindow的主要工作
介绍一下Task
说一下窗口容器树结构
WindowToken和WindowState是什么关系
Activity界面最终显示出来的整体流程
内存增长怎么分析
kotlin 协程和线程有什么区别
Framework调试怎么加断点
A是C端,B是S端,
问 如何保证 A 知道B 是否存活,,B如何知道 A存活,
如果 A死了,B该怎么办?
B 死了 A该怎么办?
‘## 问原理
*什么是 Android Binder?
Android Binder 是如何实现进程间通信的?
Android 为什么采用 Binder 作为主要的的 IPC 机制?
Binder 是如何实现仅通过一次拷贝将数据从 A 进程传递给 B 进程的?
Binder 的优势是什么?
这些都是问 Binder 的基本原理,回答都大同小异。对于应用层开发,99%止步于此,再问就不礼貌了。
如果是应聘 Framework 岗位,可能还需要熟悉下面的问题。
问流程
说一下进程从ServiceManager获取服务的流程Binder 是如何找到目标服务并唤醒目标进程/线程的Android Binder 中的 Proxy 和 Stub 是什么
应用该如何获取和添加 Binder 服务?
AIDL 是什么?如何使用的?
Android Binder 中有哪些组件?工作的流程是什么?
无论怎么问,只要把之前讲的 Native 和 Java 层示例程序的源码分析掌握,就可以以不变应万变
问细节
了解 mmap 的原理吗?
使用 Binder 传输数据的最大限制是多少,被占满后会导致什么问题?
Intent 传递大数据限制?
binder_proc 结构体中有两个 binder_ref 红黑树,它们的作用是什么?
Android APP 进程天生支持Binder通信的原理是什么?
AIDL 中的 in out inout oneway 这些关键字的作用是什么?
Intent 传递大数据限制?
Binder 服务在调用期间抛出了 RuntimeException 异常,服务端会 crash 么?
客户端调用 Binder 接口后抛出的 DeadobjectException 是什么意思?
Binder 驱动加载过程中有哪些重要的步骤?
Binder 的死亡通知机制的作用是什么,它是如何实现的?
bindservice 所绑定的”服务概念和 Binder 中的服务 Server 有什么区别?
writestrongBinder与readstrongBinder的作用和原理?
每个进程最多存在多少个 Binder 线程,这些线程都被占满后会导致什么问题?
Binder 驱动什么时候释放缓冲区的内存?
为什么使用广播传输 2MB的Bitmap会抛异常,而使用AIDL生成的 Binder 接口传输 Bitmap 就
不会抛异常呢?
应用进程为什么支持 Binder 通信,直接可以使用四大组件呢?
四大组件中常见的 2 个 Binder 服务是?
Binder 都有什么主要的协议?Binder 协议中BC 与BR 开头的协议都有什么区别?*A 是 c 端,B 是s 端,问 如何保证 A 知道 8 是否存活,,B 如何知道 A 存活,如果 A 死了,B 该怎么办?B 死了 A 该怎么办?
细节就比较见功底了,需要我们从应用到内核层,对 Binder 有非常全面的了解。
1.invalidate和requestlayout对后续绘制渲染有什么不同?
2.为什么View刚被加载时想获取其的宽高,需要view.post(Runnalbe)中获取?3.黄油计划提出的Vsync和三缓冲机制为什可以大大改善Android的交互和流畅度体验?
4. Vsync信号是谁发出的?需要App主动请求吗?界面没有变化是否会有Vsync信号?
App是否响应Vsync信号取决于什么?
5.调用android绘制三部曲(measure、layout和draw)的performTraversals是怎么触发的?
6.Android的同步屏障和异步消息是什么,它们如何在渲染机制中发挥作用的?7.SurfaceView°/TextureView渲染视频时频繁的刷新界面,为什么U!界面不卡顿?8.android 5.0引入的硬件加速RenderThread是如何提升渲染效率的?指令归类重排序是什么?
9.动画可以在RenderThread上执行吗
10.使用OpengGLES渲染时进行eglSwapBuffer切换前后台Buffer依赖Vsync信号吗?11.App进程将views树构建为DisplayList给到GPU进行渲染到Surface 上作为BufferQueue°的生产者,SurfaceFlinger是BufferQueue的消费者获取Surface转为layer进行不同layer的合成,那么App进程和SurfaceFlinger进程是如何通信的?12.VSYNC信号是通过什么方式传递?
13.整体上介绍下Android绘制渲染流程,App开发者熟悉渲染流程后对于日常开发有什
么帮助?