Android(安卓)Framework面试题
Framework面试题 | ||
Android 系统基础 | JVM、Dalvik和ART是什么以及他们的关系 | 01 |
Binder机制 | 02 | |
系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么不同 | 03 | |
android系统的启动流程 | 04 | |
android中UID和PID的作用及区别 | 05 | |
android系统的低电耗模式(Doze模式)是怎么工作的 | 06 | |
android最近几个版本的系统差异或特性 | 07 | |
如何把一个APP配置成系统应用 | ||
有没有熟悉的一个系统服务如:AMS,PMS,WMS等,说说对它的理解 | ||
ActivityManagerService | 13 |
Framework面试题答案 | |
01 | JVM、Dalvik和ART是什么以及他们的关系 |
ART 就是 Android Runtime ,是安卓4.4之后的系统的新的虚拟机模式,改模式提升了运行效率,启用该模式之后,系统在安装APP的时候,会进行一次预编译,把代码转成机器语言存储在本地,这样运行的时候效率就高了。 Dalvik 是一种安卓系统在上面运行的虚拟机,因为安卓系统是以Linux 为底层构建的,为了更加高效的适配到各种不同的硬件设备上面,就创建了这个Dalvik 虚拟机,该虚拟机可以将程序的语言由java转成机器语言二进制运行,然而每次开启运用的时候都会执行一次编译,所以效率不是很高,所以我们需要ART,增加效率。 JVM 是 java虚拟机,是实现java夸平台的主要方式,可以使得java这样的高级语言编译成机器可以识别的机器语言,这样使得java 一次编译,到处运行
https://blog.csdn.net/qq_25804863/article/details/48696619 | |
02 | Binder机制 |
Binder机制 是一种进程间通信机制,提供了远程过程调用功能,就是RPC。他把系统的一系列组件连接在了一起,这些组件分别是上层的 Client 和server,中间层的 Service Manager,该组件 ;底层的 Binder驱动程序,系统的核心组件。开发者只要实现要client和server就可以了 | |
03 | 系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app 目录的权限有什么不同 |
统级app分成两种,一种在system/priva-app 一种在system/app,如果是修改多的还可能在sytem/vendor/app 。用户级的在data/app下面 | |
04 | android系统的启动流程 |
https://blog.csdn.net/qq_25804863/article/details/48669547 | |
05 | android中UID和PID的作用及区别 |
PID是各进程的身份标识,程序一运行系统就会自动分配给进程一个独一无二的PID.进程中止后PID被系统回收,可能会被继续分配给新运行的程序,但是在android系统中一般不会把已经kill掉的进程ID重新分配给新的进程,新产生进程的进程号,一般比产生之前所有的进程号都要大. UID在linux中就是用户的ID,表明是哪个用户运行了这个程序,主要用于权限的管理.而在android 中又有所不同,因为android为单用户系统,这时UID 便被赋予了新的使命,数据共享,为了实现数据共享,android为每个应用几乎都分配了不同的UID,不像传统的linux,每个用户相同就为之分配相同的UID. 如果让其他的开发者知道了我们的shareUserId,那我们的数据不是暴露了? 其实我们要使不同的程序能够相互访问,还需要拥有相同的签名,每个公司或者开发者的签名是唯一的,这样我们就不用担心了 | |
06 | android系统的低电耗模式(Doze模式)是怎么工作的 |
https://blog.csdn.net/qq_25804863/article/details/50229437 | |
07 | android最近几个版本的系统差异或特性 |
https://blog.csdn.net/qq_25804863/article/details/83348760 | |
08 | ActivityManagerService |
ActivityManagerService是AndroidFramework的核心,它管理着Android系统中的4大组件:Activity、Service、ContentProvider和BroadcastReceiver,同时也管理和调度所有用户进程. https://blog.csdn.net/qq_25804863/article/details/49459223 | |
09 | |
C/C++ 面试题 | ||
C/C++ 基础 | 引用和指针有什么区别? | 08 |
函数参数传递中值传递、地址传递、引用传递有什么区别? | 09 | |
static关键字有什么作用? | 10 | |
链表和数组的区别在哪里? | 11 | |
当i是一个整数的时候i++和++i那个更快?它们的区别是什么? | 12 | |
C/C++ 面试题及答案 | ||
08 | 引用和指针有什么区别? | |
(1)定义一个指针变量编译器会为它分配内存,而引用不占用任何内存; (2)引用必须在定义时被初始化,指针不必; (3)不存在指向空值的引用,但存在指向空值的指针。 | ||
09 | 函数参数传递中值传递、地址传递、引用传递有什么区别? | |
(1) 值传递,会为形参重新分配内存空间,将实参的值拷贝给形参,形参的值不会影响实参的值,函数调用结束后形参被释放; (2) 引用传递,不会为形参重新分配内存空间,形参只是实参的别名,形参的改变会影响实参的值,函数调用结束后形参不会被释放; (3) 地址传递,形参为指针变量,将实参的地址传递给函数,可以在函数中改变实参的值,调用时为形参指针变量分配内存,结束时释放指针变量。 | ||
10 | static关键字有什么作用? | |
(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时维持上次的值; (2)在模块内的static全局变量可以被模块内所用函数调用,但不能被模块外其他函数访问; (3)在模块内的static函数只能被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内; (4)在类中的static成员变量属于整个类拥有,对类的对象只有一份拷贝; (5)在类中的static成员函数属于整个类拥有,这个函数不接收this指针,因而只能访问static成员变量。 | ||
11 | 链表和数组的区别在哪里? | |
(1) 链表和数组都可以叫线性表,数组又叫顺序表,主要区别在于,顺序表是在内存中开辟一段连续的空间来存储数据,而链表是靠指针来连接多块不连续的空间,在逻辑上形成一片连续的空间来存储数据; (2) 数组要求空间连续,占用总空间小,链表不要求空间连续,占用总空间大; (3) 数组方便排序和查找,但删除和插入较慢;链表方便删除和插入,但查找较慢,不方便排序。 | ||
12 | 当i是一个整数的时候i++和++i那个更快?它们的区别是什么? | |
几乎一样。i++返回的是i的值,++i返回的是i+1的值,即++i是一个确定的值,是一个可以修改的左值。 |
更多相关文章
- C语言的函数递归(下)
- Android(安卓)应用开发特色
- Android(安卓)Service详解(三) AIDL使用解析
- 【Android】事件处理系统
- Android打开系统调试总开关
- Android(安卓)Cursor浅析
- Android系统版本与API等级对应关系表
- Android实现系统状态栏的隐藏和显示功能
- Android(安卓)8.1 从零开始写 HAL -- (2) 实现 HAL 主体