2018-05-23 笔试题
1。Android的生命周期:
onCreate(第一次被创建的时候调用)
onStart(这个方法在活动由不可见变为可见的时候调用)
onResume(这个方法在准备好和用户进行交互的时候调用)
onPasue(这个方法在系统准备去启动或者恢复另一个活动的时候调用)
onStop(这个方法在活动完全不可见的时候调用)
onDestory(这个方法在销毁之前调用)
onResrart(这个放在活动由停止状态变为运行状态之前调用)
2。Android启动模式:
四种:
standard 每次激活都会创建Activity实例,并存放到任务栈
singTop 如果Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例。
singTask 如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop。
singleInstance 如果应用任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两个应用共享Activity实例
3。Android常用布局有哪些?
(RelativeLayout)相对布局 (AbsoluteLayout)绝对布局 (FrameLayout)帧布局 (TableLayout) 表格布局 (LinearLayout)线性布局
4。Service的启动方式有哪些?
通过startServer启动Server
通过bingServer启动Server
5。Broadcast的注册方式和区别是什么?
代码中注册与在AndroidManifest中注册
静态注册:在AndroidManifest.xml注册,android不能自动销毁广播接收器,也就是说当应用程序关闭后,还是会接收广播。
动态注册:在代码中通过registerReceiver()手工注册.当程序关闭时,该接收器也会随之销毁。当然,也可手工调用unregisterReceiver()进行销毁
6。Java的匿名内部类在Android的应用有哪些?
7。什么是ANR,如何产生的,如何避免?
ANR的全称是 application not response 即应用程序无响应
产生原因:由于主线程有很多重要事情要做,比如响应点击事件等。如果在主线程里做了太多耗时的操作,则有可能引发ANR。
如果你想模拟的话,比如在主线程里让主线程休眠6秒以上。Thread.sleep(6000);则会引发此状况。所以在4.0以上版本,如果在主线程里进行网络访问的操作,则会报错。
8、简单介绍MVP框架,跟MVC的区别是什么?有哪些优势?
MVP---全称 Model-View-Presenter,即模型-视图-层现器
P:交互中间人 (Presenter主要作为沟通View与Model的桥梁,它从Model层检索数据后,返回给View层,使得View与Model之间没有耦合,也将业务逻辑从View角色上抽离出来)
V:用户界面 (View通常是指Activity、Fragment或者某个View控件,它含有一个Presenter成员变量。通常View需要实现一个逻辑接口,将View上的操作转交给Presenter进行实现,最后,Presenter 调用View逻辑接口将结果返回给View元素。)
M:数据的存储 (Model 角色主要是提供数据的存取功能。Presenter 需要通过Model层存储、获取数据,Model就像一个数据仓库。更直白的说,Model是封装了数据库DAO或者网络获取数据的角色,或者两种数据方式获取的集合。)
MVC--全称Model-View-Controller,即模型-视图-控制器。
MVP模式减少了Activity的职责,简化了Activity中的代码,将复杂的逻辑代码提取到了Presenter中进行处理,模块职责划分明显,层次清晰。与之对应的好处就是,耦合度更低,更方便的进行测试。
9、简述HashMap的实现原理
一句话理解HashMap:HashMap就是Hash表的Map实现。 Hash表就是Hash数组,Map实现是指实现了Map接口
10、ArrayList和LinkedList的区别,以及应用场景是什么?
1.ArrayList是实现了基于动态数组的数据结构,Linkedlist基于链表的数据结构
2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinledList要移动指针
3.对于新增和删除操作add和remove,LinedList比较占优势因为ArrayList要移动数据
11.算法题:打乱数组中元素的顺序
12。设计模式题,举例Androd常用的设计模式,并写出来
23种设计模式
常用的分别是:单例模式 工厂模式 观察者模式 代理模式 命令模式 合成模式