面试题总结

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、客户端浏览器发出HTTP请求。

b、在web.xml中,请求被filterDispatcher接收。

c、在struts.xml中找到与请求对应的action类和方法。并通过IOC方式,将值注入到action中。

d、action调用业务逻辑组件处理业务逻辑。这一步包含表单验证。

e、action执行完毕,根据struts.xml的配置找到对应的返回结果result,并跳到相应的页面。


11、ajax原理

通过XmlHttpRequest向服务器端发出异步请求,从服务器端获得数据,然后用javascript来操作DOM对象来更新页面。


12、jsp的内置对象

request、response、pageContext、session、page、out、application、config、exception

request表示HttpServletRequest的对象。它包含了有关浏览器请求信息,并且提供了几个用于获取cookie、session、head的有用方法。

response表示HttpServletResponse的对象,并提供了用于设置送回浏览器响应的方法。

pageContext表示javax.servlet.jsp.PageContext的对象。网页的属性在这里设置。它用于方便存取各种范围的名字空间,servlet相关对象的API及servlet通用功能的方法。

session表示一个请求的javax.servlet.http.HttpSession对象。用于存储用户的状态信息。

page表示该页面的一个servlet实例。

out对象是javax.jsp.JspWriter的一个实例。用于向浏览器回送输出结果。

application表示javax.servlet.ServletContext对象。servlet执行的内容。有助于查找servlet引擎和servlet环境信息。

config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例化的初始化参数。


13、spring有几中注入方式

a、setter注入

b、构造器注入

c、注解注入

14、spring的IOC与AOP

  ioc就是控制翻转或是依赖注入。通俗的讲就是如果在什么地方需要一个对象,你自己不用去通过new 生成你需要的对象,而是通过spring的bean工厂为你长生这样一个对象。

AOP面向切面编程将程序中的交叉业务逻辑(比如安全,日志,事务等),封装成一个切面,然后注入到目标对象(具体业务逻辑)中去。


15、struts1与struts2的区别

a、struts1的前端控制器是一个servlet,名称为ActionServlet。struts2的前端控制器是一个filter,名称为FilterDispatcher.

b、struts1需要继承action类。struts2可以不继承任何action类。

c、在struts1中需要使用formbean来封装请求参数。在struts2中通过Ioc的方式,将值注入到action中。 


16、String和StringBuffer的区别

相同点:都能存储和操作字符串。

String类提供了数值不可改变的字符串。而StringBuffer提供的字符串可以进行修改。


17、final、finally、finalize的区别

final用于声明属性、类和方法。表示属性不可变,类不可继承,方法不可覆盖。

finally是异常处理语句的一部分,表示总是执行。

finalize是Object的一个方法,在垃圾器执行的时候会调用被回收对象的此方法。


18、abstract class和interface有什么区别

含有abstract修饰符的类即为抽象类,abstract 类不能创建的实例对象。含有abstract方法的类必须定义为abstract class,abstract class类中的方法不必是抽象的。abstract class类中定义的抽象方法必须在具体(Concrete)子类中实现,所以,不能有抽象构造方法或抽象静态方法。如果的子类没有实现抽象父类中的所有抽象方法,那么子类也必须定义为abstract类型。

接口(interface)可以说成是抽象类的一种特例,接口中的所有方法都必须是抽象的。接口中的方法定义默认为public abstract类型,接口中的成员变量类型默认为public static final

下面比较一下两者的语法区别:

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4.抽象类中的抽象方法的访问类型可以是public,protected,但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5.抽象类中可以包含静态方法,接口中不能包含静态方法

6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public staticfinal类型。

7.一个类可以实现多个接口,但只能继承一个抽象类。

     下面接着再说说两者在应用上的区别:

接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。而抽象类在代码实现方面发挥作用,可以实现代码的重用,例如,模板方法设计模式是抽象类的一个典型应用,假设某个项目的所有Servlet类都要用相同的方式进行权限判断、记录访问日志和处理异常,那么就可以定义一个抽象的基类,让所有的Servlet都继承这个抽象基类,在抽象基类的service方法中完成权限判断、记录访问日志和处理异常的代码,在各个子类中只是完成各自的业务逻辑代码

8.连接池的调用机制


J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。

调用:客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为 忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。
释放:当使用的池连接调用完成后,池驱动程序将此连接表记为空闲, 其他调用就可以使用这个连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值