1、Android系统的四大基本组件
Activity, Service, BroadcastReceiver, ContentProvider
2、Service的特点及应用场景
一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。
比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。
3、Android的主线程指的是什么
即UI Thread。UI Thread在Android程序运行的时候就被创建,主要是负责控制UI界面的显示、更新和控件交互。在Android程序创建之初,一个Process呈现的是单线程模型,所有的任务都在一 个线程中运行。因此,我们认为,UI Thread所执行的每一个函数,所花费的时间都应该是越短越好。而其他比较费时的工作(访问网络,下载数据,查询数据库等),都应该交由子线程去执行, 以免阻塞主线程。
4、ANR响应异常的原因及解决方案,有哪些耗时操作
在Android里,应用程序的响应性是由Activity Manager和WindowManager系统服务监视的 。当它监测到以下情况中的一个时,Android就会针对特定的应用程序显示 ANR:
1.在5秒内没有响应输入的事件(例如,按键按下,屏幕触摸)
2.BroadcastReceiver在10秒内没有执行完毕
造成以上两点的原因有很多,比如在主线程中做了非常耗时的操作,比如说是下载,io异常等。
潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,
6、OOM异常的常见原因及代码定位(拿微博举例)
7、如何在老版本系统上实现新版本的API(本质上是如何做一个适配所有版本的软件)
添加支持包
反射
8、Java中wait和sleep的区别,谁更耗CPU资源
1,这两个方法来自不同的类分别是Thread和Object
2,最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。
3,wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep可以在
任何地方使用
synchronized(x){
x.notify()
//或者wait()
}
4,sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常
sleep更耗CPU资源
9、有A,B,C,D,E五个线程,其中A线程须在其它四个线程完成之后才能退出,如何实现
使用wait,notify.在a线程中wait,b,c,d,e完成后调用notify,a接收到notify后,判断bcde是否全部完成,未全部完成则重新(继续)wait。
来源http://blog.youkuaiyun.com/seahaa/article/details/11739095
10、ArrayList和linkList区别
1.对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素, 偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。
2.在ArrayList的中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。
3.LinkedList不支持高效的随机元素访问。
4.ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间
可以这样说:当操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用ArrayList会提供比较好的性能;当你的操作是 在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用LinkedList了。
11、http
12、Handler
http://www.cnblogs.com/codingmyworld/archive/2011/09/12/2174255.html
13、http://blog.youkuaiyun.com/wufenglong/article/details/6962921
14、TCP/IP SOCKET HTTP及HTTPS之间的关系及各自特性之总结
http://blog.sina.com.cn/s/blog_8417aea80100vaxa.html
http://blog.youkuaiyun.com/wangzt2008/article/details/7315516