面向初学者必须知道的 20 道 Android 面试题

Android 是我们手机的操作系统,在它中确实存在一些错误。应该有人能够修复错误以确保流畅的用户体验感。

为此,需要优秀的 Android 开发人员。这是一个未来可能会蓬勃发展的领域。要聘请优秀的开发人员,询问适当的Android 面试问题很重要。

由于文章太长我就不做太多说明了,看题目就知道这是啥了,ok,废话不多说,看下面整理出来的题,希望可以对想从事Android开发的兄弟姐妹们有所帮助,下面的题整理出来的,并不全面,欢迎各位提问和补充!Android面试题和答案已按照规范已整理完成,大家可看文末或评论/私信,一起交流技术、进阶提升~

1、Android活动的七种生命周期方法是什么,它们的目的是什么?

Android活动的七个生命周期方法是:

  • onCreate()
  • 开始()
  • onRestart()
  • onResume()
  • 暂停()
  • 停止()
  • onDestroy()

它们的目的是帮助围绕您希望活动在设备上的整个生命周期中如何执行来构建您的代码。

例如,onCreate() 是您执行静态设置的地方,从创建视图到绑定数据列表。它总是紧随其后的是 onStart(),应用程序将在此对用户可见。

2、简要列出 Android 架构的组件。

这是另一个顶级问题,可帮助您衡量开发人员对应用程序设计全局的理解程度。Android 软件堆栈通常分为五个主要组件:

  1. Linux 内核:直接与设备硬件接口的应用程序的基础层——这是处理诸如相机、键盘和显示器等硬件驱动程序的层。
  2. 原生库:基于 Linux 内核的是一组开源库,包括 SQLite 数据库、libc 和 WebKit 浏览器引擎。
  3. Android 运行时: Dalvik 虚拟机与本机库处于同一级别,并允许每个 Android 应用程序运行其进程。
  4. 应用程序框架:上一层以 Java 类的形式为设备上的应用程序提供更高级别的服务。要了解的关键服务是活动管理器、内容提供者、资源管理器、通知管理器和视图系统。
  5. 应用程序:顶层是 Android 应用程序本身。这是您可以安装应用程序的级别,也是开发人员最熟悉的级别。

3、什么是 DDMS?

DDMS 是 Dalvik Debug Monitor Server 的缩写。它自带 Android 并包含许多有用的调试功能,包括位置数据欺骗、端口转发、网络流量交易、传入呼叫/短信欺骗、线程和堆信息、屏幕捕获以及模拟网络速度、状态和延迟的能力.

4、您将如何使用 hasSystemFeature() 方法检查系统上是否存在 Compass 传感器?

虽然在 SensorManager 或 Sensor 上调用此方法可能很诱人,因为它们都是 Android Sensor Framework 的一部分,但这些类都没有提供 hasSystemFeature() 方法。这些类可用于直接访问和获取原始传感器数据。在评估系统功能时,您可以使用 PackageManager 类来检索给定设备上可用的应用程序包的信息。我为此查询编写了一个可能的解决方案:

PackageManager myCompass = getPackageManager();
If(!myCompass.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS))
{
//This device lacks a compass, disable the compass feature.
}

5、什么是ADB?

这是重要的Android面试问题之一。

ADB 仅代表 Android 调试桥。它为开发人员提供了执行远程 shell 命令的能力。它的主要工作是允许和直接与仿真器端口进行通信。

6、描述活动。

活动是您所说的用户界面的窗口。正如您创建窗口来显示输出或以对话框的形式请求输入一样,活动也扮演着同样的角色。尽管它可能并不总是采用用户界面的形式。

7、基于 XML 的布局的重要性是什么?

使用基于 XML 的布局提供了设置 GUI 定义格式的一致且有些标准的方法。通常,布局细节放在 XML 文件中,而其他项目放在源文件中。

8、您认为Android有哪些缺点?

鉴于 Android 是一个开源平台,而且不同的 Android 操作系统已经在不同的移动设备上发布,因此对于应用程序如何适应不同的操作系统版本和升级没有明确的政策。在此特定版本的 Android 操作系统上运行的应用程序可能会或可能不会在另一个版本上运行。另一个缺点是,由于手机和标签等移动设备具有不同的尺寸和形式,因此开发人员很难创建能够正确调整到正确屏幕尺寸和其他不同规格和功能的应用程序。

9、Android 中的文件、类和活动之间有什么区别?

文件:它是一块任意信息或用于存储信息的资源。

类:它是Java文件的编译形式。Android 使用 .class 文件生成可执行的 apk。

活动:活动类似于 GUI 工具包中的框架/窗口。它不是文件或文件类型。它只是一个可以在 Android 中扩展的类,用于在视图中加载 UI 元素。

10、什么是 Dalvik 虚拟机?

Dalvik 是 Android 的虚拟机的名称。Dalvik VM 是一个仅解释器的虚拟机,它以 Dalvik Executable (.dex) 格式执行文件,这是一种用于有效存储和内存映射执行的格式。

虚拟机是基于寄存器的,可以运行由 Java 语言编译器编译的类,这些类已使用包含的“dx”工具更改为其本机格式。VM 运行在符合 Posix 的操作系统之上,这取决于它执行线程和低级内存管理功能。Dalvik 核心类库为那些习惯于使用 Java 标准版编程的人提供了熟悉的开发基础。但专门针对小型移动设备的需求。

如果候选人能回答这个Android面试问题,他/她对Android有足够的了解。

11、Android 中有哪些例外情况?

InflateException:发生错误情况时,抛出此异常。

Surface.OutOfResourceException:当未创建或调整表面时,将引发此异常。

SurfaceHolder.BadSurfaceTypeException:在表面“SURFACE_TYPE_PUSH_BUFFERS”上调用时,从 lockCanvas() 方法抛出此异常。

WindowManager.BadTokenException:在尝试查看无效的 WindowManager.LayoutParamstoken 时抛出此异常。

12、什么是开放式耳机联盟?

OHA 是一个由 84 家技术和移动公司组成的集团,它们携手加快移动技术创新,同时为最终用户提供改进、经济高效和更丰富的移动体验。该联盟的成员包括谷歌、HTC、索尼、英伟达、戴尔、英特尔、摩托罗拉、三星等。OHA 于 2007 年 11 月 5 日由 Google 和其他 34 家公司发起。Android 是该联盟的主要操作系统。

13、如果一个应用程序经常崩溃,你将如何解决它?

如果 Android 应用程序经常崩溃,您可以执行以下操作:

  • 释放内存:由于移动设备上的空间有限,您可以尝试释放内存空间以使应用程序正常运行。
  • 兼容性检查:可能不是硬件问题,更多的是软件问题。并非总是可以为所有设备和操作系统系统测试应用程序。该应用程序可能与操作系统不兼容。检查应用程序的 Google Play 商店页面上的兼容性。
  • 内存管理:一些应用程序可以在一台移动设备上完美运行,但在其他设备上可能会崩溃。这就是处理速度、内存管理和 CPU 速度发挥作用的地方。如果应用程序不断崩溃,请检查应用程序内存要求。
  • 应用程序数据使用:如果应用程序经常崩溃,您可以删除应用程序的数据,这将清除其缓存并在您的设备上腾出一些可用空间,并可能提高应用程序的性能。

14、什么是 AndroidManifest.xml 文件,为什么需要它?

这是最好的 Android 面试问题之一。
AndroidManifest.xml 文件包含有关应用程序的信息,并将此信息发送到 Android 系统。此数据可能包括包名称、活动、服务、内容提供者等组件。该文件执行以下任务:

  • 为 Java 包提供唯一的名称。
  • 描述应用程序的各种组件,例如活动、服务等。它还定义了将实现这些组件的类。
  • 声明应用程序将使用的 Android API。
  • 它包含链接到应用程序的库文件详细信息。

15、解释 Android 中不同的启动模式。

以下是不同的 Android 启动模式:

  • 标准:此启动模式在其起源的任务中生成活动的新实例。可以创建同一活动的多个实例,您可以将它们添加到相同或不同的任务中。
  • SingleTop:此启动模式类似于标准启动模式,除非堆栈顶部存在活动的先前实例,然后它不会创建新实例。但是意图被发送到活动的现有实例。
  • SingleTask:此启动模式将始终创建一个新任务并将一个新实例作为根任务推送到该任务。
  • SingleInstance:此启动模式与 SingleTask 启动模式相同,但系统不会在同一任务中启动任何新活动。在启动新活动的场景中,它在单独的任务中启动。

16、说出 Android 平台上可用的不同数据存储选项?

如您所知,Android 平台提供了多种数据存储选项,用户可以根据需要使用这些选项。存储选项包括:

  • SharedPreference:此选项将数据存储在 XML 文件中。
  • SQLite:这将结构数据存储在私有数据库中。
  • 内部存储:这将数据存储在设备文件系统中,其他应用程序无法读取。
  • 外部存储:这将数据存储在文件系统中,但所有应用程序都可以访问设备。

17、什么是线程池?它是否比使用多个单独的线程更有效?

ThreadPool 由一个任务队列和一组工作线程组成,这允许它运行一个任务的多个并行实例。

在这里,您正在评估应用程序开发人员对多线程如何有可能提高应用程序性能的理解,但如果使用不当,它也会对性能产生负面影响。

使用 ThreadPool 比让多个操作等待在单个线程上运行更有效,但它还可以帮助您避免每次需要工作线程时创建销毁线程的可观开销。

18、Gradle 中的 BuildType 是什么?你能用它做什么?

构建类型定义了 Gradle 在构建和打包 Android 应用时使用的属性。

这些类型的 Android 面试问题允许您检查开发人员是否可以区分产品风格、构建变体和构建类型,因为这些是非常相似的概念,是常见的混淆来源:

  • 构建类型定义了模块的构建方式,例如,是否运行 ProGuard。
  • 产品风味定义了构建的内容,例如构建中包含哪些资源。
  • Gradle为项目的产品风格和构建类型的每个可能组合创建一个构建变体。

19、通过 Android 接口定义语言 (AIDL) 创建绑定服务涉及哪些步骤?

  • 在 .aidl 文件中定义 AIDL 接口。
  • 将此文件保存在托管 Activity 的应用程序和任何其他需要绑定到此服务的应用程序的 src/ 目录中——后者特别重要,但经常被忽略。
  • 构建您的应用程序。然后,Android SDK Tools 将在您的 gen 目录中生成一个 IBinder 接口文件。
  • 通过在您的 gen 目录中扩展生成的 Binder 接口文件来实现此接口。
  • 扩展 Service 并覆盖onBind()以返回 Stub 类的实现。

20、什么时候可以使用 FrameLayout?

在这里,您正在寻求一种理解,即您应该使用可能的最简单的中途停留。这样做是为了实现您想要实现的目标。FrameLayouts 被设计为只包含一个项目,当您需要显示单个视图时,它们是一个有效的选择。

如果您将多个视图添加到 FrameLayout,那么它会将它们堆叠在另一个之上,因此如果您需要重叠视图,例如,如果您正在实现覆盖或 HUD 元素,则 FrameLayouts 也很有用。

感谢🙌阅读并祝你面试好运!

公众号:Android Jasper 专注分享面试题|面试技巧|Android学习资料。

#Android##面试题##安卓工程师##面试#
全部评论
可以在写写一篇详细的介绍android的架构
1 回复 分享
发布于 2022-08-26 19:14 陕西

相关推荐

05-12 16:04
已编辑
江西财经大学 Java
点赞 评论 收藏
分享
05-29 20:34
门头沟学院 C++
KarlAllen_直通春招版:得做好直接春招的准备。学历差的话,一是面试要求会比学历好的严格不少,二是就算面试通过了也会被排序。总之暑期和秋招对于学历差的就是及其不友好
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务