面试题总结
1、short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。
对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。
2、int型在32位下的范围。
-2的32次方到2的32次方。
3、TCP的三次握手
(1)客户端向服务器端发送一个SYK表示主动打开。
(2)服务器向一个合法的SYK客户端发送SYK/ACK。
(3)客户端向服务器发送ACK,并表示已连接。
4、hibernate和ibatis的分页区别
ibatis主要是通过SQL映射的方式来直接查询数据库。而hibernate是通过缓存来实现分页的。
5、hibernate和ibatis的区别
相同点:屏蔽jdbc api的底层访问细节,使用时我们不用与jdbc api打交道,就可以访问数据库。
hibernate是一个全自动的ORM映射工具,它可以自动生成SQL语句。而ibatis需要我们自己在XML里写SQL语句。
6、单例模式。
public class Singleton(){
private Singleton(){}
private Static Singleton sin=null;
public Static Singleton getInstance(){
if(sin==null){
sin=new Singleton();
}
return sin;
]}
}
7、java性能优化
a、不要在循环中使用Try/Catch语句,应把Try/Catch放在循环最外层。
b、通过StringBuffer的构造函数来设定他的初始化容量,可以明显提升性能。
c、不要在循环中调用synchronized(同步)方法
d、使用移位操作来代替'a / b'操作
e、使用移位操作代替'a * b'
f、如果只是查找单个字符的话,用charat()代替startswith()
g、避免不需要的造型操作
8、hibernate的三种状态
瞬态:new的对象称为瞬态。
持久态:处于该状态的对象在数据库中有一条对应的记录,并且此对象有一个持久化标识。
脱管态:当与某持久对象的session关闭时,由持久态变成脱管态。
9、hibernate的事务管理
hibernate是对jdbc轻量级的封装,本身并不具备事务管理。在事务管理层,hibernate将它委托给底层的jdbc或jta来实现事务的管理和调度。
10、struts2的流程
a、客户端浏览器发出HTPP请求。
b、在web.xml中,请求被filterDispatcher接收。
c、在struts.xml中找到与请求对应的action类和方法。并通过IOC方式,将值注入到action中。
d、action调用业务逻辑组件处理业务逻辑。这一步包含表单验证。
e、action执行完毕,根据struts.xml的配置找到对应的返回结果result,并跳到相应的页面。
11、ajax原理
通过XmlHttpRequest向服务器端发出异步请求,从服务器端获得数据,然后用javascript来操作DOM对象来更新页面。