Android系统面经_140道面试题答案解析
140道安卓系统Framework面试题答案链接:《Android系统面试题全解析》
本人是2020年毕业于广东工业大学研究生:许乔丹,有国内大厂CVTE和世界500强企业安卓开发经验,该专栏整理本人对常见安卓系统Framework开发面试题的理解;
1、 Binder
● 请介绍什么是Binder机制 ⭐⭐⭐⭐
● 请介绍Binder机制流程 ⭐⭐⭐⭐
● Binder有什么优势?(字节跳动)⭐⭐⭐⭐⭐
● Binder机制需要多少次内存拷贝 ⭐⭐⭐
● Binder是如何做到一次拷贝?(腾讯) ⭐⭐⭐
● Android有很多跨进程通信方法,为何选择Binder?⭐⭐⭐
● MMAP的原理讲解(腾讯)⭐⭐
● Binder机制是如何跨进程的(阿里)⭐⭐⭐
● 描述AIDL生成的java类细节(字节跳动)⭐⭐⭐
● 为什么Intent不能传递大数据(阿里)⭐⭐⭐
2、JNI
● 阐述你对JNI的理解⭐⭐⭐⭐⭐
● 使用JNI有什么优点⭐⭐⭐⭐⭐
● JNI的应用场景⭐⭐⭐
● 什么是JNI?具体说说如何实现Java与C++的互调⭐⭐⭐⭐⭐
● 什么是NDK?为什么要使用NDK?⭐⭐
● JNI开发的一般步骤是?⭐⭐⭐⭐
● JNI函数的注册方法都有什么?⭐⭐⭐⭐
● 谈谈你对JNI静态注册和动态注册的区别。⭐⭐
3、Android系统启动流程
- 你了解Android系统启动流程吗?⭐⭐⭐⭐⭐
- system_server 为什么要在 Zygote 中启动,而不是由 init 直接启动呢?⭐⭐⭐
- 能说说具体是怎么导致死锁的吗?⭐⭐⭐
- Zygote 为什么不采用 Binder 机制进行 IPC 通信?⭐⭐⭐⭐
- 请简述从点击图标到app启动的流程。⭐⭐⭐⭐⭐
- 说说Activity加载的流程。⭐⭐⭐⭐⭐
- Zygote为什么需要用到Socket通讯而不是Binder?⭐⭐⭐⭐⭐
- Zygote进程最原始的进程是什么进程(或者Zygote进程是怎么来的)?⭐⭐⭐
4、AMS深入浅出
- AMS是什么?⭐⭐⭐⭐⭐
- AMS在Android起到什么作用,简单的分析下Android的源码。⭐⭐⭐⭐⭐
- 简述ActivityManagerService是什么时候初始化的?⭐⭐⭐
- 简述Binder、ActivityManagerNative、ActivityManagerService三者的关系⭐⭐⭐⭐
- 简述AMS的注册流程⭐⭐⭐⭐
- 简述ActivityThread和ApplicationThread,以及关系和区别⭐⭐⭐
- ActivityManagerService和zygote进程通信是如何实现的⭐⭐⭐
- 系统是如何存AMS服务对象的,以及应用层如何拿到AMS应用的?⭐⭐
- AMS与servicemanage进程是什么关系,app启动流程讲一讲。⭐⭐⭐⭐⭐
- 简述从点击图标到app启动的流程。⭐⭐⭐⭐⭐
5、深入理解WMS
1.简述PMS是什么?有什么作用?⭐⭐⭐⭐⭐
2.分别就应用接口层、Framework层、HAL层、内核层介绍下Android电源管理系统?⭐⭐⭐
3.PMS的作用是什么?PMS跟咱们的安装速度和启动速度有关系吗?⭐⭐⭐⭐
4.PMS被谁启动的,它是一个单独进程运行吗?如果不是,又是在哪个进程呢?⭐⭐⭐
5.PMS的启动过程是怎么样的?⭐⭐⭐
6.应用要怎么样才能调用PowerManager进行系统休眠或者唤醒呢?⭐⭐⭐⭐⭐
6、WMS深入浅出
- WMS是什么?有什么功能?⭐⭐⭐⭐⭐
- WMS、AMS与Activity间的联系是什么?⭐⭐⭐
- Activity应用进程在什么时候会调用addView,进而由WMS来处理addWindow 呢?⭐⭐⭐
7、Sensor传感器系统架构
- 简述Android系统关机流程⭐⭐⭐⭐⭐
- 以应用调用Shutdown为例,分析下系统的关机流程?⭐⭐⭐
- 简单说下Android上层都有哪些触发关机的方法?⭐⭐⭐
- 如果你遇到一个系统异常关机的问题,请简述下你的分析思路,以及可以通过获取什么log进行分析?⭐⭐⭐⭐⭐
8、音频系统框架
- 简述声卡的添加流程。⭐⭐⭐
- 简述Android音频系统框架。⭐⭐⭐⭐
- 调节音量,系统流程是怎么走的?⭐⭐⭐⭐⭐
- 简述插入一个音频设备,系统流程是怎么走的?天翼云 ⭐⭐⭐⭐⭐
- 如果插入一个设备没有声音,怎么debug?天翼云 ⭐⭐⭐⭐⭐
9、Kernel dts解析(设备树)
1) 设备树是什么?它在嵌入式系统中扮演什么角色?⭐⭐⭐⭐⭐ 2) 什么是DTS和DTSI文件?它们有什么不同?⭐⭐⭐⭐ 3) 在设备树中,什么是节点?什么是属性?⭐⭐⭐ 4) 什么是设备树的兼容性字符串?它们的作用是什么?⭐⭐ 5) 在设备树中,如何使用`#include`语句引用其他DTS和DTSI文件?⭐⭐⭐⭐ 6) 什么是DTB文件?它们在嵌入式系统中扮演什么角色?⭐⭐⭐⭐⭐ 7) 请描述一个Android设备的设备树结构,并解释每个节点和属性的作用。⭐⭐⭐ 8) 在设备树中,如何描述和配置设备的中断信息?⭐⭐⭐⭐ 9) 如何使用设备树在内核中注册硬件设备驱动程序?⭐⭐⭐⭐ 10) 设备树的使用有哪些优势?如何使设备树更加灵活和易于开发?⭐⭐⭐⭐⭐
10、Recovery框架
1) Recovery框架在Android系统中扮演什么角色?(有什么作用)⭐⭐⭐⭐⭐ 2) Android系统OTA升级和Recovery有什么关联?⭐⭐⭐⭐ 3) 讲述下Recovery的启动流程?⭐⭐⭐⭐⭐ 4) Android Recovery框架在应对系统故障和异常情况方面有何优点?请简述其优点和具体应用场景。⭐⭐⭐⭐⭐ 5) Android Recovery框架中的recovery分区包含哪些内容?请说明其作用。⭐⭐
11、按键与遥控
12、HDMI CEC框架
13、网络模块
牛客高级系列专栏
安卓(安卓系统开发也要掌握)
- 想通关安卓面试,请看:《150道安卓高频面试题目录及答案链接》
- 想通关安卓系统面试,请看:《140道安卓系统Framework面试题目录及答案链接》
- 想进阶安卓开发,请看:《Android进阶知识体系解析_15大安卓进阶必备知识点》
- 想了解安卓APP完整开发流程,请看:《安卓APP完整开发流程》
- 想掌握安卓App性能优化,请看:《安卓性能优化讲解和实战专栏》
- 想掌握Gradle语法,制作Gradle插件,请看:《安卓Gradle语法解析和实践大全》
嵌入式
- 想通关嵌入式面试,请看: 《111道嵌入式面试题目录及答案链接》
- 想多掌握几个嵌入式项目,请看:《6个嵌入式项目交流分享(附源码)》