【IT168 评论】随着Android操作系统的受欢迎度与日俱增,Android开发程序员也越来越多,市场对Android程序员的需求也越来越旺盛。本文选取了Android面试中程序员最常被问到的50大问题并附上答案,希望对广大程序员有所帮助。如果你有更棒的见解,欢迎在评论区留言。
1)什么是Android?
Android是一种开源操作系统,主要用于移动设备,如手机和平板电脑。 它是一个基于Linux内核的系统,配备了丰富的组件,允许开发人员创建和运行可执行基本和高级功能的应用程序。
2)什么是Google Android SDK?
Google Android SDK是开发者为了在启用Android的设备上编写应用程序所需的工具集。它包含一个模拟器以模拟Android设备环境的图形界面,允许测试和调试其代码。
3)什么是Android架构?
Android体系结构由4个关键组件组成:
·Linux内核
·库
·Android框架
·Android应用程序
4)描述Android框架。
Android 框架是Android架构的一个重要方面,包含开发人员为了在Android环境中编写应用程序所需的所有类和方法。
5)什么是AAPT?
AAPT是Android Asset Packaging Tool的缩写。该工具为开发人员提供处理zip兼容档案的能力,包括创建,提取和查看其内容。
6)在Android环境中模拟器的重要性是什么?
模拟器为开发人员提供了一个模拟真实android设备的界面,就像一个实际的移动设备一样。程序员可以编写和测试代码,甚至调试。模拟器是测试代码的安全场所,特别是在早期的设计阶段。
7)activityCreator的用途是什么?
activityCreator是创建新Android项目的第一步。它由一个shell脚本组成,用于创建在Android IDE中编写代码所需的新文件系统结构。
8)描述Activities
Activities是用户界面窗口,就像创建窗口以显示输出或以对话框的形式要求输入一样。Activities发挥相同的作用,尽管它可能并不总是以用户界面的形式呈现。
9)什么是Intents?
Intents从Android启用的设备中向用户显示通知消息,它可以用于提醒用户发生的特定状态,用户也可以做出回应。
10)区分Activities和service。
Activities可以在用户期望的时候关闭或终止,而service设计为在幕后运行,可以独立行事。大多数service不断运行,无论是否执行Activities。
11)什么项目在每个Android项目中都很重要?
这些是每次创建Android项目时都会出现的基本项目:
·AndroidManifest.xml
·build.xml
·bin/
·src/
·res/
·assets/
12)基于XML布局的重要性是什么?
使用基于XML的布局提供了一致和有些标准设置的GUI定义格式的方法。在通常的做法中,布局细节放在XML文件中,而其他项目放在源文件中。
13)什么是容器?
容器,正如名称本身所暗示的那样,将对象和小部件保存在一起,这取决于需要哪些特定的项目以及需要什么特定的安排。例如,容器可以保存标签,字段,按钮甚至子容器。
14)什么是Orientation?
Orientation,可以使用setOrientation()设置的方向指示LinearLayout是否以行或列的形式表示。值设置为HORIZONTAL或VERTICAL。
15)Android应用程序在移动市场中的重要性?
开发人员可以编写和注册专门在Android环境下运行的应用程序。这意味着,启用Android系统的每个移动设备都将能够支持并运行这些应用。随着Android移动设备越来越受欢迎,开发人员可以通过在Android市场上创建和上传应用程序来利用这一趋势,将其分发给任何想要下载的用户。
16)你认为Android的缺点是什么?
鉴于Android是一个开放源代码的平台,而且不同的Android操作系统在不同的移动设备上发布,所以对应用程序如何适应不同的操作系统版本和升级还没有明确规定。在特定版本Android操作系统上运行的应用程序可能在另一个版本上无法运行;此外,由于移动设备(例如手机)具有不同的尺寸和形式,因此开发人员需要创建可以自适应屏幕尺寸的功能和规格的应用程序,这也是一个挑战。
17)什么是adb?
Adb是Android Debug Bridge的缩写。它允许开发人员执行远程shell命令。其基本功能是允许和控制来往仿真器端口的通信。
18)activity的四个基本状态是什么?
Active- 活动在前台
Paused- 活动在后台并仍然可见
Stopped- 活动不可见,被其他活动隐藏
Destroyed- 活动进程被杀死或完成终止
19)什么是ANR?
ANR是Application Not Responding(应用程序不响应)的缩写。这实际上是当应用程序长时间无响应时,用户看到的对话框。
20)哪些元素只能发生一次但必须存在?
在不同的元素中,and元素必须存在,并且只能发生一次。其余的是可选的,可以根据需要发生多次。
21)如何使用转义字符?
转义字符之前是双反斜杠。例如,使用'\ n'创建换行符
22)应用程序开发中设置权限的重要性是什么?
设置权限主要是设置一些限制,主要用于保护数据和代码。没有这些,代码可能会受到影响,导致功能缺陷。
23)intent filter的功能是什么?
因为每个组件都需要指出它们能够响应哪些意图,所以使用intent filter来过滤这些组件愿意接收的意图。一个或多个intent filter是可能的,这取决于将要使用的服务和活动。
24)在监视活动时枚举三个关键循环
·Entire lifetime- 活动发生在onCreate和onDestroy之间
·Visible lifetime - 活动发生在onStart和onStop之间
·Foreground lifetime- 活动发生在onResume和onPause之间
25)什么时候调用onStop()方法?
当用户不再看到活动时,会发生对onStop方法的调用,因为另一个活动已经接管或者在该活动的前面。
26)有多种资源中其他限定词优先于语言环境的情况?
实际上有些限定符可以优先于区域设置。有两个已知的例外,即MCC(移动国家代码)和MNC(移动网络代码)限定词。
27)进程基于哪些不同的状态?
有四种可能的状态:
·foreground activity
·visible activity
·background activity
·empty process
28)如何防止ANR?
阻止Android系统结束长时间响应的一种方法是创建一个子线程。在子线程中,可以放置代码的大部分实际工作,以使主线程运行的时间最短。
29)Dalvik在Android开发中扮演什么角色?
Dalvik作为虚拟机,是每个Android应用程序运行的地方。通过Dalvik,设备能够通过更好的内存管理有效地执行多个虚拟机。
30)什么是AndroidManifest.xml?
该文件在每个应用程序中都是至关重要的,它在根目录中声明,并包含Android系统在执行代码之前必须知道的应用程序信息。
31)为应用程序开发设置Android设备的正确方法是什么?
以下是在Android设备中实际应用程序开发之前要遵循的步骤:
·在Android清单中将应用程序解释为“可调试”
·打开设备上的“USB调试”
·设置系统以检测设备
32)枚举通过AIDL创建有界服务的步骤。
·创建.aidl文件,它定义了编程接口
·实现接口,这涉及扩展内部抽象Stub类以及植入其方法。
·将接口公开,其中涉及向客户端执行服务。
33)默认资源的重要性是什么?
当默认资源(包含默认字符串和文件)不存在时,将发生错误,并且应用程序将不会运行。资源被放置在项目res /目录下特别命名的子目录中。
34)处理多个资源时,哪一个优先考虑?
假设所有资源都能够匹配设备的配置,那么“区域设置”限定符几乎总是比其他资源最高。
35)何时发生ANR?
ANR对话框将根据两种可能的条件显示给用户。一个是在5秒钟内没有对输入事件进行响应,另一个是当广播接收机在10秒钟内没有完成执行时。
36)什么是AIDL?
AIDL或Android接口定义语言处理客户端和服务之间的接口要求,因此可以通过进程间通信或IPC在同一级别进行通信。这个过程包括将对象分解成Android可以理解的原语,这部分只是因为一个进程无法访问其他进程的内存。
37)AIDL支持哪些数据类型?
AIDL支持以下数据类型:
·String
·charSequence
·list
·Map
·所有本地Java数据类型,如int,long,char和Boolean
38)什么是片段?
片段是活动的一部分。它是模块化的,用户可以在单个活动中移动或与其他片段组合,片段也是可重用的。
39)什么是可见活动?
可见活动是位于前台对话框后面的活动。它实际上对用户可见,但不一定是前台必需的。
40)杀死foreground活动的非常好的时间是什么时候?
foreground活动是最重要的活动,需要在最后被杀死或终止,特别是如果已经消耗了太多内存的情况下。当foreground活动已经达到内存分页状态时,它被杀死,以便用户界面可以保留对用户的响应。
41)是否可以使用或添加片段而不使用用户界面?
这种做法是可以的,例如,当用户想为特定活动创建background行为时,可以使用add(Fragment,string)方法来添加活动中的片段。
42)如何从Android设备的主屏幕中删除图标和小部件?
要删除图标或快捷方式,请按住该图标。然后将其向下拖动到屏幕的下部,那里会出现删除按钮。
43)Android应用架构下的核心组件是什么?
Android应用架构下有5个关键组件:
·services
·intent
·resource externalization
·notifications
·content providers
44)什么是典型的Android应用程序项目?
Android开发项目,编译后会出现一个.apk文件。这个apk文件格式实际上由AndroidManifest.xml文件,应用程序代码,资源文件和其他相关文件组成。
45)什么是Sticky Intent?
Sticky Intent是来自sendStickyBroadcast()方法的广播,这样即使在广播之后,意图也会浮动,允许其他人收集数据。
46)所有手机是否支持最新的Android操作系统?
一些Android手机允许升级到更高的Android操作系统版本,但并不是所有升级都可以获得最新版本。它在很大程度上取决于手机的功能和规格,是否可以支持最新版本。
47)什么是便携式Wi-Fi热点?
便携式Wi-Fi热点可让你将移动互联网与其他无线设备共享。例如,使用Android手机作为Wi-Fi热点,用户可以使用笔记本电脑接入该网络。
48)什么是action?
在Android开发中,一个action就是发送者想要做的或者希望作为响应的意图,大多数应用功能都是基于预期的动作。
49)常规位图和nine-patch图片之间有什么区别?
通常,nine-patch图像允许调整大小,可用作目标设备的背景或满足其他图像大小要求。 nine-patch是指可以调整图像大小的方式:4个未缩放的角,4个沿1轴缩放的边以及一个可以缩放到两轴中间。
50)Android支持什么语言进行应用程序开发?
支持的主要语言是Java,Java是应用程序开发中最流行的语言,这使得它非常适合新的Android开发人员快速学习在Android环境中创建和部署应用程序。