1.创建线程的方式有哪些?
1)继承Thread类
2)实现Runnable接口(无返回值)
3)实现Callable接口(有返回值)
4)线程池创建
2.StringBuffer和StringBuilder有什么区别?
1)可变性:一般都与String进行比较,因为String是不可变的,但是StringBuilder和StringBuffer是可变的。
2)线程安全性:StringBuffer对内部方法加了Synchronize同步锁,StringBuilder是不安全的。
3)性能:StringBuilder的性能比StringBuffer高,因为StringBuilder没有同步锁。
3.并行和并发的区别
并行:在同一时间段,发起多个请求访问不同资源,同时执行,互不影响,强调同一时间执行
并发:在同一时间,多个请求同时访问同一个资源,强调访问同一资源
4.Callable和Runnable的区别
1)Callable规定重写方法是Call(),Runnable规定重写方法是Run();
2)Callable任务执行完成后有返回值,Runnable任务执行完成后无返回值;
3)call方法可以抛出异常,但是run方法不可以;
4)运行Callable任务可以获取一个Future对象,通过Future对象可以拿到结果,也可以取消任务。
5.MVC、MVP、MVVM的优缺点
1)MVC:Model-View-Controller
MVC是通过controller的控制去操作model层的数据,并且返回给view层展示。
工作原理:用户触发事件->view层发送指令到controller层->controller层通知model层更新数据->数据更新完成后显示在view上。
优点:
通过controller控制全局,同时将view和model的变化分开,对复杂混乱的项目结构,有明确的组织方式。
缺点:
a.当业务逻辑增加时,大量的逻辑代码放进了controller中,导致controller越来越臃肿,后期维护成本提升。
b.没有区分业务逻辑和业务展示,单元测试不友好。