Base:
OOA是什么?OOD是什么?OOP是什么?{
oo(object-oriented):基于对象概念,以对象为中心,以类和继承为构造机制,来认识,理解,刻画客观世界和设计,构建相应的软件系统的一门方法;本意----模拟人类的思惟方式,使开发,维护,修改更加容易
ooa(object-oriented analysis):强调的是在系统调查资料的基础上,针对OO方法所须要的素材进行的归类分析和整理,而不是 对管理业务现状和方法的分析-------其实就是进一步对oo进行细化,初步得出该oo的属性与方法(或者简单的理解:在得出的文档中对接口的粗略定 义)
ood(object-oriented design):OO方法中一个中间过渡环节,其主要做用是对ooa分析的结果做进一步的规范化整理,以便可以被OOP直接接受------整理和定义oo的属性和方法
oop(object-oriented programming):把组件的实现和接口分开,而且让组件具备多态性----(抽象,继承,封装,多态)面向接口编程? }
分别是:面向对象分析、面向对象设计、面向对象编程
抽象的概念:
继承的概念:对象的一个新类能够从现有的类中派生,这个过程就是类的继承,子类继承父类的特性。子类能够从父类继承方法和实例变量,而且子类能够修改或增长新的方法以便更适合的使用。{
继承主要实现重用代码,节省开发时间。}
封装的概念:{
封装是实现面向对象程序设计的第一步,封装就是将数据或函数等集合在一个个的单元中(咱们称之为类)。被封装的对象一般被称为抽象数据类型。 }
多态的概念:
构造器不可被Override可是能够Overload。{
多态:同一操做做用于不一样的对象,能够有不一样的解释,产生不一样的执行结果。在运行时,能够经过指向基类的指针,来调用实现派生类中的方法。}
接口是否可继承接口?抽象类是否能够实现接口?抽象类是否可继承实体类?
能够;能够;能够。
Overload和Override的区别
二者是多态的不一样表现,Override是父类和子类之间多态性的一种表现,Overload是一个类中多态性的一种表现。Overload自己和返回值无关,因此是能够改变返回值的。
{ Override是重写:方法名称、参数个数,类型,顺序,返回值类型都是必须和父类方法一致的。它的关系是父子关系
Overload是重载:方法名称不变,其他的都是能够变动的。它的关系是同一个类,同一个方法名,不一样的方法参数或返回值。
备注:它们都是是Java多态性的不一样表现 }
abstract class和interface的区别
抽象类中能够存在非抽象方法,而接口不能够。抽象类只能够被单继承而接口则能够实现多继承。
&和&&的区别
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
int和Integer有什么区别
Java的两种不一样的类型,基本数据类型和复合类型,Integer是int的封装类型,提供了多种方法调用。运行速度上也有着区别,基本数据类型的运行速度更快。
String是最基本的数据类型吗?
基本数据类型只有如下8种:boolean,byte,char,short,int,float,long,double。因此String不是最基本的数据类型。
String和StringBuffer的区别
均可以储存和操做字符串,String提供了数值不可变的字符串,而StringBuffer能够进行字符串的修改。
是否可继承String类
不能够,String类是final的。
final,finally,finalize的区别
final是最终形态修饰符,修饰变量时,此变量为常量,修饰方法时,此方法不可被重写,修饰类时,此类不可被继承。
finally是异常处理语句结构的一部分,表示总会被执行的语句块。
finalize是Object中的方法,在垃圾回收器执行的时候会调用被回收对象的该方法用于释放一些资源。
String s = new String(“xyz”)一共建立了几个String对象?
两个
{一个或两个}
Static Nested Class和Inner Class的不一样
静态内部类能够不依赖于外部实例被实例化,而内部类须要在外部类实例化后才能实例化。
GC是什么?为何要有GC?
GC是垃圾回收器,程序员常常会忘记或错误的进行内存回收而致使程序或系统的不稳定甚至崩溃,java使用GC能够自动回收内存。
abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized
都不能。
数组有没有length()方法?String有没有length()方法
没有;有。
switch可以做用在byte上,可否做用在long上,可否做用在String上
switch只能做用于如下几种类型:byte,char,short,int。
两个对象值相同,但却可有不一样的hashcode
这话不对,值相同,hashcode必定相同。
Java是值传递仍是引用传递?
值传递,一个对象被看成参数传递进一个方法后,值被改变,在此方法结束后,被改变的值将保留,那是由于参数的值就是对该对象的引用,因此引用实际上是不一样的,可是所指对象是相同的。
Java的接口和C++的虚类的相同和不一样处
Java的接口和C++的虚类均可以实现多继承,只是C++的虚类相似于Java的抽象类。
JVM加载类文件的原理机制
JVM中类的装载是由ClassLoader和它的子类来实现,ClassLoader是一个重要的Java运行时系统组件,负责在运行时查找和装入类文件的类。
char型变量能存储一个中文汉字吗?
能,由于java中以unicode编码,一个char占16个字节,因此能够。
逻辑操做(&,|,^)与条件操做(&&,||)的区别
条件操做只能操做boolean型,而逻辑操做不只能够操做boolean还能够操做数值型。逻辑操做不会产生短路。
是否能够从一个static方法内部发出对非static方法的调用
不能够。
写clone()方法时,一般都有一行代码,是什么?
clone有缺省行为,super.clone();负责产生正确大小的空间,并逐位复制。
静态变量和实例变量的区别
静态变量为类全部,一个类的每个实例都共用该变量,所以,对于每一个实例来讲,其值都是一致的。实例变量为每个实例所特有,所以,对于每一个实例来讲,实例变量的值都保证了本身的某些状态。
Anonymous Inner Class是否可继承其余类或实现接口
均可以。
Java中有没有goto?
有,是保留字,可是不能使用。
访问修饰符的区别
做用域
当前类
同包
子类
其余
public
√
√
√
√
protected
√
√
√
×
default(不写时)
√
√
×
×
private
√
×
×
×
Java是从什么语言改进从新设计?
C++
如下哪句话正确?
A.Java程序通过编译后产生machine code
B.Java程序通过编译后产生byte code
C.Java程序通过编译后产生dll
D.以上都不正确
答案:B
如下说法正确的有
A.class中constructor不可省略
B.constructor必须与class同名,但方法不能与class同名
C.constructor在一个对象被new时执行
D.一个class只能定义一个constructor
答案:C
下列语句正确的是
A.形参可被视为local variable
B.形参可被字段修饰符修饰
C.形参为方法被调用时,真正被传递的参数
D.形参不能够是对象
答案:A
public class A{
int x = 10;
public A(){ //构造方法
System.out.println("A's constructor");
add(2);
}
public void add(int y){
System.out.println("A's add method");
x+=y;
}
}
class B extends A{
int x = 9;
public B(){
System.out.println("B's constructor");
}
public void add(int y){
System.out.println("B's add method");
x+=y;
}
public static void main(String []args){
A a = new B();
System.out.println(a.x);
B b = new B();
System.out.println(b.x);
A c = new A();
System.out.println(c.x);
}
}
以上程序输出结果是多少?
10,9,12
{
A's constructor
B's add method
B's constructor
10
A's constructor
B's add method
B's constructor
9
A's constructor
A's add method
12
}
Exception:
运行时异常与通常异常有何不一样
异常表示程序运行过程当中可能出现的非正常状态,运行时异常表示虚拟机的一般操做中可能遇到的异常,是一种常见运行错误。Java编译器要求方法必须声明抛出可能发生的非运行时异常,但并不要求必须声明抛出未被捕获的运行时异常。
Error和Exception的区别
Error表示恢复很困难的一种严重问题,通常由os或jvm抛出。Exception表示一种设计或实现问题,通常由运行的程序自己产生和抛出。
try里有个return语句,紧跟在try后的finally中的code是否会被执行
会,在return以前。
Collection:
说出ArrayList,Vectory,LinkedList的存储性能和特性
ArrayList和Vectory实现了线性结构,遍历元素时,效率较高,LinkedList实现了链表结构(双向循环),插入和删除效率较高,ArrayList是线程异步,Vectory是线程同步,因此执行效率Vectory较低,可是数据安全性较高。
Collection和Collections的区别
Collection是集合框架的父接口,其直接子接口主要有Set和List。Collections是针对集合类的一个工具类,提供一系列静态方法实现对各类集合的搜索、排序、线程安全化等操做。
HashMap和Hashtable的区别
Hashtable的方法是同步的而HashMap不是,另外HashMap容许有一个null做为key,而Hashtable不容许
heap和stack有什么区别
stack是一种线形集合,按照先进后出(FILO)的方式进行处理。heap是stack的一个组成元素。{
1.heap是堆,stack是栈。2.stack的空间由
操做系统自动分配和释放,heap的空间是手动申请和释放的,heap经常使用new关键字来分配。3.stack空间有限,heap的空间是很大的自由区。在Java中,若只是声明一个对象,则先在栈内存中为其分配地址空间,若再new一下,实例化它,则在堆内存中为其分配地址。4.举例:数据类型 变量名;这样定义的东西在栈区。如:Object a =null; 只在栈内存中分配空间new 数据类型();或者malloc(长度); 这样定义的东西就在堆区如:Object b =new Object(); 则在堆内存中分配空间
}
List,Set,Map是否继承自Collection接口?
List,Set是;Map不是。
Set里的元素是不能重复的,那么用什么方法来区分是否重复?是用==仍是equals?有什么区别?
经过iterator来区分是否重复。==判断的是地址,equals判断内容和类型是否相同。
List,Set,Map接口各有什么特色?
List以特有次序来存放元素,能够重复。Set内部排序,不可重复。Map接口以键值对来存放数据,键不可重复,值能够重复。
Thread:
sleep和wait的区别
sleep是线程类Thread的方法,致使此线程暂停执行指定时间,将CPU的控制权出让给其余线程,但监控状态依然保持,到时恢复。wait是Object类的方法,对此对象调用wait方法致使本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify或notifyAll后本线程才进入对象锁定池准备得到对象锁进入运行状态。
同步和异步的区别
独占锁的概念,同步为线程独占,异步则是共享使用,同步将致使运行效率下降,异步则可能使得多线程并发访问资源时产生状态的冲突。
一个线程进入一个synchronized方法后,其余线程是否可进入此对象的其余方法?
能够进入他的其余方法,而不能进入那一个方法。
简述synchronized( 同步的)和java.util.concurrent.locks.Lock的异同
Lock能完成synchronized所实现的全部功能。Lock有比synchronized更精确的线程语义和更好的性能。synchronized会自动释放锁,而Lock必定要求程序员手动释放,而且必须在finally中释放。
启动一个线程须要调用什么方法?
start方法。可是并不表明这个线程被启动了,而是处于一个待启动状态。线程启动将调用run方法。
IO:
Java中有几种类型的流?
根据不一样的分类能够分为:输入流和输出流、字节流和字符流、节点流和介质流。{
按照流是否直接与特定的地方(如磁盘、内存、设备等)相连,分为节点流和处理流两类。
节点流:能够从或向一个特定的地方(节点)读写数据。如FileReader.
处理流:是对一个已存在的流的链接和封装,经过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法老是要带一个其余的流对象作参数。一个流对象通过其余流的屡次包装,称为流的连接。
}
什么是Java序列化,如何实现Java序列化
序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流花。能够对流化后的对象进行读写操做,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操做时所引起的问题。
JDBC:
如多用户同时访问数据库,应采用什么技术来进行数据库链接管理?
可采用数据库链接池。
Java中访问数据库的步骤,Statement和PreparedStatement的区别?
(1).注册驱动
(2)建立链接
(3)建立执行对象
(4)执行SQL语句
(5)处理结果集
(6)关闭链接
PreparedStatement是预编译的处理语句,可使语句自己保存在内存中,在屡次执行时效率很高。
JDBC如何实现分页
JDBC分页分为数据库分页和应用程序分页两种。应用程序分页讲求将全部符合条件数据一次性取出,存放在数组或动态数组中,而后按要求提取。数据库分页按照数据库的不一样,采起的方式也不同,如MSSQL中按照TOP来进行分页,而Oracle中则根据伪列来进行分页。
事务处理的方法
Connection中有3种事务处理方案:setAutoCommit(boolean)自动提交;commit()提交;rollback回滚。
XML:
XML文档定义有几种形式?有什么本质区别?解析XML文档有哪几种方式?
有DTD和schema两种方式。本质区别在于schema本事就是一份格式良好的XML文档,而且加入了类型指定,名称空间等内容,更加适合于XML文档的定义和规范。解析XML文档有多种方式,如DOM,SAX,JDOM等。
XML在项目中的运用有哪些?
临时性的数据存储及传递:如AJAX技术从后台将数据传递到前台时,能够写成XML文档的格式进行传递,并在前台进行解析。
配置文件:如数据源的配置,框架的配置,JavaWeb应用的信息配置等。
Java Web:
Servlet生命周期,说出Servlet和CGI的区别
生命周期:new>init>service>destory。
CGI对每一个请求都产生新的进程,而servlet是经过多线程的方式服务于每一个请求。CGI效率较低。
forward和redirect的区别
forward是服务器请求资源,服务器直接访问目标地址URL,把URL的响应内容读取过来,再发送给浏览器,浏览器没法得知服务器从哪里得到来的内容,因此地址栏中不变。redirect是服务端根据逻辑,发送一个状态码告诉浏览器从新去请求一个地址。forward以后request不变,而redirect以后request已经改变。
动态include和静态include区别
动态include用jsp:include动做实现,它老是会检查所含文件中的变化,适合用于包含动态页面,而且能够带参数。静态include不会检查所含文件的变化,适合包含静态页面。
说出数据库链接池的工做机制
J2EE服务器启动时会创建必定数量的链接,并一直维持很多于此数目的链接,链接有两个状态,繁忙和空闲。按客户访问量进行增长和减小链接数量。在全部链接都处于繁忙状态时,链接池将增长链接数,当大部分链接都属于空闲状态时,链接池将自动清理一些链接。
JSP的内置对象及方法
request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,而且提供了几个用于获取cookie, header, 和session数据的有用的方法。
response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。
out对象是javax.servlet.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各类范围的名字空间、servlet相关的对象的API,而且包装了通用的servlet相关功能的方法。
session表示一个请求的javax.servlet.http.HttpSession对象。Session能够存贮用户的状态信息。
applicaton 表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。
config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page表示从该页面产生的一个servlet实例。
exception记录了页面中的异常信息,此对象只可在page指令属性isErrorPage=”true”的页面中才能访问到。
JSP经常使用指令
page、taglib、include
什么状况下调用goGet()和doPost()
servlet在接收到用户请求时,调用service方法,此方法根据请求的类型(get或post)调用相应的方法。
JSP和Sevlet的相同和不一样,有什么联系?
JSP是Servlet技术的演变和扩展,JSP更强调和适合于视图层,Servlet则更适合于控制层。
MVC的各个部分都有哪些技术来实现?
Java的WEB应用中,M层由JavaBean来实现,V层由JSP或HTML来实现,C层由Servlet来实现。
JSP的6个基本动做是什么?做用是什么?
include动做用于动态包含一个文件。useBean动做用于在指定范围内获取一个指定名称及类型的对象。setProperty动做用于对指定的对象进行赋值操做。getProperty动做用于对指定对象的指定属性进行取值。forward动做用于把请求转发到另外一个页面。plugin动做用于为java插件生成object或embed标记。
get和post的区别
get将表单数据按照variable=value的形式,添加到action所指向的URL后面,而且二者使用“?”链接,各变量之间使用“&”链接;post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指URL。get不安全;post相对较安全。get受URL长度限制,传输的数据量小,post则能够传输较大数据。get限制form表单的数据集必须为ASCII字符,而post支持整个ISO10646个字符集。
Servlet2.2以上Web Application的基本目录结构
webapps---|
|---Application---|
|----JSP页面
|----WEB-INF--|
|----classes
|----lib
|----web.xml
JSP的四种范围
page是表明与一个页面相关的对象和属性。
request是表明与web客户机发出的一个请求相关的对西哪一个和属性,一个请求可能跨越多个页面。
session是表明与用于某个web客户机的一个用户体验相关的对象和属性。一个web会话能够跨越多个客户请求。
application表明与整个web应用程序相关的对象和属性。跨越整个web应用程序,包括多个页面,请求和会话。
过滤器的用途有哪些?
过滤器主要作拦截做用,因此能够作不少事情,好比过滤一些不合法的词汇、验证是否正常登录、字符编码的转换。
过滤器的用法?
实现Filter接口,覆盖init(FilterConfig config)、doFilter(ServletRequest request,ServletResponse response,FilterChain chain)、destroy()方法。
JSP中如何使用JavaBeans?
JSP有对于JavaBean操做的标准动做,useBean、setProperty、getProperty
JSP和Servlet中的请求转发分别如何来实现?
JSP中可使用forward动做来实现。同时JSP和Servlet均可以使用request.getRequestDispatcher(path).forward(req,res);来进行请求转发。
web.xml的做用
用于配置web应用的信息,如servlet,filter等。
JavaEE:Base:
J2EE是技术仍是平台仍是框架
J2EE自己是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
请解释一下如下J2EE名词:WEB容器、EJB容器、JNDI、JMS、JTA、JAF、RMI/IIOP
WEB容器:给处于其中的应用程序组件(JSP、Servlet)提供一个环境,使JSP、Servlet直接与容器中的环境变量接口交互,没必要关注其它系统问题。该容器提供的接口严格遵照J2EE规范中的WebApplication标准。遵照以上标准的WEB服务器就叫作J2EE的WEB容器。
EJB容器:EnterpriseJavaBean容器。更具备行业领域特点。提供给运行在其中的组件EJB各类管理功能。只要知足J2EE规范的EJB放入该容器,立刻就会被容器进行高效率的管理。而且能够经过现成的接口来得到系统级别的服务。
JNDI:(Java Naming & Directory Interface)Java命名目录服务。主要提供的功能是:提供一个目录系统,让其它各地的应用程序在某上面留下本身的索引,从而知足快速查找和定位分布式应用程序的功能。
JMS:(Java Message Service)Java消息服务。主要实现各个应用程序之间的通信。包括点对点和广播。
JTA:(Java Transaction API)Java事务服务。提供各类分布式事务服务。应用程序只需调用其提供的接口便可。
JAF:(Java Action Framework)Java安全认证框架。提供一些安全控制方面的框架。让开发者经过各类部署和自定义实现本身的个性安全控制策略。
RMI/IIOP(Remote Method Invocation/internet对象请求中介协议)他们主要用于经过远程调用服务。
Struts:
什么是STRUTS?
struts本意为结构,在J2EE中为一个WEB框架,采用了JSP/Servlet/JavaBean技术。能够开发出基于MVC模式的应用架构。
STRUTS的入口类?
ActionServlet,全部对Action的请求都经由该类转发处理。
Hibernate:
什么是ORM?
Object Relational Mapping。是一种为了解决面向对象与面向关系数据库存在的互不匹配的现象的技术。经过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。
Hibernate比JDBC的优势?
解决了对象模型与关系模型之间的阻抗不匹配问题。Hibernate灵活且运用简单,大量使用配置文件和映射文件来解决类与表或视图的对应关系,便于维护。完善的事务处理和利用缓存以性能。
Hibernate有哪5个核心接口
Configuration:配置Hibernate,根据其启动hibernate,建立SessionFaction对象。
SessionFactory:初始化Hibernate,充当数据存储源的代理,建立session对象,SessionFactiory是线程安全的,同一个实例能够被应用的多个线程共享。
Session:负责保存、更新、删除、加载和查询对象,线程不安全,须要避免多个线程共享同一个session。
Transaction:管理事务。
Query和Criteria:执行数据库的查询。
关于Hibernate,配置文件呈现一对多,多对多的标签是什么?Hibernate的二级缓存是什么?Hibernate是如何处理事务的?
一对多的标签是<one-to-many>,多对多的标签是<many-to-many>。SessionFactory的缓存是Hibernate的二级缓存。Hibernate的事务其实是底层的JDBC Transaction的封装或者是JTA Transaction的封装。默认状况下使用JDBC Transaction。
Hibernate映射文件中属性与表中列的关系,如属性String对应的表中的类型为?
字符型,如char,varchar等或大文本text。
Hibernate分页实现代码
Query query = session.createQuery(“from Emp”);
query.setFirstResult(first);
query.setMaxResults(pageSize);
Collection emps = query.list();
Session中的load和get的区别
当给定的对象标识不存在时,get返回null,而load则抛出一个异常。
Spring:
简述Spring框架。
Spring框架是一个分层架构,由七个定义良好的模块组成,Spring模块构建在核心容器之上,核心容器定义了建立、配置和管理bean的方式。组成Spring框架的每一个模块均可以单独存在,或者与其余一个或多个模块联合实现。
Spring Core、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web、Spring MVC
EJB:
EJB是基于哪些技术实现的,SessionBean和EntityBean的区别
EJB包括SessionBean,EntityBean,MessageDrivenBean,基于JNDI、RMI、JTA等技术实现。SessionBean在J2EE应用程序中被用来完成一些服务器端的业务操做,例如访问数据库,调用其余EJB组件。EntityBean用来临时性存储数据。
EJB与JavaBean的区别
JavaBean是可复用的组件,对JavaBean并无严格的规范,任何一个java类均可以是一个Bean,但因为一般JavaBean是被容器所建立,因此JavaBean应具备一个无参的构造器,并实现Serializable接口用于持久化,JavaBean是不能被跨进程访问的。EJB是基于java的RMI技术,因此EJB能够被远程访问(跨进程,跨计算机)。但EJB必须被部署在支持EJB的容器中(如Webspere,WebLogic等),EJB客户不直接访问EJB组件,而是经过容器访问。
说明EJB中的SessionBean和EntityBean的生命周期,以及如何进行事务管理
SessionBean:StatelessSessionBean的生命周期由容器决定,当客户机发出请求要创建一个Bean的实例时,EJB容器不必定要建立一个新的Bean的实例给客户机调用,而是找一个现有的实例提供给客户机。客户机第一次调用一个StatefulSessionBean时,容器会马上在服务器中建立一个新的Bean实例,并关联到客户机上,之后此客户机调用StatefulSessionBean的方法时容器会把调用分派到与此客户机相关联的Bean实例。
EntityBean:EntityBean能存活相对较长的时间,而且状态是持续的。只要数据库中的数据存在,EntityBean就一直存活。而不按照应用程序或者服务进程来结束生命。EntityBean生命周期可以被容器或Bean本身管理。
EJB经过如下技术管理事务:OTS(Object Transaction Service),JTS(Java Transaction Service),JTA(Java Transaction API)
EJB的角色和三个对象
一个完整的基于EJB的分布式计算结构由六个角色组成,每一个角色所作的工做必须遵循Sun公司提供的EJB规范,以保证彼此之间的兼容性。这六个角色分别是EJB组件开发者(Enterprise Bean Provider)、应用组合者(Application Assembler)、部署者(Deployer)、EJB服务提供者(EJB ServerProvider)、EJB容器提供者(EJB Container Provider)、系统管理员(System Administrator)。三个对象是Remote(Local)接口、Home(LocalHome)接口、Bean类。
EJB容器提供的服务
主要提供生命周期管理、代码产生、持续性管理、安全、事务管理、锁和并发管理等服务。
EJB禁止哪些操做
1.不能操做线程和线程API(线程API指非线程对象的方法如notify,wait等)。
2.不能操做awt。
3.不能实现服务器功能。
4.不能对静态属性存取。
5.不能使用IO操做直接存取文件系统。
6.不能加载本地库。
7.不能将this做为变量和返回。
8.不能循环调用。
remote接口和home接口主要做用
remote接口定义了业务方法,用于EJB客户端调用业务方法。home接口是EJB工厂用于建立和移除查找EJB实例。
bean实例的生命周期
对于Stateless Session Bean、Entity Bean、Message Driven Bean通常存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,一般包含建立实例,设置上下文、建立EJBObject(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create以后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则经过激活和去激活机制保持Bean的状态并限制内存中实例数量。
EJB的激活机制
以Stateful Session Bean为例:其Cache大小决定了内存中能够同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,若是对应EJBObject发现本身没有绑定对应的Bean实例则从其去激活Bean存储中(经过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的EJBActive和EJBPassivate方法。
EJB的几种类型
Session Bean,Entity Bean和Message Driven Bean。Session Bean又可分为Stateless Session Bean和Stateful Session Bean。Entity Bean又可分为Bean管理持续性(BMP)和容器管理的持续性(CMP)。
客服端调用EJB对象的几个基本步骤
设置JNDI服务工厂以及JNDI服务地址系统属性,查找Home接口,从Home接口调用create方法建立Remote接口,经过Remote接口调用其业务方法。
RDBMS&SQL:
3张表student学生表(学号,姓名,性别,年龄,组织部门)、course课程表(编号,课程名称)、sc选课表(学号,课程编号,成绩)。
写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名。
写一个SQL语句,查询“周星驰”同窗选修的课程名称。
写一个SQL语句,查询选修了5门课程的学生学号和姓名。
写一个SQL语句,查询选修了全部课程的学生学号和姓名。
(1)SELECT sno,sname FROM student stu WHERE stu.sno IN (SELECT sc.sno FROM sc WHERE sc.cno = (SELECT course.cno FROM course WHERE cname LIKE ‘计算机原理’));
(2)SELECT cname FROM course cou WHERE cou.cno IN (SELECT sc.cno FROM sc WHERE sc.sno IN (SELECT student.sno FROM student WHERE sname like ‘周星驰’));
(3)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=5);
(4)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=(SELECT count(*) FROM course));
有一张表EMP,表中字段为(empno,ename,mgr,age),写出语句查询全部雇员年龄大于其领导的人员名单。
SELECT worker.ename FROM emp worker WHERE worker.age>(SELECT manager.age FROM emp manager WHERE manager.empno = worker.mgr);
有两张表分别表明的省和市的信息,其中省信息表中字段为(stateno,statename),市信息表中字段为(cityno,cityname,stateno),省信息表中有广东,江苏,辽宁,黑龙江,市信息表中有上海,广州,北京,南京。如今须要查询出全部市信息及相关省信息,请写出查询语句。
SELECT cityname,cityno,s.stateno,s.statename FROM city c,state s WHERE c.stateno = s.stateno(+);
Base Web:Javascript
一个动态的下拉列表,如何在每一次点击后显示出全部被选中的值?
<script type="text/javascript">
function choose(sel){
alert(sel.options[sel.selectedIndex].innerHTML);
}
</script>
<select onchange=”choose(this)”>
<option>1</option>
<option>2</option>
<option>3</option>
</select>
封装一个类,包含属性name和sex,在设置其值后再取出
function myObject(){
var innerClass = new Object();
innerClass.name='undefined';
innerClass.sex='undefined';
innerClass.setName = function (n){
name = n;
}
innerClass.setSex = function (s){
sex = s;
}
innerClass.getName = function (){
return name;
}
innerClass.getSex = function (){
return sex;
}
return innerClass;
}