2022年Android面试题集 .pdf
《2022年Android面试题集 .pdf》由会员分享,可在线阅读,更多相关《2022年Android面试题集 .pdf(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Java知识点包括:接口与抽象的使用及区别,多线程,socket基础,集合类,也有个别公司考察定义,很无语.C/C+知识点包括:指针的移动,排序算法,链表,有时还会有二叉树的遍历或图的遍历.1.Android 手机操作系统的四层架构?Applications Application Framework Android RunTime Libraries Liunx Kernel 架构框架以此从上到下:1.Applications (应用程序(应用层)Android 会 同一系 列核心 应用程 序包一起发布,该应 用程序 包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管
2、理程序等.所有的应用程序都是使用JAVA 语言编写的.2.Application FrameWork (应用程序扩展层(框架)由于Android 的手机操作系统是,基于 Liunx 2.6 系统之上封装而成.所以开发人员可也以直接访问核心程序所使用的API 框架,该核心应用程序的API 框架设计简化了组件的重用,任何一个核心应用程序(模块)都暴露出它的功能作用,并且其他应用程序也都可以使用该核心应用程序(模块)的功能(不过的遵守该核心应用程序框架的安全性限制).同样,该应用程序的重用机制也使用户方便使用应程序的相关组件.API 框架隐藏的核心应用程序是一系列的应用程序的服务和系统应用,其中包括
3、如下:(Android 手机中的 View 是最基本的一个UI 类)丰富而又可扩展的视图(手机界面所显示的组件(Activity 上所显示的)组件,可以用来构建应用程序如:(视图)Views,网格(grids),文本框(text boxes),按钮(button),放置图片区(imageview),文本编辑区(edittext),文本显示区(textview),3.Android RunTime Libraries (Android 系统运行库);4.Liunx Kernel (Android 系统最底层核心系统Liunx)2.Android dvm 的进程和Linux 的进程,应用程序的进程
4、是否为同一个概念?DVM 指 dalivk 的虚拟机.每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例.而每一个DVM 都是在Linux 中的一个进程,所以说可以认为是同一个概念.3.SIM 卡的 EF 文件有何作用?SIM卡的文件系统有自己规范,主要是为了和手机通讯,SIM卡本身可以有自己的操作系统,EF 就是作存储并和手机通讯用的.4.一条最长的短信息约占多少byte?中文 70(包括标点),英文 160,160 个字节.5.Android 中的动画有哪几类,它们的特点和区别是什么?两种.一种是 Tween 动画.还有一种是Frame 动画.T
5、ween动 画,这 种 实 现 方 式 可 以 使 视 图 组 件 移 动.放 大.缩 小 以 及 产 生透明度的变化;另一种Frame 动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影.6.什么是嵌入式实时操作系统,Android 操作系统属于实时操作系统吗?嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 18 页 -制所有实时任务协调一致运行的嵌入式操作系统.主要用于工业控制,军事设备,航空航天等领域对系统
6、的响应时间有苛刻的要求,这就需要使用实时系统.又可分为软实时和硬实时两种,而 Android 是基于 linux 内核的,因此属于软实时.7.Handler 机制的原理?Andriod 提供了 Handler 和 Looper 来满足线程间的通信.Handler 先进先出原则.Looper类用来管理特定线程内对象之间的消息交换(Message Exchange).1)Looper:一个线程可以产生一个Looper 对象,由它来管理此线程里的Message Queue(消息队列).2)Handler:你可以构造Handler 对象来与Looper 沟通,以便 push 新消息到Message Q
7、ueue里;或者接收Looper 从 Message Queue取出)所送来的消息.3)Message Queue(消息队列):用来存放线程放入的消息.4)线程:UI thread 通常就是main thread,而 Android 启动程序时会替它建立一个Message Queue.8.嵌入式操作系统内存管理有哪几种,各有何特性?页式,段式,段页,用到了MMU,虚拟空间等技术9.说说 mvc模式的原理,它在 android 中的运用MVC(Model_view_contraller)模型 _视图 _控制器.MVC 应用程序总是由这三个部分 组 成.Event(事 件)导 致 Controll
8、er 改 变 Model 或 View,或 者 同 时 改 变 两 者.只 要Controller 改变了 Models 的数据或者属性,所有依赖的View 都会自动更新.类似的,只要Controller 改变了 View,View 会 从潜在的 Model 中获取数据来刷新自己.10.Activity的生命周期,两个 Activity之间跳转时必然会执行的是那几个方法?onCreate()/在 activity 生命周期开始时被调用.onRestoreInstanceState()/onCreate 完成后被调用,用来恢复UI 状态.onRestart()/当 activity 从停止状态重
9、新启动时调用.onStart()/当 activity 对用户即将可见的时候调用.onResume()/当 activity 与用户交互的时候,重绘屏幕.onSaveInstanceState()/activity 即将移出栈顶保留UI 状态时调用此方法.onPause()/当系统要启动一个其他的activity时调用(其他的 activity 显示之前,这个方法被用来提交那些持久数据的改变.停止动画.和其他占用CPU 资源的东西.由于下一个activity 在这个方法返回之前不会resumed,所以实现这个方法时代码执行要尽可能快.onStop()/用户不再可见时调用名师资料总结-精品资料欢
10、迎下载-名师精心整理-第 2 页,共 18 页 -onDestroy/在 activity 被销毁前所调用的最后一个方法,当进程终止时会出现这种情况1.完整 生命周 期:即一个 activity从出 现到消 失,对应的周期方法是从 onCreate到onDestroy 2.可见生命周期:从 onStart()到 onStop()方法,在这个周期中,用户可以看见Activity,但不一定能够与之交互,这两个方法可以随着状态的变化被执行多次.3.前景 生命周 期:从 onResume()到 onPause()方 法,在这个周期中,Activity 处 在其它Activity 之前,即在 Activ
11、ity栈的最顶端,负责与用户进行交互,伴随着状态的变化,这两个方法可以被执行多次11.两个 Activity 之间跳转时必然会执行的是哪几个方法.1.启动一个Activity 启动一个新的Activity 需调用StartActivity(Intent)函数.参数Intent 一个 Intent 对象,若要在两个Activity 之间进行跳转我们还得借助Intent 类中另的外一个函数.public Intent setClass(Context packageContext,Classcls)其返回值为一个Intent 对象(即你要跳转到得Activity 的 Intent 对象)2.从一个
12、 Activity 获取另外一个Activity 中的数据结果例如:你在某个app 中点击了按键跳转到了另外一个Activity(此处我暂称为子Activity)中,在此Activity 中你让用户选择联系人列表中的联系人,而在此Activity 结束后需要在上层Activity(此处我暂称为父Activity)中需显示子Activity 中返回的联系人名字.要想做到上述功能,我们需做一下三件事(a)在父 Activity 中调用 StartActivityForResult(Intent,int);(b)在父 Activity 中实现 OnActivityResult(int request
13、Code,int resultCode,Intent Date)参数分析:requestCode:此参数传个StartActivityForResult 为了确定是谁请求的.resultCode:此参数是SetReuslt(Intent Date)的返回值为Intent 对象.Date:Intent 对象返回给调用者.(c)在子 Activity 快要退出时调用SetReuslt(Intent Date)函数用于回调父Activity 中的OnActivityResult(int requestCode,int resultCode,Intent Date)函数.12.横竖屏切换时候Activ
14、ity 的生命周期.1.不设置 Activity 的 android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 18 页 -2.设置 Activity 的 android:configChanges=orientation 时,切屏还是会重新调用各个生命周期,切横.竖屏时只会执行一次3设置Activity 的 android:configChanges=orientation|keyboardHidden时,切屏不会重新调用各个生命周期,只会执行onConfigurationCh
15、anged 方法13.如何将一个Activity 设置成窗口的样式.1.在你的 styles.xml文件中可以新建一如下的style:drawable/float_box 如果窗口要添加窗口背景,可以在drawable 中新建一个叫float_box.xml 的文件,内容可以如下(自定义):2.在AndroidManifest.xml中 在 你 需 要 显 示 为 窗 口 的activity中 添 加 如 果 属性:android:theme=style/Theme.FloatActivity即可如果说您觉得新建style.xml及 float_box.xml文件的方式麻烦或者只想Test一下
16、,那么可以直 接 添 加 您 对 应 需 要 展 示 为 Dialog style 的 Activity 的 android:theme 属 性 值 为android:theme=android:style/Theme.Dialog.14.如何退出Activity?如何安全退出已调用多个Activity 的 Application?对于单一Activity 的应用来说,退出很简单,直接 finish()即可.当然,也可以用 killProcess()和 System.exit()方法.15.如果后台的Activity 由于某原因被系统回收了,如何在被系统回收之前保存当前状态?onSaveIns
17、tanceState()当你的程序中某一个Activity A 在运行时,主动或被动地运行另一个新的Activity B,这个时候 A 会执行 onSaveInstanceState().B 完成以后又会来找A,这个时候就有两种情况:一是A 被回收,二是A 没有被回收,被回收的A 就要重新调用onCreate()方法,不同于直接启动的是 这 回onCreate()里 是 带 上 了 参 数savedInstanceState;而 没 被 收 回 的 就 直 接 执 行onResume(),跳过 onCreate()了.16.两个 Activity 之间怎么传递数据?邮递员 Intent 17.
18、怎么让在启动一个Activity 是就启动一个service?IntentService 18.同一个程序,但不同的Activity 是否可以放在不同的Task 任务栈中?名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 18 页 -task 就好像是能包含很多activity 的栈.默认情况下,一个 activity 启动另外一个activity时,两个 activity 是放在同一个task 栈中的,第二个 activity 压入第一个activity 所在的 task栈.当用户按下返回键时,第二个 activity 从栈中弹出,第一个 activity 又在当前屏幕显示.这样
19、,从用户角度来看,这两个 activity 就好像是属于同一个应用程序的,即使第二个activity是属于另外一个应用程序的.当然,这是指默认情况下.task 栈包含的是activity 的对象.如果一个activity 有多个实例在运行,那么栈中保存的是每个实例的实体.栈中的 activity 不会重新排列,只有弹出和压入操作.一个 task 中的所有 activity 都以整体的形式移动.整个 task 可以被移到前台或后台.打个比方,当前的 task 包含 4 个 activity 当前activity 下面有 3 个 activity.当用户按下HOME 键返回到程序启动器(appli
20、cation launcher)后,选择了一个新的应用程序(事实上是一个新的task),当前的 task 就被转移到后台,新的 task 中的根 activity 将被显示在屏幕上.过了一段时间,用户按返回键回到了程序启动器界面,选择了之前运行的程序(之前的 task).那个 task,仍然包含着4 个 activity.当用户再次按下返回键时,屏幕不会显示之前留下的那个activity(之前的task 的根 activity),而显示当前activity 从 task 栈中移出后栈顶的那个activity.刚刚描述的行为是默认的activity 和 task的行为.有很多方法能够改变这种行为
21、.activity 和 task 之间的联系,以及 task 中的activity 的行为可以通过intent 中的标记以及在 manifest 中的 元素的属性控制.其中,主要的 Intent 标记有:FLAG_ACTIVITY_NEW_TASK FLAG_ACTIVITY_CLEAR_TOP FLAG_ACTIVITY_RESET_TASK_IF_NEEDED FLAG_ACTIVITY_SINGLE_TOP 主要的 属性有:taskAffinity launchMode allowTaskReparenting clearTaskOnLaunch alwaysRetainTaskStat
22、e finishOnTaskLaunch 默认情况下,一个应用程序中的所有activity 都有一个 affinity 这让它们属性同一个task.然而,每个 activity 可以通过 中的 taskAffinity 属性设置单独的affinity.不同应用程序中的activity 可以共享同一个affinity,同一个应用程序中的不同activity 也可以设置成不同的 affinity.affinity 属性决定了:启动 activity 的 Intent 对象需包含FLAG_ACTIVITY_NEW_TASK标记,activity 的 allowTaskReparenting 被认为是
23、设置成true.FLAG_ACTIVITY_NEW_TASK标记当传递给 startActivity()的 Intent 对象包含FLAG_ACTIVITY_NEW_TASK标记时,系统会为需要启动的activity 寻找与当前activity 不同的task.如果要启动的activity 的 affinity 属性与当前所有的task的 affinity 属性都不相同,系统会新建一个带那个affinity 属性的 task,并将要启动的activity 压到新建的task 栈中;否则将activity 压入那个affinity 属性相同的栈中.allowTaskReparenting 属性如
24、果一个activity 的 allowTaskReparenting 属性为 true,那么它可以从一个task(TASK1)移到另外一个有相同affinity 的 task(TASK2)中(TASK2 带到前台时).如果一个.apk 文件从用户角度来看包含了多个 应用程序,你可能需要对那些activity 赋不同的 affinity 值.运行模式名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 18 页 -activity 的 launchMode 属性可以有四种值:standard (默认)singleTop singleTask singleInstance19.什么是 Se
25、rvice以及描述下它的生命周期.Android Service 是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里.需要通过某一个Activity 或者其他Context 对象来调用,Context.startService()和 Context.bindService().如果在Service执行耗时的操作需要启动一个新线程来执行.Android Service 只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年Android面试题集 2022 Android 试题
限制150内