java工程师中兴面试题

1.servlet线程安全吗 怎样避免?

Servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求。所以Servlet是线程不安全的。

有几种方法可以实现Servlet线程安全:
1,实现 SingleThreadModel 接口的servlet是线程安全的
2,用synchronized同步对共享数据的操作
3,避免使用实例变量 

Servlet的优势在于多线程,高并发。第一种方法其实就是扼杀了其并发性能,所以不推荐在高并发的业务环境下使用。
2.web启动线程

调用servlet的时候,启动线程就ok了 
不要用listener,如果用了,tomcat启动就会加载,会提高tomcat内存用量

3.spring事务控制调用存储过程,存储过程中commit了还可以rollback吗?

commit后就不能rollback了

4.查询缓存是什么

通过SQL查询的话,是不会经过hibernate的缓存的

hibernate中 ,使用createSQLQuery(sql)查询,在开启getHibernateTemplate().setCacheQueries(true);后,执行到query.list();报异常:java.lang.ArrayIndexOutOfBoundsException: 0
当把关闭缓存getHibernateTemplate().setCacheQueries(false)能正常返回。
原因估计是createSQLQuery返回的对象不受hibernate 管理,因此对其设置缓存失效。
5.Struts2+Spring+Junit单元测试

使用Junit对Struts+spring系统进行单元测试,好处是不用启动tomcat等容器。

简单实例代码如下:

[java]  view plain  
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值