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是什么以及他们的关系

JVM 是 java虚拟机,是实现java夸平台的主要方式,可以使得java这样的高级语言编译成机器可以识别的机器语言,让java 可以一次编译,到处运行

Dalvik 是Android系统在上面运行的虚拟机,Dalvik虚拟机是专门为移动设备定制的,它允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik应用都是一个独立的Linux进程。独立的进程可以防止虚拟机崩溃的时所有进程都被关闭。

ART 是指 Android Runtime ,是安卓4.4之后推出替代DVM的,DVM中的应用每次运行时,字节码都需要通过即时编译器(Just In Time,JIT)转换成机器码,这会使应用的运行效率降低。而在ART中,系统在安装应用时会进行一次预编译(Ahead Of Time,AOT),将字节码预先编译成机器码并存在本地,这样应用每次运行时就不需要再执行编译了,能大大提高运行效率。

       

[Android Runtime (ART)和apk的预编译]

(https://blog.csdn.net/qq_25804863/article/details/48696619)

02

Binder机制

Binder机制 是一种进程间通信机制,提供了远程过程调用功能,就是RPC。他把系统的一系列组件连接在了一起,这些组件分别是上层的 Client 和server,中间层的 Service Manager,该组件 ;底层的 Binder驱动程序,系统的核心组件。开发者只要实现要client和server就可以了

03

系统级app和第三方应用级app分别在什么目录下?SystemUI是在system/priva-app还是system/app路径下?

系统级的app一般分成两种,一种在system/priva-app 另一种在system/app, 如果修改较多的还可能在sytem/vendor/app. system/priva-app路径下的应用权限比system/app高,SystemUI在system/priva-app下. 用户级的APP在data/app下面.system分区下的APP不可卸载而data分区下的APP可卸载

04

android系统的启动流程

BootLoader --> Linux kernel --> init --> SystemServer --> Launcher

详细启动流程: 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是一个确定的值,是一个可以修改的左值。

Framework面试题: https://blog.csdn.net/qq_25804863/article/details/102851515

Android应用面试题及答案汇总: https://blog.csdn.net/qq_25804863/article/details/102395660

  • 15
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Android Framework面试题是关于Android操作系统框架的一些问题,主要涉及Android应用程序的开发、调试和优化等方面。常见的面试题包括: 1. 什么是Android FrameworkAndroid FrameworkAndroid操作系统的核心组件之一,它提供了一系列API和工具,用于开发、调试和优化Android应用程序。 2. Android Framework的组成部分有哪些? Android Framework由四个主要组成部分组成:应用程序框架、系统服务、库和运行时环境。 3. 什么是Android应用程序框架? Android应用程序框架是Android Framework的核心组成部分,它提供了一系列API和工具,用于开发Android应用程序。应用程序框架包括四个主要组件:活动、服务、广播接收器和内容提供者。 4. 什么是Android系统服务? Android系统服务是Android Framework的一个重要组成部分,它提供了一系列系统别的服务,如通知服务、位置服务、传感器服务等。 5. 什么是Android库? Android库是Android Framework的一个重要组成部分,它提供了一系列常用的功能和工具,如图形界面库、网络库、数据库库等。 6. 什么是Android运行时环境? Android运行时环境是Android Framework的一个重要组成部分,它提供了一系列核心库和虚拟机,用于执行Android应用程序。 7. 什么是Android应用程序的生命周期? Android应用程序的生命周期指的是应用程序从启动到关闭的整个过程,包括应用程序的创建、启动、暂停、恢复和销毁等阶段。 8. 什么是Android应用程序的四大组件? Android应用程序的四大组件包括:活动、服务、广播接收器和内容提供者。活动用于展示用户界面,服务用于在后台执行任务,广播接收器用于接收系统广播,内容提供者用于管理应用程序的数据。 9. 什么是Android应用程序的UI线程? Android应用程序的UI线程是指用于更新用户界面的线程,它负责处理用户界面的事件和更新UI组件。 10. 什么是Android应用程序的异步任务? Android应用程序的异步任务是指用于在后台执行任务的线程,它负责处理耗时的操作,如网络请求、数据库操作等。 ### 回答2: Android FrameworkAndroid 应用开发的核心部分,它是一组软件模块,为 Android 应用提供基本的服务和功能,包括视图系统、资源管理器、通知中心、系统 API 等等。以下是 Android Framework 面试题的回答: 1. 什么是 Android Framework?它有哪些组成部分? Android FrameworkAndroid 应用开发的核心部分,它提供了一个标准化的架构,包括了一系列底层模块和服务,帮助开发者快速构建优质的应用程序。Android Framework 包括四个主要的组成部分: - Activity Manager:管理应用程序的生命周期、任务管理和应用程序调度。 - Content Provider:提供应用程序之间数据共享的机制。 - View System:提供视图组件的绘制和交互功能,包括 UI 组件、菜单、通知等。 - System API:提供开发者使用的系统别 API,包括网络、存储、多媒体、传感器等各种功能。 2. 什么是 Intent? Intent 是在 Android 开发中用于启动组件、传递数据和执行操作的一种消息机制。Intent 由两个主要的部分组成,第一个是传递的动作行为(Action),用于指定所要执行的操作;第二个是传递的数据(Data),可包含要传递的信息、参数或操作。Intent 在 Android 应用中经常用于启动 Activity、Service、Broadcast Receiver,以及在应用程序之间传递数据。 3. 什么是 Content Provider? Content Provider 是 Android Framework 中的一项核心服务,用于提供跨应用程序数据共享的机制。Content Provider 可以通过 URI 的方式访问数据,并将一些特定的操作和查询暴露给外部应用程序。Content Provider 在 Android 应用中广泛应用于共享数据、存储和检索数据等功能。Content Provider 可以使用 SQLite 数据库存储数据,也可以使用其他数据源。 4. 什么是 Binder? Binder 是 Android Framework 中的一种进程间通信机制。它使用了一种名为跨进程通信 (IPC) 的技术,允许不同进程之间共享数据和资源,并可让应用程序在另一个进程执行功能。在 Android Framework 中,Activity 管理器、Service 和 Content Provider 等都是通过 Binder 与其他应用程序进行通信。Binder 还提供了一些高功能,如安全性和线程管理。 5. 什么是 View System? View System 是 Android 应用程序中的 UI 组件,它提供了视图绑定、事件处理、资源管理和窗口布局等功能。在 Android Framework 中,View System 通过命名布局文件、使用 XML 描述视图和样式等机制,管理和绘制 UI 布局、界面组件和控件。View System 还提供了与其他系统服务的集成,如通知中心、扩展菜单、对话框等。 6. 什么是 Android Manifest? Android Manifest 是 Android 应用开发中必不可少的部分,它是应用程序清单文件,用于定义应用程序的基本信息和结构。Manifest 文件包含了应用程序使用的 Activity、Service、Broadcast Receiver 等组件,以及应用程序所需的权限和组件信息、应用程序元信息等。Manifest 文件还包括运行时动态创建的 Activity、Service 和 Receiver 的声明和权限标签,以及与应用程序的组件交互的 Intent 过滤器。 总结: Android FrameworkAndroid 应用开发的核心,它提供了一组标准化的软件模块,为 Android 应用程序提供基本的服务和功能。通过对 Android Framework 的学习和理解,开发者可以更好地把握 Android 应用开发的核心技术,快速构建高质量的应用程序。 ### 回答3: Android framework在移动端操作系统中扮演了至关重要的角色,关系到整个Android系统的顺利运行和用户体验。以下是一些相关的面试题及其答案。 1. 什么是Android frameworkAndroid framework主要指的是整个Android操作系统中的框架架构,包括组件、服务、库等等。它提供了一系列的API和开发者工具,使得应用程序设计者可以轻松地在上面开发、部署和调试应用程序。 2. Android framework中的四大组件是什么? Android framework中的四大组件包括Activity、Service、Content Provider和Broadcast Receiver。这些组件大都是基于事件驱动模型来设计的,通过系统的内部通信协议来实现各个组件之间的交互,以使得应用程序能够运行得更加高效、稳定和流畅。 3. Android framework中的应用程序包含哪些基本结构? Android framework中的应用程序包含了Activity、Manifest、布局文件、资源文件等等。其中,Activity是应用程序的基本单元,Manifest是整个应用程序的配置文件,而布局文件和资源文件则用于定义应用程序的用户界面和各种资源。 4. 什么是Android Intent? Android Intent是从一个组件(如Activity、Service、Broadcast Receiver等)向另一个组件传递消息的一种机制。Intent本身就是一个数据结构,其包含了一些元数据(如操作名称、数据URI、类别、组件名称、附加的Extras等),以及一些标志(如FLAG_ACTIVITY_NEW_TASK、FLAG_ACTIVITY_SINGLE_TOP等)等。通过使用Intent,不同组件之间可以实现相互通信和交互。 5. Android中的View和ViewGroup有何区别? 在Android中,View代表着一个基本的GUI控件,如Button、TextView等,而ViewGroup代表着一个包含了多个View的容器,如LinearLayout、RelativeLayout等。简单来说,View是最基本、最简单的GUI控件,而ViewGroup则是一个可以包含多个View的容器。通过使用View和ViewGroup,应用程序可以创建出丰富、多样化的用户界面。 总之,掌握了以上的面试题及其答案,相信大家对Android framework的基础知识已经有了较为全面的认识。当然,Android framework作为一个十分庞大和复杂的系统,还有许多其他的知识点和技术需要我们进一步了解和掌握。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值