J2EE⾯试题集锦(附答案)
J2EE⾯试题集锦(附答案)
⼀、基础问答
  1.下⾯哪些类可以被继承?
   java.lang.Thread (T)
   java.lang.Number (T)
   java.lang.Double (F)
   java.lang.Math  (F)
   java.lang.Void  (F)
java.lang.Class  (F)
   java.lang.ClassLoader (T)
  2.抽象类和接⼝的区别
  (1)接⼝可以被多重implements,抽象类只能被单⼀extends
  (2)接⼝只有定义,抽象类可以有定义和实现
  (3)接⼝的字段定义默认为:public static final, 抽象类字段默认是"friendly"(本包可见)
  3.Hashtable的原理,并说出HashMap与Hashtable的区别
  HashTable的原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过⼀定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址.
HashMap 与Hashtable很相似,但HashMap 是⾮同步(unsynchronizded)和可以以null为关键码的.
  4.forward和redirect的区别
  forward: servlet的内部转移
  redirect: 重定向,有2次request,第2次request将丢失第⼀次的attributs/parameters等
  5.什么是Web容器?
  实现J2EE规范中web协议的应⽤.该协议定义了web程序的运⾏时环境,包括:并发性,安全性,⽣命周期管理等等.
  6.解释下⾯关于J2EE的名词
  (1)JNDI:Java Naming & Directory Interface,JAVA命名⽬录服务.主要提供的功能是:提供⼀个⽬录系统,让其它各地的应⽤程序在其上⾯留下⾃⼰的索引,从⽽满⾜快速查和定位分布式应⽤程序的功能.
  (2)JMS:Java Message Service,JAVA消息服务.主要实现各个应⽤程序之间的通讯.包括点对点和⼴播.
  (3)JTA:Java Transaction API,JAVA事务服务.提供各种分布式事务服务.应⽤程序只需调⽤其提供的接⼝即可.
  (4)JAF: Java Action FrameWork,JAVA安全认证框架.提供⼀些安全控制⽅⾯的框架.让开发者通过各种部署和⾃定义实现⾃⼰的个性安全控制策略.
  (5)RMI:Remote Method Interface,远程⽅法调⽤
  7.EJB是基于哪些技术实现的?并说 出SessionBean和EntityBean的区别,StatefulBean和StatelessBean的区别.
  EJB包括Session Bean、Entity Bean、Message Driven Bean,基于JNDI、RMI、JAT等技术实现.
  SessionBean在J2EE应⽤程序中被⽤来完成⼀些服务器端的业务操作,例如访问数据库、调⽤其他EJB组件.EntityBean被⽤来代表应⽤系统中⽤到的数据.对于客户机,SessionBean是⼀种⾮持久性对象,它实现某些在服务器上运⾏的业务逻;EntityBean是⼀种持久性对象,它代表⼀个存储在持久性存储器中的实体的对象视图,或是⼀个由现有企业应⽤程序实现的实体.
  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean .这两种的 Session Bean都可以将系统逻辑放在 method之中执⾏,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,⼀个使⽤者会有⼀个相对应的 Stateful Session Bean 的实体.Stateless Session Bean 虽然也是逻辑组件,但是他却不负责记录使⽤者状态,也就是说当使⽤者呼叫 Stateless Session Bean 的时候,EJB Container 并不会寻特定的 Stateless Session Bean 的实体来执⾏这个 method.换⾔之,很可能数个使⽤者在执⾏某个 Stateless Session Bean 的 methods 时,会是同⼀个 Bean 的 Instance 在执⾏.从内存⽅⾯来看, Stateful Session Bean 与 Stateless Session Bean ⽐较, Stateful Session Bean 会消耗 J2EE Server 较多的内存,然⽽ Stateful Session Bean 的优势却在于他可以维持使⽤者的状态.
java面试题及答案2020  8.XML的解析⽅法
  Sax,DOM,JDOM
  9.什么是Web Service?
  Web Service就是为了使原来各孤⽴的站点之间的信息能够相互通信、共享⽽提出的⼀种接⼝。
Web Service所使⽤的是Internet上统⼀、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web
Service可以在任何⽀持这些标准的环境(Windows,Linux)中使⽤。
  注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是⼀个⽤于分散和分布式环境下⽹络信息交换的基于XML的通讯协议。在此协议下,软件组件或应⽤程序能够通过标准的HTTP协议进⾏通讯。它的设计⽬标就是简单性和扩展性,这有助于⼤量异构程序和平台之间的互操作性,从⽽使存在的应⽤程序能够被⼴泛的⽤户访问。
  (1).跨平台。
  (2).SOAP协议是基于XML和HTTP这些业界的标准的,得到了所有的重要公司的⽀持。
  (3).由于使⽤了SOAP,数据是以ASCII⽂本的⽅式⽽⾮⼆进制传输,调试很⽅便;并且由于这样,它的数据容易通过防⽕墙,不需要防⽕墙为了程序⽽单独开⼀个“漏洞”。
  (4).此外,WebService实现的技术难度要⽐CORBA和DCOM⼩得多。
  (5).要实现B2B集成,EDI⽐较完善与⽐较复杂;⽽⽤WebService则可以低成本的实现,⼩公司也可以⽤上。
  (6).在C/S的程序中,WebService可以实现⽹页⽆整体刷新的与服务器打交道并取数。
  缺点:
  (1).WebService使⽤了XML对数据封装,会造成⼤量的数据要在⽹络中传输。
  (2).WebService规范没有规定任何与实现相关的细节,包括对象模型、编程语⾔,这⼀点,它不如CORBA。
  10.多线程有⼏种实现⽅法,都是什么?同步有⼏种实现⽅法,都是什么?
  答:多线程有两种实现⽅法,分别是继承Thread类与实现Runnable接⼝
  同步的实现⽅⾯有两种,分别是synchronized,wait与notify
  11.JSP中动态INCLUDE与静态INCLUDE的区别?
  动态INCLUDE⽤jsp:include动作实现
<jsp:include page="included.jsp" flush="true"/>
  它总是会检查所含⽂件中的变化,适合⽤于包含动态页⾯,并且可以带参数
  静态INCLUDE⽤include伪码实现,定不会检查所含⽂件的变化,适⽤于包含静态页⾯
  <%@ include file="included.htm" %>
⼆、Java编程与程序运⾏结果
  1.Java编程,打印昨天的当前时刻
public class YesterdayCurrent{
public void main(String[] args){
Calendar cal = Instance();
cal.add(Calendar.DATE, -1);
System.out.Time());
}
}
  2.⽂件读写,实现⼀个计数器
public int getNum(){
int i = -1;
try{
String stri="";
BufferedReader in = new BufferedReader(new FileReader(f));
while((adLine())!=null){
i = Integer.im());
}
in.close();
}catch(Exception e){
e.printStackTrace();
}
return i;
}
public void setNum(){
int i = getNum();
i++;
try{
PrintWriter out=new PrintWriter(new BufferedWriter(new
FileWriter(f,false)));
out.write(String.valueOf(i));  //可能是编码的原因,如果直接写⼊int的话,将出现java编码和windows编码的混乱,因此此处写⼊的是String
out.close() ;
}catch(Exception e){
e.printStackTrace();
}
}
  3. 指出下⾯程序的运⾏结果:
class A{
System.out.print("1");
}
public A(){
System.out.print("2");
}
}
class B extends A{
static{
System.out.print("a");
}
public B(){
System.out.print("b");
}
}
public class Hello{
public static void main(String[] ars){
A ab = new B(); //执⾏到此处,结果: 1a2b
ab = new B(); //执⾏到此处,结果: 1a2bab
}
}
  注:类的static 代码段,可以看作是类⾸次加载(被虚拟机加载)执⾏的代码,⽽对于类的加载,⾸先要执⾏其基类的构造,再执⾏其本⾝的构造
  4.写⼀个Singleton模式的例⼦
public class Singleton{
private static Singleton single = new Singleton();
private Singleton(){}
public Singleton getInstance(){
return single;
}
}
三、数据库
  1.删除表的重复记录
  如果记录完全相同才算重复记录,那么:  (sql server2000下测试通过)
select distinct * into #tmpp from tid
delete from tid
insert into tid select * from #tmpp
drop table #tmpp
  如果有id主键(数字,⾃增1的那种),那么:(sql server2000下测试通过)
delete from tableA where id not in
(select id = min(id) from tableA group by name)
  2.delete from tablea & truncate table tablea的区别
  truncate 语句执⾏速度快,占资源少,并且只记录页删除的⽇志;
  delete 对每条记录的删除均需要记录⽇志
JAVA编程题
1.现在输⼊n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另⼀页⾯显⽰按什么排序,结果为,提供reset
显⽰被隐藏内容
import java.util.Arrays;
import java.util.StringTokenizer;
public class bycomma {
public static String[] splitStringByComma(String source) {
if (source == null || im().equals(""))
return null;
StringTokenizer commaToker = new StringTokenizer(source, ",");  String[] result = new untTokens()];
int i = 0;
while (commaToker.hasMoreTokens()) {
result[i] = Token();
i++;
}
return result;
}
public static void main(String args[]){
String[] s = splitStringByComma("5,8,7,4,3,9,1");
int[] ii = new int[s.length];
for(int i = 0;i<s.length;i++){
ii[i] =Integer.parseInt(s[i]);
}
Arrays.sort(ii);
//asc
for(int i=0;i<s.length;i++){
System.out.println(ii[i]);
}
//desc
for(int i=(s.length-1);i>=0;i--){
System.out.println(ii[i]);
}
}
}
控制台打印
1
3
4
5
7
8
9
9
8
7
5
4
3
1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。