面试题

1.MVC模式的理解;

2.标签DOCTYPE的作用和分类;

3.浏览器兼容性问题有哪些,例如在IE6\IE7\IE8\火狐下对一个DIV设置不同高度;

4.是否用过hack;

5.将三个块并列排在页面上,宽度相等;

6.用过哪些JAVASCRIPT框架,各框架的特点是什么,如JQUREY的优点;

7.常用标签的样式,如A标签设置显示时无下划线,鼠标浮动在上面时有下划线怎么用CSS编写,再比如列表标签UL\LI显示在一行,用来作MENU的样式如何实现;

8.常用标签的一些常用属性,如标签IMG的TITLE属性与ALT属性的区别;

9.对HTML5和CSS3的了解;

10.盒子模型理解和使用;

11.对HTML\XHTML\DHTML的理解;

12.写一个简单登陆页面的HTML和JAVASCRPT验证;

13.AJAX的理解及使用;

14.使一个层在FLASH上显示怎么写;

15.使一个DIV在窗口上下左右居中怎么写;

 

 

 

(2011-05-25 22:34)
标签: 

杂谈

 

Hibernate工作原理及为什么要用?
原理:
1.读取并解析配置文件
2.读取并解析映射信息,创建SessionFactory
3.打开Sesssion
4.创建事务Transation
5.持久化操作
6.提交事务
7.关闭Session
8.关闭SesstionFactory

为什么要用:
1.    对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。

2.    Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的ORM实现。他很大程度的简化DAO层的编码工作

3.    hibernate使用Java反射机制,而不是字节码增强程序来实现透明性。

4.    hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。

2. Hibernate是如何延迟加载?
1.  Hibernate2延迟加载实现:a)实体对象 b)集合(Collection)

2. Hibernate3 提供了属性的延迟加载功能

当Hibernate在查询数据的时候,数据并没有存在与内存中,当程序真正对数据的操作时,对象才存在与内存中,就实现了延迟加载,他节省了服务器的内存开销,从而提高了服务器的性能。

3.Hibernate中怎样实现类之间的关系?(如:一对多、多对多的关系)

类与类之间的关系主要体现在表与表之间的关系进行操作,它们都市对对象进行操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的many-to-one、one-to-many、many-to-many、

4. 说下Hibernate的缓存机制

1. 内部缓存存在Hibernate中又叫一级缓存,属于应用事物级缓存

2. 二级缓存:
a) 应用及缓存
b) 分布式缓存
条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一数据被系统频繁使用、非              关键数据
c) 第三方缓存的实现

5. Hibernate的查询方式
Sql、Criteria,object comptosition
Hql:
1、 属性查询
2、 参数查询、命名参数查询
3、 关联查询
4、 分页查询
5、 统计函数

6. 如何优化Hibernate?
1.使用双向一对多关联,不使用单向一对多
2.灵活使用单向一对多关联
3.不用一对一,用多对一取代
4.配置对象缓存,不使用集合缓存
5.一对多集合使用Bag,多对多集合使用Set
6. 继承类使用显式多态
7. 表字段要少,表关联不要怕多,有二级缓存撑腰


7. Struts工作机制?为什么要使用Struts?
工作机制:
Struts的工作流程:
在web应用启动时就会加载初始化ActionServlet,ActionServlet从
struts-config.xml文件中读取配置信息,把它们存放到各种配置对象
当ActionServlet接收到一个客户请求时,将执行如下流程.
    -(1)检索和用户请求匹配的ActionMapping实例,如果不存在,就返回请求路径无效信息;
    -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中;
    -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法;
    -(4)如果ActionForm的validate()方法返回null或返回一个不包含ActionMessage的ActuibErrors对象, 就表示表单验证成功;
    -(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的                    Action实例不存在,就先创建这个实例,然后调用Action的execute()方法;
    -(6)Action的execute()方法返回一个ActionForward对象,ActionServlet在把客户请求转发给 ActionForward对象指向的JSP组件;
    -(7)ActionForward对象指向JSP组件生成动态网页,返回给客户;

为什么要用:
JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。

基于Struts开发的应用由3类组件构成:控制器组件、模型组件、视图组件

8. Struts的validate框架是如何验证的?
在struts配置文件中配置具体的错误提示,再在FormBean中的validate()方法具体调用。

9. 说下Struts的设计模式 (struts原理)
MVC模式: web应用程序启动时就会加载并初始化ActionServler。用户提交表单时,一个配置好的ActionForm对象被创建,并被填入表单相应的数据,ActionServler根据Struts-config.xml文件配置好的设置决定是否需要表单验证,如果需要就调用ActionForm的Validate()验证后选择将请求发送到哪个Action,如果Action不存在,ActionServlet会先创建这个对象,然后调用Action的execute()方法。Execute()从ActionForm对象中获取数据,完成业务逻辑,返回一个ActionForward对象,ActionServlet再把客户请求转发给ActionForward对象指定的jsp组件,ActionForward对象指定的jsp生成动态的网页,返回给客户。

10. spring工作机制及为什么要用?
1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller.
3.DispatcherServlet请请求提交到目标Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象
6.视图对象负责渲染返回给客户端。

为什么用:
{AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用 AOP 后,公共服务  (比 如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。
    IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词 倒置 所表明的,IOC 就像反 过来的 JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。
Spring即使一个AOP框架,也是一IOC容器。 Spring 最好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。}

hibernate和jdbc,ibatis区别

1 看需求了,jdbc更为灵活,更加有效率,系统运行速度快。但是用起来麻烦,有的时候用了存储过程就不方便数据库移植了。 2 Hibernate,IbatIS 关系数据库框架,开发速度快,更加面向对象,可以移植更换数据库,但影响系统性能。

3.Hibernate和iBateis都是做数据持久化的框架,就等于是一个O/R Mapping解决方案.
有了这框架,只要配置下映射文件,就不需要手写sql语句了.
Hibernate是全自动化的,可以说O/R做的相当全面了.
iBateis和Hibernate相比,iBatis最大的特点就是小巧,上手很快。如果你不需要太多复杂的功能,iBatis是能满足你的要求又足够灵活的最简单的解决方案

 

 

1)为什么使用Spring?

我们为什么要学习Spring,Spring会给我们的开发带来什么样的好处呢?简单地说Spring简化了企业级系统开发。现阶段EJB是复杂的,因为EJB是为解决复杂问题而设计的,如分布式对象和远程事务的问题。但是,很多时候一些项目根本没有那么复杂,却承担了EJB的这种编写多个java文件,部署文件,和运行重量级容器的负担。只要用了EJB,不管系统要解决的问题是否复杂,甚至一个简单的系统,其复杂程度都会很高。而使用Spring,系统的复杂程度和要解决的问题的复杂程度成正比的。

我们承认EJB确实为开发人员提供了很多有价值的基础服务,所以Spring在努力提供一些类似服务的同时尽量简化开发模型。

以下三点或许可以成为我们继续学习Spring的动力吧!

A)好的设计比实现技术更重要

刚才说了一大堆EJB的坏话,呵呵。有时候系统需要,EJB是必需的。但通常这种情况很少。就像上面说的,我们可能只需要其中很少或者几项EJB服务。但还是采用了EJB,这就是为了技术而技术。Spring,让你的系统按照你的需求尽量简单。

B)接口松散耦合

如果你采用EJB为你的系统提供服务,那么你的组件不光依赖EJB业务接口。还需要从JNDI那里找到EJB对象,然后调用EJB接口,这不是松耦合的系统,相反聚合性很强。

而Sping呢?由Spring容器负责解决依赖关系(容器会为你把需要的依赖注入进去),所以什么主动寻找服务就不再需要啦。

C)易测试性

EJB测试需要启动容器,Spring不需要。

2)Spring是什么?

Spring是一个开源框架。由Rod Johnson创建。为了简化企业及系统开发而诞生的。使用Spring,你可以使用简单的javabeans来实现那些以前只有EJB才能实现的功能。

简单的说,Spring是一个轻量级IocAOP 容器 框架

A)轻量级

无论从大小还是系统开支来说,Spring都算是轻量级的。整个Spring框架也就是1M多一点的Jar包。Spring的处理开支也非常小。它是非侵入式的:基于Spring开发的系统的对象一般不依赖于Spring的类。

B)反向控制(Ioc)

使用Ioc,对象是被动接受依赖类,而不是主动去寻找。这点和JNDI恰好相反。也就是在容器实例化对象的时候主动将它的依赖注入给它。所以说Spring是通过Ioc(控制反转)来实现依赖注入的。

Ioc意味着关于对象如何得到它的协作对象的责任反转了!

C)面向切面(AOP)

通过AOP,将我们的业务逻辑从系统服务(事务管理,Log日志)中分离出来,将我们的关注点只放在业务逻辑部分。在需要系统服务的地点,时间再将系统服务注入进来。

D)容器

Spring是一个容器,是因为它包含并且管理系统对象的生命周期和配置。可以通过配置来设定你的Bean是单一实例(singleton)还是每次请求产生一个实例(prototype).

E)框架

使用简单的组件配置组合成一个复杂的系统。也就是说,通过XML文件配置,要啥有啥!

3)Spring的7个模块

Spring由7个模块组成,注意:这7个模块根据系统的需求进行取舍。

AOP模块,O/R映射模块,JDBC和DAO模块,Web Context和Utility模块,Application Context模块,MVC模块,核心容器和支持工具。

A)核心容器

 Spring核心容器为Spring框架提供了基础功能。在后面我们会讲到BeanFactory类,它是Spring框架系统的核心。BeanFactory采用工厂模式来实现Ioc.

B)Application Context模块

如果说BeanFactory使Spring成为容器的话,那么Application Context模块就是让Spring成为框架的原因。它在BeanFactory基础上进行了扩展,添加了对I18N,系统生命周期事件以及验证的支持。另外,还提供了很多企业级服务,如电子邮件服务,JNDI访问,EJB集成,远程调用以及定时服务。

C)Spring的AOP模块

是Spring应用系统开发切面的基础。

D)JDBC抽象及DAO模块

我记得我以前做的项目中,涉及到数据库操作的时候,总是在程序中写一大堆和业务不相干的代码,什么获得连接,创建语句,处理结果,关闭连接。杂乱不堪!!!

现在Spring的JDBC和DAO模块把这些样板代码抽象出来,让我们的数据库代码变得简单明了。另外,这个模块还创建了一个数据库异常层。

E)O/R映射集成模块

Spring并没有实现自己的ORM解决方案,它为许多流行的ORM框架提供了支持。

F)Spring的Web模块

它是建立在Application Context基础之上,提供了适合Web系统的上下文。该模块还支持多项其他面向Web的任务。还包括对Struts的集成支持。

G)Spring MVC框架

虽然Spring可以和其他MVC框架(struts,Web Work)集成,但它也提供了全功能的MVC框架。

转载于:https://www.cnblogs.com/jiangkaiou/p/4814488.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值