JEE考试题目及复习资料.docx
J2简答题1、简述J2的四层模型。运行在客户端机器上的客户层组件;运行在J2服务器上的层组件;运行在J2服务器上的业务逻辑层组件;运行在服务器上的企业信息系统层软件2、什么是对象持久化?即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、数据文件中等等。3、简述一下,为什么我们使用它?( )是一种为了解决面向对象及关系型数据库存在的互不匹配的现象的技术。简单说:是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据中。本质上就是将数据从一种形式转换到另外一种形式。原因:用它来架起对象和关系型数据库的桥梁,可解决对象层次的映射、对象关系的映射以及对象的持久化问题。4、 简述一下如何使用实现对象持久化的过程(可画图或用伪码描述) 1:创建对象。在这一步中主要为了进行配置文件的装载操作,读取所有的配置文件并进行解析、 2: 创建对象。通过创建好的对象可以创建一个对象的实例,同时是生成对象实例的工厂,他在整个应用中应该是,唯一的。 3:创建对象。 对象类似于数据库的连接对象,可以理解为及数据库建立的一个连接,但是他的功能要比中的对象丰富很多。 4:开始一个事务。在中定义一个事务操作的开始,这是使用进行持久化操作必不可少的步骤 5:进行持久化操作。在这个步骤中可以读取或者保存对象。 6:结束事务。在操作完成之后还要进行显式的结束事务的操作。 7:关闭。类似于释放数据库的连接。5、为什么要实现序列化?1、序列化以某种存储形式使自定义对象持久化2、序列化将对象转换为可传输方式从一个地方传递到另一个地方3、序列化使程序更具维护性6、比较一下中的()和()方法1、创建的会和绑定到当前线程,而不会。2 、创建的线程会在事务回滚或事物提交后自动关闭,而必须手动关闭7、比较一下中的()和()方法,以及如何保证每次都是从数据库读取而不是在缓存中读?()和()方法均可以根据指定的实体类和从数据库读取记录,并返回及之对应的实体对象。其区别在于:如果未能发现符合条件的记录,方法返回,而方法会抛出一个。方法可返回实体的代理类实例,而方法永远直接返回实体类。方法可以充分利用内部缓存和二级缓存中的现有数据,而方法则仅仅在内部缓存中进行数据查找,如没有发现对应数据,将越过二级缓存,直接调用完成数据读取。8、接受用户参数输入,主要有哪几种方式?我们常用的是哪一种? 1属性接收参数;2 (域模型)接收参数;3 接收参数。常用第一种跟第二种9、在中实现一个有哪几种方式?最常用的是哪种?1定义一个普通的类,类中只要有一个 ()方法且返回一个字符串即可。2.定义一个类,实现接口,2这个包的3继承2这个类。最常用的是第三种10、在中的常用的有四种类型1) 2) 3) 4)哪些是服务器跳转?哪些是客户端跳转?和是服务器端跳转,所以客户端只发起一次请求和是客户端跳转,所以客户端发起两次请求。11、j2是技术还是平台还是框架?它主要包含哪些技术,列举并简单描述2到3个技术? J2本身是一个标准,一个为企业分布式应用的开发提供的标准平台。J2也是一个框架,包括、等技术。:是一种用于执行语句的 ,可以为多种关系数据库提供统一访问,它由一组用语言编写的类和接口组成。协议调用远程对象上的方法。它使用了序列化方式在客户端和服务器端传递数据。是一种被使用的更底层的协议。12、的各个部分都有哪些技术来实现?如何实现?是的简写。"" 代表的是应用的业务逻辑(通过,组件实现), "" 是应用的表示面(由页面产生),"" 是提供应用的处理过程控制(一般是一个),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。13、什么是?是公司提供的一种标准的命名系统接口,提供统一的客户端,通过不同的访问提供者接口 的实现,由管理者将 映射为特定的命名服务和目录系统,使得应用程序可以和这些命名服务和目录服务之间进行交互。14、举例并简单描述2到3种动态网页开发技术。1、,是英文超文本预处理语言 的缩写。 是一种 内嵌式的语言,是一种在服务器端执行的嵌入文档的脚本语言,语言的风格有类似于C语言,被广泛地运用。2、,它是微软公司开发的代替脚本程序的一种应用,它可以及数据库和其它程序进行交互,是一种简单、方便的编程工具。的网页文件的格式是,现在常用于各种动态网站中。15、简单描述浏览器输入访问资源的过程(也就是工作的时序图)(提示,解释地址用端口号和地址访问服务器访问资源)。1浏览器会将请求打包成请求数据包,发送给服务器,2服务器中的引擎解析请求并封装为一个对象(包含了请求数据),同时创建个对象。3调用的()方法,并将,对象作为参数传递给实例4 可以从对象中获得请求数据,并处理,当然,也可能要访问数据库。然后将处理之后的结果放到中。5引擎从中取数据,并将数据打包成数据包发送给浏览器。16、开发服务器程序三种方法。开发有三种方法:a,实现接口; b,继承; c,继承17、通过去开发,需要重写和方法。这是常用的方式,请简述及方法的区别。(1)是从服务器上获取数据,是向服务器传送数据。在客户端,方式在通过提交数据,数据在中可以看到;方式,数据放置在 内提交。(2)对于方式,服务器端用获取变量的值,对于方式,服务器端用获取提交的数据。(3)方式提交的数据最多只能有1024字节,而则没有此限制。(4)安全性问题。使用 的时候,参数会显示在地址栏上,而 不会。所以,还是使用 为好。 18、简述返回包中的状态码200,302,404,500的意义。200 请求已成功,请求所希望的响应头或数据体将随此响应返回。302 请求的资源现在临时从不同的响应请求。404 请求失败,请求所希望得到的资源未被在伺服器上发现。500 伺服器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理.19、简述请求重定向()和请求转发( )的区别。1、()只能将请求转发给同一个应用中的组件,而()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。2、()方法重定向的访问过程结束后,浏览器地址栏中显示的会发生改变,由初始的地址变成重定向的目标;而调用()方法的请求转发过程结束后,浏览器地址栏保持初始的地址不变。3、()方法的调用者及被调用者之间共享相同的对象和对象;而()方法调用者和被调用者使用各自的对象和对象,它们属于两个独立的请求和响应过程。20、拒绝连接、服务器崩溃的原因?最少写三个?1. 没有打开2. 网络连接可能出了问题3. 连接配置错了4. 驱动的,是否都写对了5. 下加入相应驱动,数据连接代码是否有误6. 数据库配置可能有问题7. 当前联接太多了,服务器都有访问人数限制的8. 服务器的相应端口没有开,即它不提供相应的服务9 有哪些缓存,分别怎么使用?10 你对的了解到了一个什么样的程度?11 写出一个语句体现中一对多的关系21、()和()的区别?()方法操作的对象必须是持久化了的对象。也就是说,如果此对象在数据库中不存在的话,就不能使用()方法。()方法操作的对象既可以使持久化了的,也可以使没有持久化的对象。如果是持久化了的对象调用()则会更新数据库中的对象;如果是未持久化的对象使用此方法,则到数据库中。22、的三种状态之间如何转换?当对象由瞬时状态()一()时,就变成了持久化状态。当我们在里存储对象的时候,实际是在的里存了一份,也就是它的缓存里放了一份,然后,又到数据库里存了一份,在缓存里这一份叫持久对象()。 一 ()了,它的缓存也都关闭了,整个也就失效了,这个时候,这个对象变成了游离状态(),但数据库中还是存在的。当游离状态()()时,又变为了持久状态()。当持久状态()()时,又变为了瞬时状态(),此时,数据库中没有及之对应的记录。23、 工厂模式?工厂模式主要是为创建对象提供了接口。工厂模式按照及模式中的提法分为三类:1. 简单工厂模式( ) 2. 工厂方法模式( ) 3. 抽象工厂模式( ) 这三种模式从上到下逐步抽象,并且更具一般性。还有一种分类法,就是将简单工厂模式看为工厂方法模式的一种特例,两个归为一类。下面是使用工厂模式的两种情况:1.在编码时不能预见需要创建哪种类的实例。2.系统不应依赖于产品类实例如何被创建、组合和表达的细节24、 抽象类和接口的区别? 接口是公开的,里面不能有私有的方法或变量,是用于让别人使用的,而抽象类是可以有私有方法或私有变量的, 另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法,一般的应用里,最顶级的是接口,然后是抽象类实现接口,最后才到具体类实现。 还有,接口可以实现多重继承,而一个类只能继承一个超类,但可以通过继承多个接口实现多重继承,接口还有标识(里面没有任何方法,如接口)和数据共享(里面的变量全是常量)的作用.25、 和的区别?是服务器请求资源,服务器直接访问目标地址的,把那个的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以参数都可以获取。26、 持久化对象的三种状态,代表含义?瞬时态:简单的说就是你在程序里面一个对象,还没有和关联 持久态:对象和有了关联,对象处于框架管理中 游离态:在持久态的情况下,对象和失去了关联,比如()或() 后,即游离态,但数据已经存储到了数据库27、 页面之间的值传递?1:可以分成多个参数对的方式用传递。2:可以用特定的字符分隔后组成一个字符串,再用一个参数对的方式传递。3:如果是第三信息的话,可以用在服务器端的方式传递,一般不用这种方式。因为占服务器资源。4:也可以用方式传递。5:当然还可以用其它的不常的方式传递。28、 框架的数据验证可分为几种类型?表单验证(由 处理):如果用户没有在表单中输入姓名,就提交表单,将生成表单验证错误业务逻辑验证(由处理):如果用户在表单中输入的姓名为“”,按照本应用的业务规则,不允许向“”打招呼,因此将生成业务逻辑错误。29、 写一个模式的例子?30、 谈谈你的理解? 是一种设计模式,它强制的将应用程序的输入、处理、和输出分开。 使用了的应用程序被分为3个核心部件:试图()、模型()、控制器()。它们各司其职,既分工明确又相互合作。 首先视图接受用户输入请求,然后将请求传递给控制器,控制器再调用某个模型来处理用户的请求,在控制器的控制下,再将处理后的结果交给某个视图进行格式化输出给用户.这是经典的设计执行的基本流程。不仅实现了功能模块和显示模块的分离,同时它还提高了系统的可维护性、可扩展性和组件的可复用性,是一个优秀的创建软件的途径。 J2把引入了领域,并在此基础上架构出了一套称为2的体系。2体系及作为视图显示输出和接受用户输入数据,作为控制器处理用户请求并根据用户请求选择相应的返回给用户,作为模型组件用作业务逻辑处理、管理数据的存储和一致性。31、 项目中为什么使用? 1. 使用是因为是基于模式的,很好的将应用程序进行了分层,使开发者更关注于业务逻辑的实现;第二,有着丰富的,如能灵活运用,则能大大提高开发效率。2. 使用:因为为应用提供了一个易用的、高效率的对象关系映射框架。是个轻量级的持久性框架,功能丰富。3. 使用:因为基于( ,反向控制)和构架多层j2系统的框架,但它不强迫你必须在每一层中必须使用,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;采用使得可以很容易的实现的装配,提供了简洁的并据此实现事务管理( ),等等32、 在2中,是单实例还是多实例,为什么? 2的是多实例的并非单例,也就是每次请求产生一个的对象。原因是: 2的中包含数据,例如你在页面填写的数据就会包含在的成员变量里面。如果是单实例的话,这些数据在多线程的环境下就会相互影响,例如造成别人填写的数据被你看到了。所以2的是多例模式的。33、及的联系?是的轻量级封装,包括的及数据库的连接(用的配置文件实现当然本质是封装了的),和查询,删除等代码,都用面向对象的思想用代码联系起来,通过 配置文件把类的字段和数据库的字段关联起来比如数据库的,在类中就是 ; () ( );然后语句也是面向对象的,它的查询语句不是查询数据库而是查询类的,这些实现的魔法就是文件,其实封装的文件34、 一般用做什么?是一个解决了许多在J2开发中常见的问题的强大框架。 提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。的架构基础是基于使用属性的 容器。然而,这仅仅是完整图景中的一部分:在使用容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。 提供了唯一的数据访问抽象,包括简单和有效率的框架,极大的改进了效率并且减少了可能的错误。的数据访问架构还集成了和其他 解决方案。还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如或者事务提供一个一致的编程模型。提供了一个用标准语言编写的框架,它给提供了声明式的事务管理和其他企业事务如果你需要还能实现你自己的。这个框架足够强大,使得应用程序能够抛开的复杂性,同时享受着和传统相关的关键服务。还提供了可以和容器集成的强大而灵活的 框架。35、 及的区别? 架构是一种典型的两层架构,其全程是,即客户端服务器端架构,其客户端包含一个或多个在用户的电脑上运行的程序,而服务器端有两种,一种是数据库服务器端,客户端通过数据库连接访问服务器端的数据;另一种是服务器端,服务器端的程序通过及客户端的程序通信。 架构也可以看做是胖客户端架构。因为客户端需要实现绝大多数的业务逻辑和界面展示。这种架构中,作为客户端的部分需要承受很大的压力,因为显示逻辑和事务处理都包含在其中,通过及数据库的交互(通常是或存储过程的实现)来达到持久化数据,以此满足实际项目的需要。架构的全称为,即浏览器/服务器结构。指的是浏览器,极少数事务逻辑在前端实现,但主要事务逻辑在服务器端实现,客户端,服务器端和端构成所谓的三层架构。架构的系统无须特别安装,只有浏览器即可。架构中,显示逻辑交给了浏览器,事务处理逻辑在放在了上,这样就避免了庞大的胖客户端,减少了客户端的压力。因为客户端包含的逻辑很少,因此也被成为瘦客户端。36、 J2常用的设计模式?说明工厂模式?中的23种设计模式:(工厂模式)(建造模式) (工厂方法模式),(原始模型模式),(单例模式),(门面模式),(适配器模式),(桥梁模式), (合成模式),(装饰模式), (享元模式), (代理模式),(命令模式), (解释器模式), (访问者模式),(迭代子模式), (调停者模式), (备忘录模式),(观察者模式), (状态模式), (策略模式), (模板方法模式), (责任链模式)工厂模式:工厂模式是一种经常被使用到的模式,根据工厂模式实现的类可以根据提供的数据生成一组类中某一个类的实例,通常这一组类有一个公共的抽象父类并且实现了相同的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的子类通过不同的方法实现了基类中的方法。然后需要定义一个工厂类,工厂类可以根据条件生成不同的子类实例。当得到子类的实例后,开发人员可以调用基类中的方法而不必考虑到底返回的是哪一个子类的实例。37、的作用是什么?提供的高级配置机制,使得管理任何性质的对象成为可能。在中,是容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。为我们提供了许多易用的实现,就是最常用的一个。该实现将以方式描述组成应用的对象以及对象间的依赖关系。类将持有此配置元数据,并用它来构建一个完全可配置的系统或应用。的工作原理?通过的方式,将前台数据通过对象传递到后台,后台在接收到请求后,将需要的结果,再传回到前台,这样就可以实现不需要页面的回发,页是数据实现来回传递,从页实现无刷新。 39、何为容器?容器是一个 所编写的程序,原先必须自行编写程序以管理对象关系,现在容器都会自动帮您作好。常用容器40、 配置文件中的元素的作用是什么?它的两个基本属性是什么? 用于指定属性值为容器中的其它.两个基本属性是和 41、 具有的三种检索方式?检索方式 检索方式 检索方式 42、 什么是,请详述? 不创建对象,但是描述创建它们的方式。在代码中不直接及对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。容器(在 框架中是 容器) 负责将这些联系在一起。 就是由容器控制程序之间的关系,而非传统实现中,由程序代码直接操控,控制权由应用代码中转到了外部容器,控制权的转移,就是所谓的反转。 43、 什么是,请详述? 是面向切面编程 。 把软件系统分为两个部分:核心关注点和横切关注点。所谓的核心关注点,是业务处理的主要流程,也就是说这个解决方案要做的事。所谓横切关注点,是及核心业务无关的部分,它把常发生在核心关注点的多处,而各处基本相似,如日志,事务,权限等 。 44、 框架的七个模块是什么?(1) 面象切面编程 (2) 数据访问对象 (3) 对象关系影射 (4) 上下文配置,向框架提供上下文信息 (5) - 上下文模块 (6) 实现了 (7) 核心容器提供框架基本功能 45、 的注入方式有哪几种?1. 接口注入(不推荐)2. ,方式注入(比较常用)3. 构造器注入(死的应用)接口注入模式因为具备侵入性,它要求组件必须及特定的接口相关联,因此并不被看好,实际使用有限。 注入:对于习惯了传统 开发的程序员,通过 方法设定依赖关系更加直观。如果依赖关系较为复杂,那么构造子注入模式的构造函数也会相当庞大,而此时设值注入模式则更为简洁。如果用到了第三方类库,可能要求我们的组件提供一个默认的构造函数,此时构造子注入模式也不适用。构造器注入:在构造期间完成一个完整的、合法的对象。所有依赖关系在构造函数中集中呈现。依赖关系在构造时由容器一次性设定,组件被创建之后一直处于相对“不变”的稳定状态。只有组件的创建者关心其内部依赖关系,对调用者而言,该依赖关系处于“黑盒”之中。46、 简述一下动态代理?动态代理类的字节码在程序运行时由反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为 反射机制可以生成任意类型的动态代理类。 包中的类和 接口提供了生成动态代理类的能力。47、 请实现一个代理类,并解释说明?解决方案把你的算法改写,输入参数从数组改成,之后就可以把的来源类换成具有统计功能的类了。解决方案 <T> <T> (<T> ) (<T>)(), , () <T> = <T>();("调用" + () + "耗时:" + ( - ) + "纳秒");第 9 页