一.线程的并行和并发有什么区别
并发:指应用能够交替执行不同的任务
并行:指应用能够同时执行不同的任务
两者区别:一个是交替执行,一个是同时执行.
二.编程:工厂模式或冒泡排序
三.singleTask和singleTop的区别
Activity的四种加载模式:
1、standard :系统的默认模式,一次跳转即会生成一个新的实例。
2、singleTop:singleTop 跟standard 模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的activity(应该可以理解为用户眼前所 看到的activity)时,程序将不会生成一个新的activity实例,而是直接跳到现存于栈顶的那个activity实例。
3、singleTask: singleTask模式和后面的singleInstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。
4、singleInstance: 设置为 singleInstance 模式的 activity 将独占一个task(感觉task可以理解为进程),独占一个task的activity与其说是activity,倒不如说是一个应用,这个应用与其他activity是独立的,它有自己的上下文activity。
四.DBHelper和Content Provider各在什么情况下使用
五.LinkedList和ArrayList的底层是什么数据机构,以及区别
六.jvm有几个模块
JVM内存的划分有五片:
1. 寄存器;
2. 本地方法区;
3. 方法区;
4. 栈内存;
5. 堆内存。
七.Socket和HttpUrlConnection在Android的区别
八.String的“+”和StringBuffer.append的区别
str += "a"; 你要分解来看:
str = str + "a";
而str + "a" 会创建一个新的String对象,就慢了。你要知道String对象一旦创建就是不能被改变的,要达到字符串拼接的效果,就得不停创建新对象。
StringBuilder直到最后sb.toString()才会创建String对象,之前都没有创建新对象(在你的例子中是的,但是如果你append的总长度超过一定范围——默认是16——就会创建一个新的数组,来装下更多的String)
九.Service的生命周期
采用start的方式开启服务onCreate()
--->onStartCommand()
(onStart()
方法已过时) ---> onDestory()
采用bind的方式开启服务onCreate()
--->onBind()
--->onunbind()
--->onDestory()
十.静态广播和动态广播
1、动态注册的广播永远要快于静态注册的广播,不管静态注册的优先级设置的多高,不管动态注册的优先级有多低
2、生存期,静态广播的生存期可以比动态广播的长很多,因为静态广播很多都是用来对系统时间进行监听,比如我们可以监听手机开机。而动态广播会随着context的终止而终止
3、动态广播无需在AndroidManifest.xml中声明即可直接使用,也即动态;而静态广播则需要,有时候还要在AndroidManifest.xml中加上一些权限的声明
十一.基本数据类型以及长度
十二.intentService
十三.递归算法
十四.Linux怎么创建文件、目录
十五.堆和栈的区别
1.栈内存存储的是局部变量而堆内存存储的是实体;
2.栈内存的更新速度要快于堆内存,因为局部变量的生命周期很短;
3.栈内存存放的变量生命周期一旦结束就会被释放,而堆内存存放的实体会被垃圾回收机制不定时的回收。