android岗新面试题记录.
资源文件列表:

android岗新面试题记录.pdf 248.67KB
__MACOSX/._android岗新面试题记录.pdf 350B
资源介绍:
内容包含基础知识及深入理解问题的答案
百度 Android 开发面试题
本文来自安卓航班网整理搜集 www.apkway.com
原文地址:http://www.apkway.com/forum.php?mod=viewthread&tid=2057
1、 Android dvm 的进程和 Linux 的进程, 应用程序的进程是否为同一个概念
DVM 指 dalivk 的虚拟机。每一个 Android 应用程序都在它自己的进程中运行,
都拥有一个独立的 Dalvik 虚拟机实例。而每一个 DVM 都是在 Linux 中的一个进
程,所以说可以认为是同一个概念。
2、sim 卡的 EF 文件有何作用
sim 卡的文件系统有自己规范,主要是为了和手机通讯,sim 本
身可以有自己的操作系统,EF 就是作存储并和手机通讯用的
3、嵌入式操作系统内存管理有哪几种,各有何特性 ?
页式,段式,段页,用到了 MMU,虚拟空间等技术
4、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度
予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作
出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工
业控制、军事设备、
航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可
分为软实时和硬实时两种,而 android 是基于 linux 内核的,因此属于软实时。
5、一条最长的短信息约占多少 byte?
中文 70(包括标点),英文 160 个字节

6、 android 中的动画有哪几类,它们的特点和区别是什么?
两种,一种是 Tween 动画、还有一种是 Frame 动画。Tween 动画,这种实现方
式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种 Frame 动画,
传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
7、handler 机制的原理
andriod 提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先
出原则。Looper 类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里的
Message Queue(消息队列)。
2)Handler: 你可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到
Message Queue 里;或者接收 Looper 从 Message Queue 取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是 main thread,而 Android 启动程序时会替它
建立一个 Message Queue。
8、说说 mvc 模式的原理,它在 android 中的运用
MVC(Model_view_contraller)” 模型_视图_控制器”。 MVC 应用程序总是由这
三个部分组成。Event(事件)导致 Controller 改变 Model 或 View,或者同时改
变两者。只要 Controller 改变了 Models 的数据或者属性,所有依赖的 View 都
会自动更新。类似的,只要 Controller 改变了 View,View 会
从潜在的 Model 中获取数据来刷新自己。
View 重绘和内存泄露的好像是面试经常问的问题
1. View 的刷新:
在需要刷新的地方,使用 handle.sendmessage 发送信息,然后在 handle 的
getmessage 里面执行 invaliate 或者 postinvaliate.

2. GC 内存泄露
出现情况:
1.数据库的 cursor 没有关闭
2.构造 adapter 时,没有使用缓存 contentview
衍生 listview 的优化问题-----减少创建 view 的对象,充分使用
contentview,可以使用一静态类来优化处理 getview 的过程/
3.Bitmap 对象不使用时采用 recycle()释放内存
4.activity 中的对象的生命周期大于 activity
调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size]
还有其他问题,大家欢迎提出阿,可以是整体架构的,还有这个 Hal 层.
这篇文章会涉及到以下几个内容
一 Activity 的生命周期
二 让 Activity 变成一个窗口:Activity 属性设定
三 你后台的 Activity 被系统
回收怎么办:onSaveInstanceState
四 调用与被调用:我们的通信使者 - Intent
一 Activity 的生命周期
和其他手机 平台 的应用程序一样,Android 的应用程序的生命周期是被统
一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不
能改变它,只能学习并适应它。
简单地说一下为什么是这样:我们手机在运行

一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程
序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占用太多资源,
至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。言归正传,
Activity 的基本生命周期如下代码所示:
Java 代码
public class MyActivity extends Activity
{
protected void onCreate(Bundle savedInstanceState);
protected void onStart();
protected void onResume();
protected void onPause();
protected void onStop();
protected void onDestroy();
}
你自己写的 Activity 会按需要
重 载这些方法,onCreate 是免不了的,在一个 Activity 正常启动的过程中,
他们被调用的顺序是 onCreate -> onStart ->onResume, 在 Activity 被干掉的
时候顺序是 onPause -> onStop -> onDestroy ,这样就是一个完整的生命周期,
但是有人问了
,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的
一个 Activity 是全屏的那么:onPause->onStop ,恢复的时候
onStart->onResume ,如果打断
这个应用程序的是一个 Theme 为 Translucent 或者 Dialog 的 Activity 那么只
是 onPause ,恢复
的时候 onResume 。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么: