Android软件工程师面试题及答案
1,Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念。
解答:DVM指dalivk的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM 都是在Linux 中的一个进程,所以说可以认为是同一个概念。
2,sim卡的EF 文件有何作用
文件有何作用
解答:sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身
基本文件就是作存储并可以有自己的操作系统cos,EF(Eiementary File)基本文件就是作存储并和手机通讯用的
3,嵌入式操作系统内存管理有哪几种,各有何特性
,嵌入式操作系统内存管理有哪几种,各有何特性
解答:页式,段式,段页,用到了MMU(内存管理单元),虚拟空间等技术
4,什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
解答:嵌入式实时操作系统是指当外界事件或数据产生时,能够接受
并以足够快的速度予以处理,其处理的结果又能在规定的时间之作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。
5,一条最长的短信息约占多少byte(字节)?
解答:中文70(包括标点),英文160,160个字节。
6,android中的动画有哪几类,它们的特点和区别是什么?
解答:两种,
Tween动画、这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;
Frame动画。传统的动画方法,通过顺序的播放排列好的图片来实现,
类似电影。
7、handler机制的原理
机制的原理
andriod提供了Handler 和Looper 来满足线程间的通信。当Android 系统启动时,就创建了一个Looper与MessageQueue对象,并且与前线程相绑定.当在主线程使用Handler并创建该对象时,他会获得该Looper。Handler对象发送消息有两种方式:sendMessage.../Psot...但是最终调用的都是sendMessageAtTime方法,该方法主要作用有两个:指定目标Handler对象把消息放入到消息队列当中Looper中使用loop方法用于不断的循环监听消息队列,看源码可知,监听消息队列并不是另外开一个线程来实现,loop方法主要是,对消息进行分发,最终交给目标Handler并由HandleMessage方法最终处理.
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层.
9、Activity的生命周期
的生命周期
和其他手机平台的应用程序一样,Android的应用程序的生命周期是被统一掌控的,也就是说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。简单地说一下为什么是这样:我们手机在运行一个应用程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去的基本功能,另外系统也不允许你占用太多资源,至少要保证电话功能吧,所以资源不足的时候也就有可能被干掉。言归正传,Activity的基本生命周期如下代码所示:
Java代码
1. public
2. class MyActivity extends Activity {
3. protected
4. void onCreate(Bundle savedInstanceState);
5.
6. protected
7. void onStart();
8.
9. protected
10. void onResume();
11.
12. protected
13. void onPause();
14.
15. protected
16. void onStop();
17.
18. protected
19. void onDestroy();
20. }
21.
22.public class MyActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart();
protected void onResume();
protected void onPause();
android属于什么软件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 。
详细介绍一下这几个方法中系统在做什么以及我们应该做什么:
onCreate: 在这里创建界面,做一些数据的初始化工作
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论