Android面试练习题(01)

就在前几天,一个学前端的同学在杭州找到了一份很不错的工作,11K,羡慕死我这还在学校里苦苦挣扎的菜鸟了。还没毕业就拿到这么高的薪水,给我造成了莫大的刺激。于是乎,下定决心, good good study,day day up!
恩,以后我要定时整理易错的面试题,留作备忘。也欢迎大家来玩味下这些题目。


 1.Android中MVC模式 C层指的是?

A  Activity
B  Services
C  Content
D  Intents

正确答案:A
1) 模型层(Model):对数据库、网络、业务计算等的操作都应该在Model里面处理
2) 视图层(View):一般采用XML文件进行界面的描述。也可以使用JavaScript+HTML等的方式作为View层。
3)控制层(Controller):Activity中setcontentview可以指定使用哪个视图模型显示数据,起到的就是控制层的作用。
Android的控制层的重任通常落在了众多的Acitvity的肩上。这句话也就暗含了不要在Acitivity中写代码,要通过Activity交割Model业务逻辑层处理,这样做的另外一个原因是Android中的Acitivity的响应时间是5s,如果耗时的操作放在这里,程序就很容易被回收掉。

 2.Intent传递数据时,下列的数据类型不可以被传递的是()

A  Serializable
B  File
C  Parcelable
D  Thread

正确答案:D
Intent可传递的数据类型
1. 8种基本数据类型及其数组
2. String(String实现了 Serializable)/CharSequence实例类型的数据及其数组
3. 实现了Parcelable的对象及其数组 (自己来做, 操作较复杂, 但速度快)
4. 实现了Serializable的对象及其数组(系统来做, 操作简单, 但速度慢)
File在Java里也是类,在Android里也实现了Serializable接口

 3.对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行?

A  onPause()
B  onCreate()
C  onResume()
D  onStart()

正确答案:A
1)如果在onCreate()时候就保存状态,那么用户使用过程中的状态都没办法保存,例如各种选项,填的数据等。
2)当前Activity失去焦点,或者说不再是前台进程时,它都有可能被销毁。而onpause()是其必然执行的一个生命周期回调函数,例如内存严重不足时,onstop()不会被执行,但是onPasue()是保证执行的 。
3)不过,onPause()执行的时间非常有限,只可以做一些轻量级的存储数据工作,所执行的操作不能太耗时,否则会影响新Activity的显示。
综上所述,onPause并不是最好的存储数据的地方,最好还是在onSaveInstanceState方法里面。

 4.Android系统对下列哪些对象提供了资源池?

A  Message
B  Thread
C  AsyncTask
D  Looper

正确答案:AC
1)Message提供了消息池,有静态方法Obtain从消息池中取对象;
2)Thread默认不提供资源池,除非使用线程池ThreadPool管理;
3)AsynTask是线程池改造的,池里 默认提供(核数+1)个线程进行并发操作,最大支持(核数 * 2 + 1)个线程,超过后会丢弃其他任务;
4)Looper,每个Looper创建时创建一个消息队列和线程对象,也不是资源池;
因此答案为AC

 5.在安卓应用程序开发中,可以通过( )获得屏幕的属性,从而取得屏幕的宽度和高度。

A  getMetrics
B  getDisplay
C  getScreen
D  getWindows

正确答案:A
获得屏幕的宽度和高度有很多种方法
1)通过WindowManager获取
DisplayMetrics dm = new DisplayMetrics();
heigth = dm.heightPixels;
width = dm.widthPixels;
2)通过Resources获取
DisplayMetrics dm = getResources().getDisplayMetrics();
heigth = dm.heightPixels;
width = dm.widthPixels;
3)获取屏幕的默认分辨率
Display display = getWindowManager().getDefaultDisplay();
heigth = display.getWidth();
width = display.getHeight();
4)通过类直接取
getWindowManager().getDefaultDisplay().getMetrics(dm);
第一种和第三种都是使用getWindowManager()得到的,但这个是建立在类Activity上的,如果自己的类没有继承这两个,则取不到数据
故选A。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值