Android面试题记录。持续更新。

这两天在帝都找工作,顺手记一下遇到的一些面试题。

1.Activity的声明周期,启动模式,onRestart方法什么时候调用?

详情见本人博客Android学习笔记之Activity学习笔记
onRestart方法调用时间:当Activity从不可见状态切换到前台的时候

2. Json字符串中 []和{}代表什么意思。

[]: 数组或者集合
{}: 对象
之前没仔细观察过json字符串,竟然没答出来[]是什么意思。。学东西要兼顾细节!

3.Java中常用的设计模式。说一下工厂模式。

工厂模式请看:Java设计模式之工厂设计模式

4.什么是dp、px、sp?

主要考察安卓屏幕适配的问题,之后同样会开篇博客去总结一下。

5.请问你是怎么解决android OOM的?

安卓内存溢出问题

6.为什么要用handler?

Activity中进行耗时操作会造成ANR,所有耗时操作要放在子线程中去执行,因为Android中的UI线程是非线程安全的,子线程中不能直接修改UI,需要一种东西实现子线程与UI线程通讯,所有就使用到了handler

7.如何优化listview?为什么使用convertView就能优化?为什么使用ViewHolder就能优化性能?

convertView:每个Item都是一个View对象,在listview的item不可见时系统会把被回收的View对象赋值给convertView,使用convertView进行优化减少了view对象的创建。主要是为了减少inflate操作,inflate操作会解析xml布局文件,然后通过反射技术去创建view对象,这个操作是非常消耗资源的。
使用ViewHolder主要是为了减少View中的控件对象的重复创建,减少findviewbyid的次数

8.ArrayAdapter、SimpleAdapter、BaseAdapter的区别是什么?

ArrayAdapter和SimpleAdapter都是BaseAdapter的子类,属于BaseAdapter的两种实现方式

9.IntentFilter的作用,和Intent有啥区别?

Intent隐式启动组件时通过IntentFilter来确定启动哪个主键。IntentFilter我感觉像是一组匹配规则,Intent则是一个匹配器

10.IntentService和Service的区别?

Android中Service是运行在主线程的,所有在Service中进行耗时操作同样会导致ANR,Google提供IntentService来解决这个问题,IntentService中的代码是在子线程中执行的,而且IntentService还有一个优点就是IntentService在执行完代码之后会自动销毁,有效的防止了内存泄漏的问题。

11.为什么要引入广播机制的用意?

Android中的四大组件存在的原因总的来说是为了使用web开发常用的MVC开发模式,增强程序的可扩展行,可维护性,可重用性。引入广播机制是为了更好的实现Android各个主键之间的通讯及数据交互。

12.后台的activity被回收了,怎么办?

可以使用onSaveInstanceState方法保存当前Activity的状态,再次启动时通过保存的bundle对象把Activity恢复到之前的状态。

13.如何安全退出已调用多个 Activity 的 Application?

自定义Application类,在其中添加一个Activity集合,每打开一个Activity时把它加入集合中,退出时遍历集合结束掉每一个Activity。

14.同一个程序,但不同的 Activity 是否可以放在不同的 Task 任务栈中?

可以,设置Activity的taskaffinity属性,并且启动Activity的Intent要包含FLAG_ACTIVITY_NEW_TASK。

15.为什么要用 ContentProvider?它和 sql 的实现上有什么差别?

主要为了不同应用程序之间进行数据共享,ContentProvider的底层就是通过sql语句配装实现的。

16.什么情况会导致Force Close?如何避免?

应用程序运行是出现抛出异常的时候,检查是否是代码错误,如果不是在catch代码块中添加自己的处理方式,如通过Toast给用户提示

17.post提交数据的4种方式?

1.application/x-www-form-urlencoded( 默认方式)
id=1&type=2
2.multipart/form-data
from表单提交文件
3.application/json
4.text/xml
这两个就不用说了

暂时就这些,持续更新

以上这些问题答案均为个人观点,如果有错误,或者更好的答案,欢迎各位指正,可以在文章下评论,或者邮箱:[email protected]

你可能感兴趣的:(经验分享,android,面试题)