9月份安卓面试题整理:欲投Android岗,必看此贴!
在本文中,我将向您介绍50个Android面试问题和答案,还在准备面试安卓的一定要收藏起来
1. 什么是安卓?
Android是一种开源操作系统,用于移动设备,包括智能手机和平板电脑。安卓应用程序在其进程和实例上运行,即达尔维克虚拟机(DVM)或安卓运行时(ART)。
2. 解释安卓的构建过程?
在安卓系统中,构建过程有三个步骤:
- 第一步是使用安卓资产打包工具 (AAPT) 编译资源文件夹。它们被编译成一个名为 R.java 的类文件,该文件仅包含常量。
- 第二步涉及使用javac将java源代码编译为.class文件,然后使用软件开发工具包中的“dx”工具将其转换为Dalvik字节码。类.ex 是最终的输出文件。
- 最后,安卓apk构建器需要接受所有输入并构建安卓打包密钥(APK)文件。
3. 解释安卓界面定义语言。
Android 接口定义语言允许客户端和服务之间的通信。对于进程之间的通信,数据被分成易于Android识别的小部分。
4. 列出一些可用于在安卓系统中编程的语言。
以下是用于开发 Android 应用程序的最流行的编程语言的列表:
- java:Java是全球最流行的编程语言,一直是新开发人员的良好起点,并且被大多数Android开发人员使用。
- kotlin:Kotlin 是一种跨平台、面向对象、现代、安全且相对较新的编程语言。Kotlin 在 2017 年 10 月推出安卓工作室 3.0 时被宣布为安卓的官方编程语言。从那时起,许多流行的应用程序,如特雷洛,史克威尔和科尔达已经迁移到Kotlin。
- C#:C# 允许开发人员构建本机 iOS 和安卓移动应用。
- Python:近年来,Python已成为最流行的编程语言之一。它是一种动态的、面向对象的编程语言,广泛用于机器学习。
5. 什么是最新版本的安卓系统?
6. 什么是活动?描述活动的生命周期。
安卓活动充当 UI 的容器/窗口。活动具有以下生命周期:
- OnCreate():在此步骤中,将创建视图,并从分发包中收集数据。
- OnStart():每当活动对用户可见时,就会调用它。如果活动到达前台,则由 onResume() 成功,如果它转换为隐藏,则跟随 onStop()。
- OnResume():当活动开始与用户交互时,将调用它。
- OnResume():当活动进入后台但尚未被终止时,会发生这种情况。
- OnStop():当您不再对用户可见时,会发生这种情况。
- OnStop():在活动完成时调用。
- OnRestart():在活动停止后调用,然后再启动它。
7. 什么是Android Runtime?
Android Runtime (ART) 是安卓操作系统用作运行时环境的应用程序。因此,它取代了Dalvik,一个已停产的进程虚拟机(VM)。ART 将应用程序的字节码转换为本机指令,这些指令由设备的运行时环境执行。
8. 解释安卓架构。
安卓架构描述了安卓堆栈中的不同层。您将在此列表中找到您的操作系统,中间件和基本应用程序。在Android架构中,每个层都为其上层提供不同的服务。安卓堆栈包括四个层:
- 安卓应用
- android Framework
- Libraries
- 操作系统内核
9.说明安卓的一些优点。
安卓具有以下优势:
- 易于采用:Android 应用程序是用 Java 编写的,Java 是使用最广泛的编程语言之一。
- 免费开发工具包:Android最吸引人的方面之一是软件开发工具包是开源的,并且是免费的,消除了许可,分发和开发的成本。
- 投资低,回报好:Android开发的入门门槛很低,非常适合有兴趣探索编程的新开发人员。
- 多平台支持:安卓支持主要的操作系统,如Linux,Mac OS和Windows。
- 可重用:Android组件是可重用的,甚至可以被框架取代。
- 支持可穿戴设备:可穿戴设备正变得越来越流行,Android已成为支持这些设备的领先平台。
10. 安卓有哪些缺点?
以下是安卓操作系统的一些缺点:
后台进程:在后台运行这么多进程总是有问题的,因为它们很快就会耗尽电池电量。
虚假应用程序:每天都有成千上万的虚假应用程序可供下载,这些应用程序在安装时试图窃取个人信息。
精简问题:您可以在市场上找到各种Android设备,这些设备都具有不同的屏幕尺寸和尺寸,更重要的是,具有不同的Android操作系统。由于操作系统版本和升级的范围很广,因此对于应用程序开发人员来说,为新操作系统更新应用程序非常困难。在一个版本的 Android 操作系统上平稳运行的同一应用程序可能会在另一个版本上崩溃。
11. 描述安卓应用程序的文件夹、文件和描述。
- gen: gen 包含编译器生成的 .引用我们项目中的所有资源的 R 文件。
- src:src 将.java源文件存储在我们的项目中。
- bin:bin 包括 ADT 在生成过程中创建的.apk文件,以及运行 Android 应用所需的所有其他文件。
- AndroidManifest.xml:它是清单文件,用于解释应用程序的必要功能并定义其所有组件。
- res/values:res/values 是其他各种 XML 文件的目录,其中包括字符串、颜色定义等资源。
- res/drawable-hdpi:此目录包含专为高密度屏幕设计的可绘制对象。
- res/layout:此目录包含定义应用程序用户界面的文件。
12. 安卓开发中有哪些不同的工具?解释它们的功能。
安卓开发者可以使用多种工具,包括:
Android Debug Bridge (ADB):ADB 是 SDK 附带的命令行调试应用程序。它允许开发人员与设备进行通信,并促进安装和调试应用程序等操作。
Android Emulator:作为 Android 虚拟机的实现,AE 在虚拟设备中运行进程,该虚拟设备也在开发计算机上运行。此工具主要用于测试和调试 Android 应用程序。
安卓资产打包工具(AAPT):AAPT 工具创建可分发的安卓软件包文件..apk
安卓软件开发工具包 (SDK) 和虚拟设备管理器:此工具用于生成和处理安卓虚拟设备 (AVD) 和 SDK。AVD中的模拟器允许您指定SDK版本,SD卡上的存储,屏幕分辨率以及其他功能,例如GPS和触摸屏。
13. 什么是APK格式?
APK 代表 安卓应用程序包。它是用于在Google的Android操作系统上分发和安装应用程序软件和中间件的压缩文件格式。
14. 在安卓系统中定义意图。有哪些不同类型的意向?
意图是采取行动的“意图”。它是一个消息传递对象,用于从另一个组件请求操作。使用以下方法将意向传递到组件:
- context.startActivity() – 启动活动
- context.startService() – 启动服务
- context.sendBroadcast() – 提供广播
有两种类型的意图:
- 隐含意图:当意向中未指定目标组件时,Android 必须根据意向数据评估已注册的组件。
- 显式意图:显式意图是指应用程序直接在意图中指定目标组件。
15. 解释安卓上支持的对话框。
安卓支持四个对话框:
- 警报对话框:作为最常推荐的对话框,AlertDialog 支持 0-3 按钮以及单选按钮和复选框。
- 日期拾取器诊断:用于用户选择日期
- 时间拾取器:用于用户选择时间
- 进度对话框:它是显示进度条的警报对话框的扩展。此外,它还支持添加按钮。
16. 命名一些在真实设备(而不是在模拟器上)进行测试的测试场景。
模拟器是可以执行与真实Android设备相当的任务的设备,用于降低测试成本。但是,某些方案只能在真实设备上执行,而不能在模拟器上执行。这些方案包括:
- 消息
- 蓝牙
- 安装和卸载存储卡
- 电池方案验证
- 内存相关问题
- 性能验证
17. 如何在Android平台上的应用程序中找到内存泄漏?
安卓工作室使用安卓设备管理器 (ADM) 来查找在安卓上运行的应用程序中的内存泄漏。当您在 Android Studio 中打开 ADM 时,您可以在运行应用程序时看到堆大小和内存分析等参数。
18. 什么是谷歌安卓SDK?安卓SDK中有哪些工具?
谷歌安卓 SDK 是一系列工具,可让开发者访问开发、测试和调试安卓应用所需的 API 库和工具。安卓开发工具包包括以下工具:
- Android Emulator
- DDMS – Dalvik Debug Monitoring Services
- AAPT – Android Asset Packaging tool
- ADB – Android debug bridge
19. 解释安卓系统中的传感器。
基于 Android 的设备内置了多个传感器,包括运动传感器、方向传感器等。由于其高精度,这些传感器有助于监控设备的定位和移动。有可能具有本质上基于软件和硬件的传感器。安卓设备有三大类传感器:
- 位置传感器:使用此传感器,您可以测量Android设备的物理位置。它包括方向传感器和磁力计。
- 运动传感器:这些传感器包括重力,旋转活动和加速度传感器,它们测量设备的旋转和加速度。
- 环境传感器:它包括测量湿度、压力、温度和其他环境因素的传感器。
20. 什么是上下文?
Android 中的上下文是指应用或对象的当前状态。上下文提供诸如授予对数据库和首选项的访问权限、解析资源等服务。在上下文中,有两种类型:
- 活动情境:它与活动的生命周期相关联。在活动范围内传递上下文或请求附加到当前上下文的上下文时,请使用此方法。
- 应用上下文:此上下文连接到应用程序的生命周期。当您需要其生命周期独立于当前上下文的上下文时,或者当您传递当前活动范围之外的上下文时,可以使用此选项。
21. 说明安卓应用程序的体系结构。
安卓应用程序由以下组件组成:
- 内容提供商:在应用程序之间共享数据。
- 意图:促进活动与数据交换机制之间的联系。
- 通知:它由灯光,声音,图标等功能组成。
- 服务业: 背景功能
- 资源外部化:它包括字符串和图形等功能。
22. 简要解释数字元数据交换系统。
DDMS(达尔维克调试监控服务器)是安卓工作室中的调试工具。它提供了广泛的调试功能,包括:
- 端口转发
- 位置数据欺骗
- 屏幕捕获
- 日志
- 无线电状态信息
- 线程和堆信息
安卓现在向用户推荐安卓探查器代替 DDMS,因为不再支持 DDMS 工具。
23.什么是Toast?编写其语法。
Toast 是作为弹出窗口显示在屏幕上的消息。具体而言,它显示用户启动的操作的状态,并仅覆盖消息所需的空间,而用户最近的活动仍然可见且具有交互性。
Toast 通知会自动淡入淡出,并且不接受交互事件。
语法:
Toast.makeText(ProjectActivity.this, "Your message here", Toast.LENGTH_LONG).show();
24. 解释隐式意图和显式意图之间的区别。
显式意向告诉系统应使用哪个活动或组件来生成对意向的响应。同时,在隐式意图中,您描述了要执行的操作,Android 系统会检查注册了哪些组件来处理该操作。
25. 什么是安卓Manifest.xml文件,为什么需要它?
安卓Manifest.xml文件包含有关应用程序的信息,然后将其发送到安卓系统。此类别中的数据可能包括包名称、组件(如活动、服务、内容提供商等)。它执行以下任务:
- 它为 Java 包提供了唯一的名称。
- 它包含链接到应用程序的库文件详细信息。
- 它声明应用程序将使用的安卓 API。
- 它描述了应用程序的各种组件,如活动、服务等。此外,它还定义将实现这些组件的类。
26. 解释安卓中不同的启动模式。
安卓有多种启动模式:
标准:启动模式在发起活动的任务中创建活动的新实例。可以将同一活动的多个实例添加到不同的任务或同一任务中。
单顶:此启动模式类似于标准启动模式,不同之处在于,如果堆栈顶部已有活动的实例,则不会创建新实例,但会将意向发送到活动的现有实例。
单任务:启动模式始终创建新任务,并将新实例作为根实例添加到任务中。
单次:它与单任务启动模式相同,但系统不会在同一任务中启动任何新活动。启动新活动时,它属于一个单独的任务。
27. 如果应用程序频繁崩溃,您将如何排除故障?
您可以通过以下方式修复经常崩溃的安卓应用程序:
- 可用内存:由于移动设备的空间有限,您可能需要释放内存空间才能使应用程序正常工作。
- 兼容性检查:这可能不是硬件问题,而是软件问题。并非总是可以跨所有设备和操作系统测试应用程序。您可能会遇到与应用的兼容性问题。转到该应用程序的谷歌Play商店页面,以查看它是否兼容。
- 内存管理:某些应用程序在一台移动设备上完美运行,而在另一台移动设备上崩溃。性能、内存管理和 CPU 速度都是相关因素。如果应用程序不断崩溃,请检查其应用程序内存要求。
- 应用数据使用量:如果应用程序频繁崩溃,您可以删除应用程序的数据,这将清除应用程序的缓存并释放设备上的一些存储空间。这可以提高应用的性能。
28. 说明新安卓项目所需的组件。
要创建安卓项目,需要以下组件:
- Manifest:包含 xml 文件。
- Build/:包含生成输出
- Res/:包含非代码资源,如位图图像、UI 字符串等。
- Src/:包含代码和资源。
- Assets/:包含可转换为文件的文件..apk
29. 解释安卓系统中的术语 ANR。
ANR 代表 应用程序无响应。每当应用程序长时间停止响应用户的操作时,Android 操作系统都会显示一条通知。
30. 在 Android 应用程序开发中设置权限的重要性是什么?
当任何人都可以无限制地访问代码时,可能会出现代码泄露的情况,从而导致出现缺陷。设置权限后,只有授权用户才能访问代码。
31. AIDL支持哪些不同的数据类型?
AIDL 代表 安卓界面定义语言。它促进了客户端和服务之间的通信。AIDL 支持以下数据类型:
- 字符串
- 列表
- 地图
- 字符序列
- INT、长整型、字符型、布尔型(Java 数据类型)
32. 定义安卓架构?
安卓架构由四个组件组成。它们是:
- Linux Kernel.
- Libraries.
- Android applications.
- Android Framework.
33. 什么是安卓系统?
Android是一个开源操作系统,旨在在智能手机和平板电脑上运行。它基于Linux内核系统,该系统允许开发人员创建和运行执行基本和高级功能的应用程序。
34. 什么是AAPT的完整形式?解释一下?
AAPT 代表 安卓资产打包工具。开发人员使用它来处理与 zip 兼容的存档。此工具使创建、提取和查看内容的过程更加简单。
35. 什么是Activitycreator?
Activitycreator是创建安卓项目的第一步。它包含用于创建在 Android 系统中编写代码所需的新文件系统的 shell 脚本。
36. 安卓系统中的意图是什么?
安卓系统中的意向通过支持安卓的设备(如智能手机或平板电脑)向用户显示通知。因此,会尝试向用户发出警报,并且可以根据意图预期响应。
37. 什么是android Emulator?
Android Emulator允许开发人员尝试类似于真实移动设备的界面。因此,开发人员可以更快地为应用程序编写和测试不同的代码。使用仿真器还可以使调试过程成为可能。因此,当需要修复 bug 时,模拟器为在开发过程的开始和结束时测试代码提供了一个安全的平台。
38. 在安卓系统中定义容器?
Android系统中的容器有助于将对象和小部件放在一起,以便满足特定的项目和安排。这些容器包括按钮、字段、标签等。
39. 基于 XML 的布局有什么用?
在设置 GUI 定义格式时,基于 XML 的布局有助于解决不一致的标准格式。布局详细信息存储在 XML 文件中,而其他项存储在源文件中。
40. 我们在移动市场需要安卓吗?
绝对!我们在移动市场需要Android,因为它允许智能手机用户下载提供多种服务的应用程序。年复一年,开发人员创建不同的应用程序。他们可以向智能手机用户展示这些应用程序,并吸引他们成为Android系统的潜在客户。Android系统的用户可以访问多个免费和付费的应用程序,这些应用程序可以保护他们的数据,充当信息平台,并根据他们的需求提供各种服务。
41. ADB的完整形式是什么?定义ADB?
ADB 代表 安卓调试桥。开发人员可以使用 ADB 创建远程外壳命令。ADB的主要功能是允许和控制与模拟器端口的通信,然后从中接收响应。
42. 应用程序开发过程中有哪些权限?
作为应用程序开发过程的一部分,将施加权限以保护数据和代码。应用权限是为了防止应用程序受到损害、病毒攻击、窃取用户信息或导致错误。
43. 流程基于哪些可能状态?
以下是流程可以采用的一些状态选项。
- 状态 1:前台活动
- 状态 2:可见活动
- 状态 3:背景活动
- 状态 4:空活动
44. 我们可以在安卓系统中防止ANR吗?
这当然是可能的。ANR阻止安卓得出一个已经响应了很长时间的代码。我们可以通过创建一个子线程来防止这种情况,在该子线程中可以应用代码的大部分实际工作原理,并且可以披露无响应的最短时间。
45.什么是Dalvik?它对安卓系统有什么用?
Dalvik是一个帮助安卓运行应用程序的虚拟机。通过这种方式,智能手机和其他电子设备可以从将所有应用程序存储在其内存中的虚拟机下载应用程序。在Dalvik中,所有新应用程序,它们的删除和更新都已完成。
46. 什么是安卓系统中的片段?
在Android系统中,片段是活动的一部分,从某种意义上说,它是模块化的。这些碎片可以四处移动,甚至可以组合成一个单一的活动。它们是可重用的。
47.什么是content provider ?它是如何实施的?
content provider 管理对结构化数据集的访问。它是将一个进程中的数据与另一个进程中运行的代码连接起来的标准接口。因此,它封装了数据,并提供了定义数据安全性的机制。此外,内容提供程序还用于在不同应用程序之间共享数据。
内容提供程序作为内容提供者类的子类实现,并且必须实现一组允许其他应用程序执行事务的标准 API。
48. 什么是Default Resources?它们有什么用?
Default Resources包括默认文件和字符串。如果它们不存在,屏幕上将显示错误,并且下载的应用程序可能无法正常运行。这些文件很有用,因为它们位于项目目录下的子目录中,从而允许下载的应用程序运行。
49. 定义AIDL?
AIDL 代表 安卓界面定义语言。它用于处理客户端和服务提供程序之间存在的接口要求。通过进程间通信或IPC,它可以作为同一级别的通信平台。在AIDL中,目标被分解成基元,以便安卓系统可以清楚地理解它们。此外,AIDL 可防止应用程序从其他设备获取信息。
50.什么是粘性广播?举个例子。
粘性广播用于在应用程序之间进行通信。这些广播不会通知用户。在安卓操作系统中,应用程序通常被视为单独的用户。
例如:当您为该操作调用寄存器接收方()时(即使使用空广播接收方),您也会收到该操作的最后一次广播的意图。通过这种方式,您可以确定电池状态,而不必记录电池状态的所有未来变化。
#Android##面试##面试题##9月秋招#