0
点赞
收藏
分享

微信扫一扫

面试题-Java中级篇(6)

1.Hibernate中get和load有什么不同之处?

把get和load放到一起进行对比是Hibernate面试时最常问到的问题,这是因为只有正确理解get()和load()这二者后才有可能高效地使用Hibernate。get和load的最大区别是,如果在缓存中没有找到相应的对象,get将会直接访问数据库并返回一个完全初始化好的对象,而这个过程有可能会涉及到多个数据库调用;而load方法在缓存中没有发现对象的情况下,只会返回一个代理对象,只有在对象getId()之外的其它方法被调用时才会真正去访问数据库,这样就能在某些情况下大幅度提高性能。

2.什么是 Ajax?Ajax 的原理是什么?Ajax 的核心技术是什么?Ajax 的优缺点是什么?

Ajax 是 Asynchronous JavaScript and XML 的缩写,是 JavaScript、XML、CSS、DOM 等多个技术的组合。

Ajax 的工作原理是一个页面的指定位置可以加载另一个页面所有的输出内容,这样就实现了一个静态页面也能获取到数据库中的返回数据信息了。所以 Ajax 技术实现了一个静态网页在不刷新整个页面的情况下与服务器通信,减少了用户等待时间,同时也从而降低了网络流量,增强了客户体验的友好程度。

Ajax 的核心技术是 XMLHttpRequest,它是 JavaScript 中的一个对象。

Ajax 的优点是:

(1).减轻了服务器端负担,将一部分以前由服务器负担的工作转移到客户端执行,利用客户端闲置的资源进行处理;

(2).在只局部刷新的情况下更新页面,增加了页面反应速度,使用户体验更友好。

Ajax 的缺点是不利于 SEO 推广优化,因为搜索引擎无法直接访问到 Ajax 请求的内容。

3.ActionContext是用来干什么的

ActionContext是Action的上下文。

通过ActionContext这个类来可以获得:request,application,session,Locale、ValueStack,ConversionErrors

1 可以获得servlet的api:request,application,session。

2 进行国际化:获得语言环境 Locale。

3 收集错误信息:ConversionErrors。

4 有个值栈来装action实例与创建的模型驱动的实例:ValueStack。

5 ActionContext是线程安全的-用本地线程实现的。

4.如果我的网站用的 utf-8 编码,为防止乱码出现,都需要注意哪些地方?

1)数据库中库和表都用 utf8 编码

2)java连接 mysql,指定数据库编码为 utf8 ;

3)java文件指定编码为 utf-8

4)网站下所有文件的编码为 utf8

5)html 文 件 指 定 编 码 为 utf-8

5.hibernate的三种状态之间如何转换

当对象由瞬时状态(Transient)一save()时,就变成了持久化状态;

当我们在Session里存储对象的时候,实际是在Session的Map里存了一份, 也就是它的缓存里放了一份,然后,又到数据库里存了一份,在缓存里这一份叫持久对象(Persistent)。 Session 一 Close()了,它的缓存也都关闭了,整个Session也就失效了,这个时候,这个对象变成了游离状态(Detached),但数据库中还是存在的。

当游离状态(Detached)update()时,又变为了持久状态(Persistent)。

当持久状态(Persistent)delete()时,又变为了瞬时状态(Transient), 此时,数据库中没有与之对应的记录。

6.简述 Tcp 协议的三次握手过程

TCP 是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务器确认;

第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;

第三次握手:客户端收到服务器的 SYN+ACK 包,向服务器发送确认包 ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

7.什么是拦截器 说说Struts2用拦截器来干什么 说出6个拦截器来

在访问类的某个方法或者属性之前执行,拦截的是Action的请求,进行拦截然后在方法的执行前或者之后加入某些操作,

如:国际化,权限,效验等与源代码无关的操作。

国际化,表单重复提交,类型转换,自动装配,数据封装,异常处理,模型驱动,请求参数,处理类型转换错误,日志拦截器。

9.写出你所知道的 XML 解析器

DOM,SAX,SimpleXML,其中前两种是通用的解析器,和具体语言无关,而 SimpleXML 则是 PHP 提供的解析器。

10.请你谈谈SSH整合

SSH: Struts(表示层)+Spring(业务层)+Hibernate(持久层)Struts:Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分(View:沿 用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action) Hibernate:

Hibernate是一个持久层框架,它只负责与关系数据库的操作。 Spring:

Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。


举报

相关推荐

0 条评论