安卓framework面试题(高级Android面试题)

Framework面试题 Android 系统基础 JVM、Dalvik和ART是什么以及他们的关系 01 Binder机制 02 系统级app和第三方应用级app分别在什么目录下?system/priva-app和system/app目录的权限有什么…

大家好,又见面了,我是你们的朋友全栈君。

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/128354.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • verilog语言与VHDL_vhdl程序设计

    verilog语言与VHDL_vhdl程序设计今年开始接触更改产品的FPGA代码,感觉公司虽然搞了很多年了,但是FPGA这块缺乏一些“软件工程”上的概念导入。如果对于Altera/Xilinx公司,如果做IP库,可能需要考虑各种编译器的兼容性,不能引入太多的“高级”语法,但是,对于一个公司而言,我认为代码的可维护性是放在第一位的,是在编译器兼容性之类之上的要求。1.VHDL总体而言,VHDL提供了如下一些语法特性,用于简化代码:1.1record和type定义例如对于KM1024i喷头控制,我们可以定义如下: –喷头控

    2022年9月21日
    3
  • gridlayout布局

    gridlayout布局浅谈android4.0开发之GridLayout布局分类: Android应用开发技巧2012-03-1123:51 3646人阅读 评论(1) 收藏 举报androidlayoutbuttonencoding框架编程作者:李响         本文重点讲述了自android4.0版本后新增的GridLayout网格布局的一些基本

    2022年6月1日
    57
  • 远程调试部署在容器中的springboot项目「建议收藏」

    远程调试部署在容器中的springboot项目「建议收藏」问题:访问网站,会根据ip判断访客所处位置,但部分ip插入数据库失败。 以为是一次小问题,很快就解决了,没想到最终花了6个小时左右,才搞清楚。分析 :1、将本地程序跑起来,发现一切正常,可以插入到数据库。但问题在线上确实妥妥的出现的,而我现在日志级别是info,没有错误日志。所有准备Debug线上程序,之前只debug过使用基本的tomcat发布。而我现在的jar是使用docker构建的镜像,运行的镜像。 2、问题从线上转化到了,我需要远程debug线上程序发现问题,并将之解决。查各种资料,配置

    2022年6月13日
    27
  • Java正则表达式(一看就懂)「建议收藏」

    Java正则表达式(一看就懂)「建议收藏」Java正则表达式一看就懂拿来即用

    2022年7月19日
    21
  • web调用打印机自动打印_网页打印如何设置默认打印机

    web调用打印机自动打印_网页打印如何设置默认打印机浏览器网页打印前言客户对于一些插件比较敏感,如金融、银行等出于安全的考虑和产品的把控,可能不愿意页面打印的时候,客户端浏览器安装插件。(当然,用户有各种各样的需求和打印格式要求,愿意使用打印控件的,开发的打印功能当然很好。)所以直接使用浏览器自带的打印功能,就成为一个选择。打印功能介绍2.1普通打印如果要将当前网页的内容直接打印到白纸上,很简单,使用如下js代码即可实现。…

    2025年7月28日
    2
  • 【大物第七版·电磁感应 电磁场理论】感生电动势 感生电场总结

    【大物第七版·电磁感应 电磁场理论】感生电动势 感生电场总结感生电动势 导体回路不动 磁场发生变化产生的电动势感生电场 变化的磁场在其周围激发了一种电场表示感生电场的 场强注意是负号在自然界中存在着两种以不同方式激发的电场 所激发电场的性质也截然不同 由静止电荷所激发的电场时保守力场 无旋场 在该场中电场强度沿任一闭合回路的线积分恒等于 0 即但变化磁场所激发的感生电场沿任一闭合回路的线积分一般不等于 0 而是有 说明感生电场不是保守力场

    2025年9月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号