java开发面试题
1、如何解决spring单例的线程不安全问题?
一般线程不安全问题都是因为成员变量,因为成员变量放在堆上,堆是线程共享的。
如何解决呢?
a.改变单例作用域
在对应的类名上加上该注解@Scope("prototype"),表示每次调用该接口都会生成一个新的Bean。下图示例
b.解决方案二 ThreadLocal解决问题
c.尽量不使用成员变量
d.更改作用于为request 每次请求相当于重新生成对象
2、union和union all的区别
union:查询的结果集会合并 不会包含重复项
union all:查询的结果集不会合并 会包含重复项
3、spring的aop通知
4.git和svn的区别
git是分布式的
svn不是分布式的
git把数据按元数据存储
svn是按文件存储
git没有一个全局版本号 svn有
svn提交必须先update然后在commit,忘记合并会出现问题
5、left join、right join,join的区别
left join 左链接 以左边为主关联表2,表1数据全部显示,表2展示与表1交集数据
right join 右链接 以右边为主关联表2,表1数据全部显示,表2展示与表1有交集数据
join 内链接 表1 表2只展示有交集的数据
6、msql函数
char_length()
format()
left()
right()
weekday()
year()
now()
7、Sql查询时如果某字段是null值排序问题
当sql语句是升序时 null值会为最大“默认值”排序最底部,如何解决呢? 在sql语句后面添加 nulls first 排前面 ,nulls last 排后面解决
select * form user where order by id nulls first / nulls last
8、工作流了解
9、ehcache和redis的区别
ehcache是一个纯java的进程缓存框架,运行在jvm上,效率高,速度快,但是缓存共享麻烦,分布式架构麻烦
redis是一个独立程序,通过socket访问到缓存服务,效率比ehcache慢比数据库访问快
如果是单个应用独立程序,对缓存要求高的推荐用ehcache
如果是分布式架构,大型应用推荐用redis
10、spring有哪些组成?
Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Context。
qqqqqqqqqq
1
1
1
11111111111111