java面试笔试题大汇总 ~很全面(2)

来源:互联网 发布:网络教室控制软件 编辑:程序博客网 时间:2024/04/19 05:32
 
面试要了解的问题
 
简单介绍一下您的情况?
您怎样描述自己?
您为何要选择我公司?
您为了这次面试做了哪些准备工作?
我们为什么要雇佣您?
为什么您要应聘这个职位?
您期望的薪金待遇是多少?
 
什么对您来说更加重要 — 工作还是金钱?
您期望从此职业中获得什么 — 金钱、声望还是事业成就感?
如果其他公司为您提供了更高的薪水,您会离开我公司吗?
您生活的最终目标是什么?
 
您怎样做好准备来实现这些目标?
您为何选择这类职业?
除了计算机之外,您还有什么其它兴趣?
您有哪些强项?
您的弱点有哪些?
您认为您能在我们公司发挥所长吗?
您是否全面了解您应聘的职位?
以前您是否经常变换工作地点?
您为何要离开以前的工作单位?
您上一个工作的职责是什么?
您上一个工作的薪水是多少?
为什么计算机突然之间变得如此重要?
为什么您感觉需要学习计算机?
您认为计算机会使人们变得无用吗?
计算机在未来的某个时候会发展到能够思考吗?
 
 
 

专业知识问答:
1.       如何实现线程?
2.       JSP应用中,重定向有些什么方法?
3.       JSP的对象Request中的getparameter方法与session对象中的getAttribute方法的区别?(两对象应用之间的区别?)
4.       如何加入Session对象?
5.       Java开发包有些什么开发工具?
6.       如何实现Jsp页面与数据库的连接(jdbc-odbc桥)?实现连接时要用到哪些类?
7.       如何构造List对象,用什么方法插入和取得List项目中数据项?
8.       Session的生命期多长?(参阅Session对象的一些属性设置)
9.       简述你所熟悉的一些web server.
10.   如果要使一个程序在网络上传接,要实现什么接口?
11.   JDBC中如何控制一个事务?
12.   如何实现JSP程序参数之间的传递?
 
 
 
主要知识点:(请做答)
1●          Java的基本数据类型
2●          Java语言的优点
3●          字符及字符串和其他数据类型之间的转换
4●          对象和类的概念,类的继承、重载、多态
5●          类的访问控制及其区别
6●          接口和抽象类的概念及区别
7●          集合的概念及几种类型,基类及接口
8●          简单的数据的存储过程
9●          JDBC创建的几个步骤
10●          Statement     PrepareStatement    CallableStatement区别
11●          Socket网络连接<一般都是服务端>
12●          I/O接口的几种类型
13●          JSP与Servlet的区别
14●          JSP的内置对象及作用域
15●          JSP和Servlet的页面转发和控制的区别
16●          Servlet的生命周期
17●          Web框架  
 
1. 编程语言基本概念(编程风格和语言概念是考察的重点内容)。
2. 数据结构(这是计算机编程的基础,肯定是必考的,但是在一个小时内不可能会考复杂的算法,主要是考察您的解决问题的思路)。
3. 网络(最基本的要掌握TCP/IP,包括协议原理和编程)
4. 操作系统(考一些基本的概念如进程调度,内存管理等)
 

                               华为面试题 

 JAVA方面
1 面向对象的特征有哪些方面  
2 String是最基本的数据类型吗?
3 int Integer 有什么区别
4 String StringBuffer的区别
5运行时异常与一般异常有何异同?
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。
6 说出一些常用的类,包,接口,请各举5
7 说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayListVector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
8设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序。
以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。
public class ThreadTest1{
       private int j;
       public static void main(String args[]){
              ThreadTest1 tt=new ThreadTest1();
              Inc inc=tt.new Inc();
              Dec dec=tt.new Dec();
              for(int i=0;i<2;i++){
                     Thread t=new Thread(inc);
                     t.start();
                     t=new Thread(dec);
                     t.start();
              }
       }
       private synchronized void inc(){
              j++;
              System.out.println(Thread.currentThread().getName()+"-inc:"+j);
       }
       private synchronized void dec(){
              j--;
              System.out.println(Thread.currentThread().getName()+"-dec:"+j);
       }
      
       class Inc implements Runnable{
              public void run(){
                     for(int i=0;i<100;i++){
                            inc();
                     }
              }
       }
       class Dec implements Runnable{
              public void run(){
                     for(int i=0;i<100;i++){
                            dec();
                     }
              }
       }
}
9.JSP的内置对象及方法。
request request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, session数据的有用的方法。

response response
表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)


out out
对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。


pageContext pageContext
表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。


session session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状态信息


application applicaton
表示一个javax.servle.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息


config config
表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。


page page
表示从该页面产生的一个servlet实例
10.socket通讯写出客户端和服务器端的通讯,要求客户发送数据后能够回显相同的数据。
参见课程中socket通讯例子。
11说出Servlet的生命周期,并说出ServletCGI的区别。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGetdoPost)等,当服务器决定将实例销毁的时候调用其destroy方法。
cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet
12.EJB是基于哪些技术实现的?并说出SessionBeanEntityBean的区别,StatefulBeanStatelessBean的区别。
 
13EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
 
14.说出数据连接池的工作机制是什么?
 
15同步和异步有和异同,在什么情况下分别使用他们?举例说明。
 
16应用服务器有那些?
 
17你所知道的集合类都有哪些?主要方法?
 
18给你一个:驱动程序A,数据源名称为B,用户名称为C,密码为D,数据库表为T,请用JDBC检索出表T的所有数据。
 
19.说出在JSP页面里是怎么分页的?
页面需要保存以下参数:
总行数:根据sql语句得到总行数
每页显示行数:设定值
当前页数:请求参数
页面根据当前页数和每页行数计算出当前页第一行行数,定位结果集到此行,对结果集取出每页显示行数的行即可。
 
 
数据库方面:
 
1.        存储过程和函数的区别
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。
2.        事务是什么?
事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:
原子性
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。
一致性
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。
隔离性
由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。
持久性
事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。
 
3.        游标的作用?如何知道游标已经到了最后?
游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。
4.        触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。
事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。
语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。
 
                                         深圳某公司
 
姓名:
年龄:
住址:
手机:
Java试题(时间40分钟)
:答题请用蓝色字体
1判断题(请简单说明分析依据)
a)       Java的接口方法必须声明成public
b)      如果定义int[]nValues={1,2,3,4};那么nValues为整数类型.
c)      Java可以在方法内定义内部类.
d)      Protected修饰的类成员只能被其子类访问.
e)       如果定义:HashMap map=new HashMap();那么以后就无法保证map内的数据是线程安全.说明理由.
f)       对象Locale.CHINAt Locale.SIMPLIFIED_CHINESE是一样的.
2请列出objBtn_actionPerformed执行时的各语句执行顺序
void objBtn_actionPerformed(ActionEvent e)
{
Child child=new Child();
}
class Base
{
1         int i=0;
2         Other baseOther=new Other(“init Base Other”);
3         private static int x=1;
public Base()
{
4         System.out.println(“Init Base”);
}
}
 
class Child extends Base
{
5         int a=0;
6         Other childOther=new Other(“init Child Other”);
7         private static int y=2;
 
public Child()
{
8         System.out.println(“init Child”);
}
}
 
3、请列出Test执行时的输出结果
class A
{
       public void printValue()
       {
              System.out.println(“A”);
       }
}
class S extends A
{
       public void printValue()
       {
              System.out.println(“S”);
       }
}
public class Test
{
       public static void main(String[] args)
       {
              S s=new S();
              s.printValue();
              A as=(A)s;
              As.printValue();
       }
}
4、任选一题
(1)试分析一下以下函数的编码中,存在的性能问题有哪些?可以进行什么样的优化?
class A
{
       B[] bs=new B[20];
       public string toString()
       {
/             StringBuffer buf=new StringBuffer(“xml”);
              for(int I=0;I<20;I++)
                     buf.append(bs[i].toString());
              buf.append(“OVER”);
              return buf.toString();
       }
}
class B
{
       String x=”ValueX”;
       String y=”ValueY”;
       public String toString()
{
              StringBuffer buf=new StringBuffer();
              buf.append(x);
              buf.append(y);
              return buf.toString();
}
}
(2)Swing方面的性能问题
closeBtn srcBtn是两个Jbutton类
DndDlg_closeBtn_actionAdapter DndDlg_srcBtn_actionAdapter分别为两个button的事件监听器。
那么下面的代码,有什么性能问题。
DndDlg_closeBtn_actionAdapter closeAdapter=new DndDlg_closeBtn_actionAdapter(this);
DndDlg_srcBtn_actionAdapter srcAdapter=new DndDlg_srcBtn_actionAdapter(this);
Void jbInit() throws Exception
{
       closeBtn.setText(“关闭”);
       closeBtn.addActionListener(closeAdapter);
       srcBtn.addActionListener(srcAdapter);
}
void closeBtn_acitonPerformed(ActionEvent e)
{
       dispose();
}
5、Jsp页面向Servlet短发送请求,带有中文参数,那么,在Servlet端应该如何处理?
6、Servlet内重定向方式又有哪些?jsp页面重定向又那些方式?有什么区别?
7、JDK内部采用什么编码?举例说明。
8、Java2类库:Java类库有没有双向链表?有没有堆栈和队列类?有的话?写出相应的累。
9、描述一下HashMa;p、TreeMap的区别,例如:数据存储,特性,性能等。
10、下面的代码有什么性能问题?
前提:
T1位数据库表格,只有一个可以为null的字符串字段,长度为100;
Connection conn 已经获得连接;
ArrayList listName 有500个不同的字符串值,且每个字符串的长度不超过100;
Try{
              PreparedStatement ps = conn.PreparedStatement(“insert into T1(name) value (?)”);
              For (int I = 0 ;I<list.size();I++)
{
       ps.setString(1,(String)list.get(i));
    ps.executeUpdate();
}
ps.close();
conn.close();
   }catch(Exception ex){}
答:
11、你常用的是JDBC驱动的那一种?与其他JDBC驱动相比较,有什么优点?
12、JDK1.4的java.nio包主要功能是?
13、编写一个函数,把一个char(1 char=16bits) 分解成连个byte(1byte=8bits)。
                                                                  深圳某公司(二)
 
姓名
 
E-mail
 
年龄
 
联系电话
 
:答题请用蓝色宋体
Java试题()(时间40分钟)
一、   选择:
1. 欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的?
A.ArrayList myList=new object();      B.List myList=new ArrayList();
C.ArrayList myList=new List();        D.List myList=new List();
2. 指出正确的表达式。
A.byte b=128;                      B.Boolean b=null;
C.long=0xfffL                      D.double=0.9239d
3. 指出下列程序运行的结果。
public class Example{
     String str=new String (“good”);
     char[]ch={‘a’,’b’,’c’};
     public static void main(String args[]) {
          Example ex=new example();
          ex.change(ex.str,ex.ch);
          System.out.print(ex.str=” and ”);
          System.out.print(ex.ch);
}
public void change(String str,char ch[]) {
     str=”test ok”;
     ch[0]=’g’;
}
}
A.good and abc   B.good and gbc
C.test ok and abc D.test ok ang gbc
4. 运行下列程序,会产生什么结果?
public class X extends Thread implements Runable{
     public void run() {
        System.out.println(“this is run()”);
     }
     public static void main(String args[])
     {
      Thread t=new Thread (new X());
      t.start();
     }
}
A.第一行会产生编译错误 B.第六行会产生编译错误
C.第六行会产运行错误    D.程序会运行和启动
5. 哪个关键字可以对对象加互斥锁?
A.transient B.synchronized
C.serialize D.static
6. 下列代码哪一行会出错?
1)        public void modify() {
2)        int I,j,k;
3)        I=100;
4)        while (I>0) {
5)        j=I*2;
6)        System.out.println(“ The value of j is ”+j);
7)        k=k+1;
8)        I--;
9)        }
10)     }
A.line 4 B.line 6
C.line 7 D.line 8
二、   多面选择
1. public class parent {
        int change()   {}
}
class Child extends Parent{}
哪些方法可以加入类Child中?
A.public int change() {}   B.int chang (int i) {}
C.private int change () {} D.abstract int chang () {}
2. String s = “hello”;
String t = “hello”;
char c[] ={‘h’,’e’,’l’,’l’,’o’};
下列哪些表达式返回true?
A.s.equals(t); B.t.equals(c);
C.s==t;       D.t.equals(new String (“hello”));
3. 给出下面代码段:
1. switch(m)
2. { case 0: System.out.println(“case 0”);
3.   case1: System.out.println(“case 1”); break;
4.   case2:
5.   default:System.out.println(“default”);
6. }
下面m的哪些值将引起”default”的输出?
A.0 B.1
C.2 D.3
4.对于下列代码:
public class Sample {
      long length;
      public Sample (long 1) {length = 1;}
      public static void main(String arg[]) {
           Sample s1,s2,s3;
           s1 = new Sample(21L);
           s2 = new Sample(21L);
           s3 = s2;
           long m = 21L;
      }
}
下列哪些表达式返回值为‘true’?
A.s1==s2;   B. s2==s3;
C.m==s1;   D.s1.equals(m)
5.给定下面的代码片段:
public void Test() {
 try {
      method();
      System.out.println(“Hello World”);
     }
 catch (ArrayIndexOutOfBoundsException e)
   {
     System.out.println(“Exception1”);
   }
 finally {
     System.out.println(“Thank you!”);
   }
}
如果函数method正常运行并返回,会显示下面的哪些信息?
A. Hello World     B.Exception
C.Exception1      D.Thank you!
6.关于session的论述正确的有:
A.一个session可以对应数个用户
B.一个session只能对应一个用户
C.可以手动关闭一个session
D.session如果不手动关闭,会一直存在Server中
三、填空题:
1.请描述一下Test.java编译后,在控制台执行命令“java Test”后的输出结果:____________________________
Test.java内容如下:
class A
{
   public A()
   {
     System.out.print(“A”);
}
}
class B extends A
{
   public B()
   {
       System.out.print(“B”);
       Aa=new A();
}
}
public class Test
{
 public Test()
{
   System.out.print(“Test”);
}
public static void main(String[] a)
{
       Bb=new B();
}
}
2.下列代码不能编译的原因是:_____________________________________
Class A {
   Private int x;
   Public static void main(String args[])
   {
       new B();
}
class B{
   B() {System.out.println(x);}
}
}
4. 下面程序建立一个服务器通过监听8080端口向客户端输出”Welcome!”字符串,请补充缺少的程序片断:
public class WelcomeServer
 {
public static void main(String[] a) throws I0exception
{
    ____1_____;
 System.out.println(“WelcomeServer started!”);
 while(true)
   {
      Socket client = ____2____;
      System.out.println(“A client come!”);
      try
       {
         PrintWriter writer = new PrintWriter(
            new BufferedWriter(____3____(____4____)));
          writer.println(“Welcome!”);
       }
       catch (I0Exception ioe2)
       {
           System.out.println(“Something error!”);
       }
     }
 }
}
 
四、简答题:
JSP中的最常用的对象有哪些?简述他们的生命周期和作用域。
 
 
 
 
 
 
 
Java试题()答案(时间40分钟)
一、选择
1.  
2.  
3.  
4.  
5.  
6.  
二、多选
1.  
2.  
3.  
4.  
5.  
6.  
三、填空
1.  
2.  
3.
1)  
2)  
3)  
4)  
5)  
                                 深圳某公司(三)
 
姓名:
年龄:
住址:
手机:
Java试题()
1、概述struts,以及struts如何实现MVC架构的?
答:struts framework是一种基于java的技术,Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及“编写一次、到处运行”的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
Struts的处理流程:
l         控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModulConfig对象。
l         控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。
l         在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
l         执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。
 
2、概述MVC体系结构
答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。
在MVC体系中,模型通常被称为“业务逻辑”,是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型
在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。
 
3、多线程的优点
答:可分两方面来答:
l         相对于单线程而言 :
可以响应多任务的并发操作。
多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那个被阻塞的线程暂停,所有其他的线程继续执行。
l         相对于进程而言:(可以答也可以不答)
它所要求的开销比较小,转换成本较小。
所有线程共享同一地址空间,相互协作。
彼此之间通信很容易。
 
4、EJB概述
答:EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。
    EJB分为三种:Session Bean Entity Bean Message-Driven Bean 三种,其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) 和 Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。
5、用java访问Oracle数据库、取得记录并输出到界面
答:……………………..
   Class.forName(“oracle.jdbc.driver.OracleDriver”);
   Connection conn=DriverManager.getConnection( url , username , password );
   Statement stmt=conn.createStatement();
   String str=”select * from [table]”;
   ResultSet rs=stmt.executeQuery(str);
   While(rs.next())
   {
     ……………………
   }
   rs.close();
   stmt.close();
   conn.close();
 
6、概述java垃圾回收机制
答:它的工作原理如下:
    当不存在对一个对象的引用时,我们就假定不再需要那个对象,那个对象所占有的存储单元可以被收回,可通过System.gc()方法回收,但一般要把不再引用的对象标志为null为佳。
 
7、java类是否可以多继承,怎么实现多继承?
答:java没有多继承,但可以通过接口的形式来达到多继承的目地。
 
8、面向对象的特点
答:面向对象有三大特点:封装、继承、多态。(如果要回答四个,可加上 抽象性 这一特点)
 
9、接口有什么优点
答:接口有以下优点:
l         接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现。
l         利用接口可达到实现多继承的目地。
l         可以在不暴露对象的类的前提下,暴露对象的编程接口。
l         不用强迫类关系在无关类中截获相似处(采用适配器就可以了)。
l         声明想执行的一个或多个方法。
 
10、ayList 与 Vector 的区别
答:主要从两个方面来说明:
l         安全、效率方面
如果要实现同步安全,则要用Vector,否则则用ArrayList,因为ArrayList不考虑同步安全的问题,所以效率要高些。
l         资源方面
当两者的容量已满时,它们都会自动增长其容量,但Vector是按其容量的一倍增长,而ArrayList则按其容量的50%增加,所以Vector更能节省资源。
 
11、MVC结构在Jtable中怎样实现的,这种结构有什么好处?
答、在Jtable中不存储它的单元数据,它的所有实例把它们的单元值交给实现了TableModel接口的对象来维护和管理,所以在MVC结构中,Jtable的表格主要体现了一个V的作用,其表格将数据变化体现出来,而数据模型则体现了M的作用,封装数据和业务逻辑。
       注:详细解说见第二题
 
 
12、在控制台中输入一个字符串,然后按照逆序打印出来
答:import java.io.*;
   
public class test{
       public static void main(String args[]){
    String A=””;
    String B=””;
    String C=””;
    Try{
       BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
       If ((B=br.readLine())!=null){
          A=A+B;
       }
      
       for(int I=str.length()-1;I>=0;I--){
          C=C+A.substring(I,I+1);
}
System.out.println(C);
    }
    catch(Exception e){
        System.out.println(e.getMessage());
    }
}
}
 
13、java是否存在内存泄露
答:存在,当一个对象引用另一对象后,当另一对象为空时,会出现内存泄露。
 
14、String类的值是否可以改变
答:String类的值在初始后不能改变,如果要改变,可转换为StringBuffer类,这个类的值是可以动态改变的。(这里主要考String 和 StringBuffer 的区别)
 
15、Corba概述
答:通用对象请求代理,它的主要目标是解决面向对象的异构应用之间的互操作问题,并提供分布式计算所需的一些其他的服务。ORB是CORBA的核心。
    CORBA重新调整了客户与服务器之间的关系。客户可以向服务器提出事务请求,同时也可以为下一个请求充当服务器角色。由于CORBA系统引入了中间件的概念,即事件代理,由中间件完成客户机与服务器之间的通信,使得服务器对于客户机的位置相对透明,取消了原有分布式计算机模型中客户机----服务器之间的一一对应关系,CORBA客户机可以在运行时动态获得服务对象的位置,并且可以对多个服务对象提交事务请求,所以它极大的推动了分布计算的发展。另外,CORBA规范约束采用面向对象的分布式方法,以接口定义语言的形式实现对象内部细节的完整封装,从而降低了软件系统的复杂度,增加了软件功能的可重用性。CORBA提供到C C++ JAVA 等高级语言的映射,极大程度地减小了程序设计语言的依赖性。
    (有待扩展)
   
 
16、jsp的内置对象、功能以及主要方法
Jsp内置对象
功能
主要方法
out
向客户端输出数据
print() println() flush() clear() isAutoFlush() getBufferSize()   close() …………
request
向客户端请求数据
getAttributeNames() getCookies() getParameter() getParameterValues() setAttribute() getServletPath() …………..
response
封装了jsp产生的响应,然后被发送到客户端以响应客户的请求
addCookie() sendRedirect() setContentType()
flushBuffer() getBufferSize() getOutputStream()
sendError() containsHeader()……………
application
 
 
config
表示Servlet的配置,当一个Servlet初始化时,容器把某些信息通过此对象传递给这个Servlet
getServletContext() getServletName() getInitParameter()   getInitParameterNames()……………
page
Jsp实现类的实例,它是jsp本身,通过这个可以对它进行访问
flush()………
pagecontext
为JSP页面包装页面的上下文。管理对属于JSP中特殊可见部分中己经命名对象的该问
forward() getAttribute() getException() getRequest() getResponse()   getServletConfig()
getSession() getServletContext() setAttribute()
removeAttribute() findAttribute() ……………
session
用来保存每个用户的信息,以便跟踪每个用户的操作状态
getAttribute() getId()   getAttributeNames() getCreateTime() getMaxInactiveInterval()
invalidate() isNew()
exception
反映运行的异常
getMessage()…………
 
17、java 有几种修饰符?默认的是什么?
答:(注:修饰符是影响类、变量及成员方法的生存空间和可访问性的关键字)
修饰符
成员方法
成员变量
局部变量
abstract
static
public
protected
private
private protected
synchronized
native
volatile
final
transient
 
 以下是访问控制修饰符: 默认为friendly
修饰符
同类
同包
子孙类
不同包
public
protected
friendly
private
 
18、toString方法的概述
答:因为每个类都继承了Object类,所以都实现了toString()方法。
    通过toString()方法可以决定所创建对象的字符串表达形式。
 
19、Object类的概述
答:Object类是所有其他的类的超类,Object的一个变量可以引用任何其他类的对象。因为数组是作为类实现的,所以Object的一个变量也可以引用任何数组,它包括以下几种方法:
    clone() equals() finalize() getClass() hashCode() notify() notifyAll() toString() wait()
 
20、java特点
答:java具有以下几个主要特点:
l         简单性
l         面向对象:JAVA是完全面向对象的,它支持静态和动态风格的代码继承及重用
l         分布式:包括数据分布和操作分布
l         健壮性:java系统仔细检测对内存的每次访问,确认它是否合法,而且在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。
l         结构中立
l         安全性:java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。
l         与平台无关:java写的应用程序不用修改就可在不同的软硬平台上运行。平台无关性有两种:源代码级和目标代码级。 Java主要靠JAVA虚拟机在目标代码级上实现平台无关性
l         解释执性:运行JAVA程序时,它首先被编译成字节代码,字节代码非常类似机器码,执行效率非常高。
l         高性能
l         多性程
l         动态性:它允许程序动态的装入运行时需要的类。
 
21、什么叫抽象类?抽象类跟接口有什么区别?为什么引进数据接口概念?
答:具有关键字abstract ,在实现内容上没有完全定义的类就叫抽象类。
抽象类和接口的区别如下:
① 在类来继承抽象类时,只需实现部分具体方法和全部抽象方法,而实现接口则要实现里面的全部方法。
②在接口中无成员变量,而抽象类中可有成员变量。
在Java中引进接口主要是为了解决多继承的问题。
 
22、doGet与doPut的区别?
答: doPut会把地址作为一个文件写到服务器,而doGet不会,而只显示在地址栏。
 
23、多线程实现有那几种方法,同步有哪几种方法?
答:实现同步主要有两种方法:1.synchronized   2.wait notify
实现多线程主要继承Thread 类和实现Runnable接口。
 
24、JSP页面的跳转?
答:jsp页面实现跳转主要有jsp:forward 和 sendRedirect 两种方法
jsp:forward:在本容器内跳转 。 跳转后,地址栏地址不变 。效率高。跳转后立即结束本页的内容。
sendRedirect:在容器之间的跳转,跳转后地址栏地址为跳转后的地址,效率较低。
通常采用jsp:forward方式跳转。
25、类变量的初始化
答:在Java中类变量在局部中一定要初始化,因为局部变量会覆盖全局变量,否则会报错:变量未初始化。全局变量则可以不初始化,而到具体的内部方法或其他的类成员中初始化。
26、数组的定义
答:数组是作为一种对象实现的。数组元素可以包含作何类型值,但数组里面的每个元素的类型必须一致创建数组步聚如下:
l         声明
l         构造
l         初始化
27、Hastable 与HashMap的区别?
答:Hashtable和Hashmap的主要区别如下:
l         Hashtable是同步的,而HashMap不是同步的。所以不要求同步的时候,用HashMap的效率较高
l         Hashtable版本较HashMap版本低。
28、说明List和Set的区别
答:两者主要区别如下:
l         List用来处理序列,而Set用来处理集。
l         List中的内容可以重复,而Set则不行。
                                  深圳某公司(四)
 
Java Text ()
1. Which of the following lines will compile without warning or error.
1) float f=1.3;
2) char c="a";
3) byte b=257;
4) boolean b=null;
5) int i=10;
 
2. What will happen if you try to compile and run the following code
public class MyClass {
    public static void main(String arguments[]) {
              amethod(arguments);
    }
    public void amethod(String[] arguments) {
              System.out.println(arguments);
              System.out.println(arguments[1]);
    }
}
1) error Can't make static reference to void amethod.
2) error method main not correct
3) error array must include parameter
4) amethod must be declared with String
 
3. Which of the following will compile without error
1)  import java.awt.*;
package Mypackage;
class Myclass {}
2)  package MyPackage;
import java.awt.*;
class MyClass{}
3)  /*This is a comment */
package MyPackage;
import java.awt.*;
class MyClass{}
 
4. What will be printed out if this code is run with the following command line?
java myprog good morning
public class myprog{
    public static void main(String argv[])
    {
              System.out.println(argv[2]);
    }
}
1) myprog
2) good
3) morning
4) Exception raised:
 "java.lang.ArrayIndexOutOfBoundsException: 2"
  
5. What will happen when you compile and run the following code?
public class MyClass{
 static int i;
 public static void main(String argv[]){
      System.out.println(i);
 }
}
1) Error Variable i may not have been initialized
2) null
3) 1
4) 0
 
6. What will happen if you try to compile and run the following code?
public class Q {
 public static void main(String argv[]){
      int anar[]=new int[]{1,2,3};
      System.out.println(anar[1]);
 }
}
1) 1
2) Error anar is referenced before it is initialized
3) 2
4) Error: size of array must be defined
 
7. What will happen if you try to compile and run the following code?
public class Q {
 public static void main(String argv[]){
      int anar[]=new int[5];
      System.out.println(anar[0]);
 }
}
1) Error: anar is referenced before it is initialized
2) null
3) 0
4) 5
 
8. What will be the result of attempting to compile and run the following code?
abstract class MineBase {
 abstract void amethod();
 static int i;
}
public class Mine extends MineBase {
 public static void main(String argv[]){
 int[] ar=new int[5];
 for(i=0;i < ar.length;i++)
      System.out.println(ar[i]);
 }
}
1) a sequence of 5 0's will be printed
2) Error: ar is used before it is initialized
3) Error Mine must be declared abstract
4) IndexOutOfBoundes Error
 
9. What will be printed out if you attempt to compile and run the following code ?
int i=1;
 switch (i) {
 case 0:
      System.out.println("zero");
      break;
 case 1:
      System.out.println("one");
 case 2:
      System.out.println("two");
 default:
      System.out.println("default");
 }
1) one
2) one, default
3) one, two, default
4) default
 
10. Which of the following lines of code will compile without error
1)  int i=0;
if(i) {
             System.out.println("Hello");
      }
2)  boolean b=true;
boolean b2=true;
if(b==b2) {
             System.out.println("So true");
      }
3) int i=1;
int j=2;
if(i==1|| j==2)
      System.out.println("OK");
4)  int i=1;
int j=2;
if(i==1 &| j==2)
             System.out.println("OK");
 
11. What will be output if you try to compile and run the following code, but there is no file called Hello.txt in the current directory?.
import java.io.*;
public class Mine
{
public static void main(String argv[])
{
              Mine m=new Mine();
              System.out.println(m.amethod());
    }
public int amethod()
{
              try
{
                  FileInputStream dis
=new FileInputStream("Hello.txt");
              }
catch (FileNotFoundException fne)
{
           System.out.println("No such file found");
           return -1;
              }
catch(IOException ioe)
{}
finally
{
                  System.out.println("Doing finally");
              }
              return 0;
    }
}
1) No such file found
2 No such file found ,-1
3) No such file found, Doing finally, -1
4) 0
12.Which of the following statements are true?
1) Methods cannot be overriden to be more private
2) static methods cannot be overloaded
3) private methods cannot be overloaded
4) An overloaded method cannot throw exceptions not checked in the base class
 
13.What will happen if you attempt to compile and run the following code?
class Base {}
class Sub extends Base {}
class Sub2 extends Base {}
public class CEx{
    public static void main(String argv[]){
       Base b=new Base();
       Sub s=(Sub) b;
    }
}
1) Compile and run without error
2) Compile time Exception
3) Runtime Exception
 
14.Which of the following statements are true?
1) System.out.println( -1 >>> 2);will output a result larger than 10
2) System.out.println( -1 >>> 2); will output a positive number
3) System.out.println( 2 >> 1); will output the number 1
4) System.out.println( 1 <<< 2); will output the number 4
 
15.What will happen when you attempt to compile and run the following code?
public class Tux extends Thread{
    static String sName = "vandeleur";
    public static void main(String argv[]){
        Tux t = new Tux();
        t.piggy(sName);
        System.out.println(sName);
      
    }
    public void piggy(String sName){
        sName = sName + " wiggy";
        start();
    }
    public void run(){
        for(int i=0;i < 4; i++){
           sName = sName + " " + i;
               
        }
    }
}
1) Compile time error
2) Compilation and output of "vandeleur wiggy"
3) Compilation and output of "vandeleur wiggy 0 1 2 3"
4) Compilation and output of either "vandeleur", "vandeleur 0", "vandeleur 0 1" "vandaleur 0 1 2" or "vandaleur 0 1 2 3"
 
16.What will be displayed when you attempt to compile and run the following code
//Code start
import java.awt.*;
public class Butt extends Frame{
    public static void main(String argv[]){
              Butt MyBut=new Butt();
    }
    Butt(){
              Button HelloBut=new Button("Hello");
              Button ByeBut=new Button("Bye");
              add(HelloBut);
              add(ByeBut);
              setSize(300,300);
              setVisible(true);
    }
}
//Code end
1) Two buttons side by side occupying all of the frame, Hello on the left and Bye on the right
2) One button occupying the entire frame saying Hello
3) One button occupying the entire frame saying Bye
4) Two buttons at the top of the frame one saying Hello the other saying Bye
 
17.What will be output by the following code?
public class MyFor{
    public static void main(String argv[]){
              int i;
              int j;
           outer:
              for (i=1;i <3;i++)
           inner:
              for(j=1; j<3; j++) {
                  if (j==2)
                     continue outer;
                  System.out.println("Value for i=" + i + " Value for j=" +j);
              }
    }
 
}
1) Value for i=1 Value for j=1
2) Value for i=2 Value for j=1
3) Value for i=2 Value for j=2
4) Value for i=3 Value for j=1
 
18.Which statement is true of the following code?
public class Agg{
public static void main(String argv[]){
              Agg a = new Agg();
              a.go();
       }
       public void go(){
              DSRoss ds1 = new DSRoss("one");
              ds1.start();
       }
}
 
class DSRoss extends Thread{
private String sTname="";
DSRoss(String s){
       sTname = s;
}
public void run(){
       notwait();
       System.out.println("finished");
}
public void notwait(){
       while(true){
              try{
                    System.out.println("waiting");
                    wait();
                     }catch(InterruptedException ie){}
              System.out.println(sTname);
              notifyAll();
              }
       }
      
}
1) It will cause a compile time error
2) Compilation and output of "waiting"
3) Compilation and output of "waiting" followed by "finished"
4) Runtime error, an exception will be thrown
 
19.Which of the following methods can be legally inserted in place of the comment //Method Here ?
class Base{
 public void amethod(int i) { }
}
 
public class Scope extends Base{
 public static void main(String argv[]){
 }
 //Method Here
}
1) void amethod(int i) throws Exception {}
2) void amethod(long i)throws Exception {}
3) void amethod(long i){}
4) public void amethod(int i) throws Exception {}
 
 
40.You have created a simple Frame and overridden the paint method as follows
public void paint(Graphics g){
g.drawString("Dolly",50,10);
}
What will be the result when you attempt to compile and run the program?
1) The string "Dolly" will be displayed at the centre of the frame
2) An error at compilation complaining at the signature of the paint method
3) The lower part of the word Dolly will be seen at the top of the frame, with the top hidden.
4) The string "Dolly" will be shown at the bottom of the frame.
 
21.What will be the result when you attempt to compile this program?
public class Rand{
    public static void main(String argv[]){
       int iRand;
       iRand = Math.random();
       System.out.println(iRand);
    }
}
1) Compile time error referring to a cast problem
2) A random number between 1 and 10
3) A random number between 0 and 1
4) A compile time error about random being an unrecognised method
 
22.Given the following code
import java.io.*;
public class Th{
    public static void main(String argv[]){
       Th t = new Th();
       t.amethod();
    }
    public void amethod(){
       try{
           ioCall();
       }catch(IOException ioe){}
    }
}
What code would be most likely for the body of the ioCall method
1) public void ioCall ()throws IOException{
 DataInputStream din = new DataInputStream(System.in);
 din.readChar();
 }
2) public void ioCall ()throw IOException{
 DataInputStream din = new DataInputStream(System.in);
 din.readChar();
 }
3) public void ioCall (){
 DataInputStream din = new DataInputStream(System.in);
 din.readChar();
 }
4) public void ioCall throws IOException(){
 DataInputStream din = new DataInputStream(System.in);
 din.readChar();
 }
 
23.What will happen when you compile and run the following code?
public class Scope{
    private int i;
    public static void main(String argv[]){
       Scope s = new Scope();
       s.amethod();
    }//End of main
    public static void amethod(){
       System.out.println(i);
    }//end of amethod
}//End of class
 
1) A value of 0 will be printed out
2) Nothing will be printed out
3) A compile time error
4) A compile time error complaining of the scope of the variable i
 
24.You want to lay out a set of buttons horizontally but with more space between the first button and the rest. You are going to use the GridBagLayout manager to control the way the buttons are set out. How will you modify the way the GridBagLayout acts in order to change the spacing around the first button?
 
1) Create an instance of the GridBagConstraints class, call the weightx() method and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
2) Create an instance of the GridBagConstraints class, set the weightx field and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
3) Create an instance of the GridBagLayout class, set the weightx field and then call the setConstraints method of the GridBagLayoutClass with the component as a parameter.
4) Create an instance of the GridBagLayout class, call the setWeightx() method and then pass the GridBagConstraints instance with the component to the setConstraints method of the GridBagLayout class.
 
25.Which of the following can you perform using the File class?
1) Change the current directory
2) Return the name of the parent directory
3) Delete a file
4) Find if a file contains text or binary information
 
26.Which statement is true of the following code?
public class Rpcraven{
       public static void main(String argv[]){
       Pmcraven pm1 = new Pmcraven("One");
       pm1.run();
       Pmcraven pm2 = new Pmcraven("Two");
       pm2.run();
 
       }
}
class Pmcraven extends Thread{
private String sTname="";
Pmcraven(String s){
       sTname = s;
}
public void run(){
       for(int i =0; i < 2 ; i++){
              try{
               sleep(1000);
              }catch(InterruptedException e){}
 
              yield();
              System.out.println(sTname);
              }
 
       }
}
1) Compile time error, class Rpcraven does not import java.lang.Thread
2) Output of One One Two Two
3) Output of One Two One Two
4) Compilation but no output at runtime
 
27.You are concerned that your program may attempt to use more memory than is available. To avoid this situation you want to ensure that the Java Virtual Machine will run its garbage collection just before you start a complex routine. What can you do to be certain that garbage collection will run when you want .
1) You cannot be certain when garbage collection will run
2) Use the Runtime.gc() method to force garbage collection
3) Ensure that all the variables you require to be garbage collected are set to null
4) Use the System.gc() method to force garbage collection
 
 
28Which statements about the garbage collection are true?
 
1. The program developer must create a thread to be responsible for free the memory.
2. The garbage collection will check for and free memory no longer needed.
3. The garbage collection allow the program developer to explicity and immediately free the memory.
4. The garbage collection can free the memory used java object at expect time.
 
29.You have these files in the same directory. What will happen when you attempt to compile and run Class1.java if you have not already compiled Base.java
//Base.java
package Base;
class Base{
    protected void amethod(){
       System.out.println("amethod");
    }//End of amethod
}//End of class base
package Class1;
//Class1.java
public class Class1 extends Base{
    public static void main(String argv[]){
       Base b = new Base();
       b.amethod();
    }//End of main
 
}//End of Class1
 
1) Compile Error: Methods in Base not found
2) Compile Error: Unable to access protected method in base class
3) Compilation followed by the output "amethod"
4)Compile error: Superclass Class1.Base of class Class1.Class1 not found
 
30.What will happen when you attempt to compile and run the following code
class Base{
    private void amethod(int iBase){
       System.out.println("Base.amethod");
    }
}
 
class Over extends Base{
    public static void main(String argv[]){
       Over o = new Over();
       int iBase=0;
       o.amethod(iBase);
}
    public void amethod(int iOver){
              System.out.println("Over.amethod");
    }
}
1) Compile time error complaining that Base.amethod is private
2) Runtime error complaining that Base.amethod is private
3) Output of "Base.amethod"
4) Output of "Over.amethod"
 
 
一个袋子中有100个黑球,100个白球,每次从中取出两个球,然后放回一个球,如果取出两个球颜色相同,则放入一个黑球,如果取出一百一黑,则放入一个白球,请问到最后袋中剩下的球的颜色:
1)黑球    2)白球    3)不一定。
给出证明。
 
建立一个数据库模型,用于管理一个公司部门及其内部雇员,每个部门都有一个负责人。根据你的数据库模型,编写sql语句建立你的数据库表,给出一个雇员的姓名,查询该雇员所属的部门负责人。
1.          
2.          
3.          
4.          
5.          
6.          
7.          
8.          
9.          
10.      
11.      
12.      
13.      
14.      
15.      
16.      
17.      
18.      
19.      
20.      
21.      
22.      
23.      
24.      
25.      
26.      
27.      
28.      
29.      
 
 

1.         5)
2.         1)
3.         2)3)
4.         4)
5.         4)
6.         3)
7.         3)
8.         3)
9.         3)
10.     2)3)
11.     3)
12.     1)
13.     3)
14.     1)2)3)
15.     4)
16.     3)
17.     1)2)
18.     4)
19.     2)3)
20.     3)
21.     1)
22.     1)
23.     3)
24.     2)
25.     2,3
26.     2)
27.     1)
28.     2
29.     4
30.     4
黑球。
软件研发人员笔试(初试)
 
2004年度软件研发人员招聘笔试试题(初试)
应聘者资料:
姓名
 
      性别
 
出生日期
 
籍贯&户口所在地
 
身份证号
 
婚姻状况
 
电话
 
Email
 
毕业院校
 
毕业时间
 
专业
 
学历
 
学位
 
英语水平(资格)
 
计算机水平(资格)
 
要求职位和希望担任的角色
 
待遇要求
 
工作经历(由近及远)
时间
单位名称
职务
工作职责
离职原因
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
技能评估(请标明您掌握的语言,并在后面的空白处标明您从事了多少个月)
C/C++     ;Java     ;汇编     ;Windows 9X     ;WinNT     ;UNIX/LINUX     ;Oracle     ;Informix     ;Sybase     ;MS SQL Server     ;MS Access     ;VC     ;VB     ;PB     ;Delphi     ;ASP     ;XML     ;Javascript     ;Rational Rose     ;MS SourceSafe     ;其它
评估意见(由招聘小组填写)
 
 

试题一:基础知识(必作题)
1、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
假设某计算机具有1M 字节的内存(目前使用的计算机往往具有64M字节以上的内存),并按字节编址,为了能存取该内存各地址的内容,其地址寄存器至少需要二进制_A_位。为使4字节组成的字能从存储器中一次读出,要求存放在存储器中的字边界对齐,一个字的地址码应_B_。若存储周期为200NS,且每个周期可访问4个字节,则该存储器带宽为_C_BIT/S。假如程序员可用的存储空间为4M字节,则程序员所用的地址为_D_,而真正访问内存的地址称为_E_。
供选择的答案:
A: ①10                    ②16                    ③20                    ④32
B: ①最低两位为00      ②最低两位为10      ③最高两位为00      ④最高两位为10
C: ①20M               ②40M               ③80M               ④160M
D: ①有效地址          ②程序地址          ③逻辑地址          ④物理地址
E: ①指令              ②物理地址          ③内存地址          ④数据地址
 
2、从供选择的答案中。选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
给定结点的关键字序列(F、B、J、G、E、A、I、D、C、H),对它按字母的字典顺序进行排列,采用不同方法,其最终结果相同。但中间结果是不同的。
Shell排序的第一趟扫描(步长为5)结果应为_A_。
冒泡排序(大数下沉)的第一趟起泡的效果是_B_.
快速排序的第一趟结果是_C_。
二路归并排序的第一趟结局是 _D_。
供选择的答案
A:①(B、F、G、J、A、D、I、E、H、C)
②(B、F、G、J、A、E、D、I、C、H)
③(A、B、D、C、E、F、I、J、G、H)
④(C、B、D、A、E、F、I、G、J、H)
B:①(A、B、D、C、F、E、I、J、H、G)
②(A、B、D、C、E、F、I、H、G、J)
③(B、F、G、E、A、I、D、C、H、J)
④(B、F、G、J、A、E、D、I、C、H)
C:①(C、B、D、A、F、E、I、J、G、H)
②(C、B、D、A、E、F、I、G、J、H)
③(B、A、D、E、F、G、I、J、H、C)
④(B、C、D、A、E、F、I、J、G、H)
D:①(B、F、G、J、A、E、D、I、G、H)
②(B、A、D、E、F、G、I、J、H、C)
③(A、B、D、C、E、F、I、J、G、H)
④(A、B、D、C、F、E、J、I、H、C)
 
3、从供选择的答案中,选出应填入下面叙述中_?_内的最确切的解答.把相应编号写在答卷的对应栏内。
进程是操作系统中的一个重要概念。进程是一个具有一定独立功能的程序在某个数据集合上的一次_A_。
进程是一个_B_的概念,而程序是一个_C_的概念。
进程的最基本状态有_D_。在一个单处理机中,若有6个用户进程,在非管态的某一时刻,处于就绪状态的用户进程最多有_E_个。
供选择的答案
A:①单独操作 ②关联操作 ③运行活动 ④并发活动
B:①静态 ②动态 ③逻辑 ④物理
C:①物理 ②逻辑 ③动态 ④静态
D:①就绪、运行、隐蔽 ②停止、就绪、运行③运行、就绪、阻塞 ④就绪、撤消、运行
E:①5 ②6 ③1 ④4
 
4、软件设计中划分模块的一个准则是_A_。两个模块之间的耦合方式中,_B_耦合的耦合度最高,_C_耦合的耦合度最低。一个模块内部的内聚种类中_D_内聚的内聚度最高,_E_内聚的内聚度最低。
供选择的答案
A:①低内聚低耦合②低内聚高耦合③高内聚低耦合④高内聚高耦合
B:①数据 ②非直接 ③控制 ④内容
C:①数据 ②非直接 ③控制 ④内容
D:①偶然 ②逻辑 ③功能 ④过程
E:①偶然 ②逻辑 ③功能 ④过程
 
5、从供选择的答案中选出应填入下面叙述中_?_内的最确切的解答,把相应编号写在答卷的对应栏内。
最常用的一种基本数据模型是关系数据模型,它用统一的_A_结构来表示实体及实体之间的联系。关系数据库的数据操作语言(DML)主要包括_B_两类操作。
关系运算以关系代数为理论基础,关系代数的最基本操作是并、差、笛卡尔积、_C_。用R∣×∣S表示关系 R和关系 S的_D_。
设关系R和关系S图示如下:
R: A B C   S: B C D      T: A B C D
则关系T是关系R和关系S_E _的结果。
供选择的答案
A:①树 ②网络 ③图 ④二维表
B:①插入和删除 ②检索和更新 ③查询和编辑 ④统计和修改
C:①投影、联接 ②联接、选择 ③选择、投影 ④交、选择
D:①联接 ②笛卡尔积 ③日联接 ④自然联接
E:①自然联接 ②θ联接 ③笛卡尔积 ④并
 
 

试题二:程序设计(任选一题)
1.用你所熟悉的任意一种程序语言,编写一个完整的过程,将一个字符串插入到另一个字符串的某个位置后面(例如:将“abc”插入到“abcdef”的第三个字符位置后面,结果为“abcabcdef”)。编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。
 
2.用你所熟悉的任意一种程序语言,编写一个完整的过程,完成从一个给定的完整的文件路径(如“C:/My Documents/Software Test 1.00.doc”)中,析取文件名,扩展名和文件所处目录的功能,编写程序时,请在必要的地方加以注释(注:不能用该程序语言的内置函数或过程)。
 
试题三:数据库设计(任选一题)
1.下面的表有问题吗?如果有,如何改进?
       城市*
      街道*
        邮政编码
佛山
金鱼街
528000
佛山
大福路
528000
佛山
季华路
528000
广州
北京路
510000
广州
三元里
510000
广州
中山路
510000
*城市和街道联合做主键
 
分成二个表,第一个表有以下字段:城市和街道,以城市作为主键;第二个表:街道和邮政编码,以街道为主键.通过街道与第一个表的街道相关联
 
2.假设有以下的两个表:
Cus_A
ID*
Name
Address
Cus_B
ID*
Name
Address
*主键
Cus_A和表Cus_B的结构完全相同,表Cus_A和表Cus_B中既存在ID相同的记录,也存在ID不同的记录。现要求将ID只存在于表Cus_A中而不存在于表Cus_B中的记录全部插入到Cus_B表中,并用表Cus_A中的记录更新表Cus_B中相同的ID的记录,请写出完成这一功能的存储过程。
Create or procedure test is
Declare id1 CusA.id%type;
Begin
   Select id into id1 from CusA a,CusB b where a.id=b.id;
 
3、某公司正在开发一个档案管理系统,要求在关系数据库中实现和Windows文件系统完全一致的树状文件目录。为了实现这一目录结构,至少需求哪些表?请详细描述这些表的用途和结构(如有必要,可用图表进行描述)。最后,请用伪编码(或自然语言)描述按树状结构遍历所有档案的算法。
试题四:系统设计(任选一题)
1.简述“面向对象”的概念,并设计一个学校选课系统的对象模型。
2.简述“软件系统的两层和多层体系结构”的概念(如有必要,可用图表进行描述),并指出两者的主要区别。
3.简述一个软件工程的主要步骤,并指出每个步骤的明确目标及实施办法。最后分析哪些是关键步骤。
 
试题五:综合(必作题)
你认为在团队开发中,你能发挥自己的能力吗?为什么?当个人意见与主管出现矛盾时,你用什么方法解决?
 
 
试题六:其它(思考题)
您为何选择这类职业?
您生活的最终目标是什么?
您怎样做好准备来实现这些目标?
如果面试通过是否能够在工作遵循公司或客户公司的管理规定与制度及信息安全管理规定?
软件研发人员招聘笔试(培训)
 
试题一:综合(基本知识引导,思考,)
1.       面向对象语言的特征?Java I/O中字符流和字节流的区别?
2.       HashTable和HashMap的区别?EJB的生命周期? Servlet的生命周期?
3.       HTTP协议是长连接还是短连接?
4.       JAVA的基本数据类型有那些? String是不是基本类型?
5.       MVC的概念和在项目中的应用?
6.       如何避免多个SOCKET的读写阻塞,JDK1.4新增了那些方法解决这个问题?
7.       如果一个变量的值为NULL,观察以下程序:
8.       IF 变量=NULL THEN
分支1;
ELSE
分支2;
END IF
程序最终执行那一个分支?
9.       JSP中有那些重定向方法,它们的区别?EJB的优势和特点?List 和 Vector的区别?
10.    ORACLE数据库中,一个表被删除后,还能否将空间分配给其它表,SQL SERVER哪?
11.    ORACLE数据库中,一个表有两千万条数据,怎样最有效的将其删除?
12.    在数据库中,如果处理表中的每一条数据,用那种方法?
13.    发送一条邮件的几个步骤在JNDI中如何初始化URL上下文
14.    常用的组件技术?会话BEAN的属性?实体BEAN的属性?
15.    STATE SESSION BEAN 与STATELESS SESSION BEAN的区别?
16.    JMS编程具体步骤?事务模式?
17.    JAVA容器管理事务的事务属性为REQUIRESNEW的意义
18.    事务失败时的会话BEAN的重新初始化方法
19.    WEBLOGIC SERVER中开发JDBC应用通常遵循的步骤
 
试题二:分类试题(分类必作题)
Java基础
1.       作用域public,private,protected,以及不写时的区别?
2.       ArrayList和Vector的区别,   HashMap和Hashtable的区别
3.       char型变量中能不能存贮一个中文汉字?为什么?
4.       多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
5.       继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
6.       内部类的实现方式?
父类:
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:
 
 
7.       You need to insert an inner class declaration at line 3. Which two inner class declarations are valid?(Choose two.)
 
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)
A. class InnerOne{          //.静态内部类可以有静态成员,而非静态内部类则不能有静态成员
public static double methoda() {return d1;}
}
B. public class InnerOne{     //.静态内部类可以有静态成员,而非静态内部类则不能有静态成员
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}    //静态内部类的非静态成员不可访问外部类的非静态变量
}
E. abstract class InnerOne{
public abstract double methoda();
}
8.       垃圾回收机制,如何优化程序?
9.       float型float f=3.4是否正确?
10.    介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)?
11.    Java中异常处理机制,事件机制?
12.    JAVA中的多形与继承?
13.    抽象类与接口?
14.    Java 的通信编程,用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
15.    JAVA实现一种排序,JAVA类实现序列化的方法(二种)? 如在COLLECTION框架中,实现比较要实现什么样的接口?
16.    编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
17.    STRING 与 STRINGBUFFER 的区别。
18.    == 与 equals 的区别
19.    JAVA的基本数据类型有哪些 ?String 是不是基本数据类型?
20.    面向对象语言的特征:a抽象性 b封装 c继承 d多态
21.    链表和数组的区别?
 
Jsp基础
22.    jsp有哪些内置对象?作用分别是什么?
23.    jsp有哪些动作?作用分别是什么?
24.    JSP中动态INCLUDE与静态INCLUDE的区别?
25.    两种跳转方式分别是什么?有什么区别?
 
Servlet基础
26.    说一说Servlet的生命周期?
27.    Servlet版本间(忘了问的是哪两个版本了)的不同?
28.    JAVA  Servlet  API中 forward() 与 redirect() 的区别?
29.    Servlet的基本架构
 
JdbcJdo基础
30.    可能会让你写一段Jdbc连Oracle的程序,并实现数据查询
31.    Class.forName的作用?为什么要用?
32.    Jdo是什么?
33.    ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。
 
Xml基础
34.    xml有哪些解析技术?区别是什么?
35.    你在项目中用到了xml技术的哪些方面?如何实现的?
36.    jdom解析xml文件时如何解决中文问题?如何解析?
37.    编程用JAVA解析XML的方式
 
EJB基础
38.    EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?
39.    EJB与JAVA BEAN的区别?
40.    EJB的基本架构?
41.    会话 BEAN 的属性?
42.    实体 BEAN 的属性?
43.    STATES SESSION BEAN 与 STATELESS SESSION BEAN的区别?
 
J2EE MVC基础
44.    MVC的各个部分都有那些技术来实现?如何实现?
45.    应用服务器与WEB SERVER的区别?
46.    J2EE是什么?
47.    WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL解释。
48.    BS与CS的联系与区别。
49.    STRUTS的应用(如STRUTS架构)
 
设计模式方面
50.    开发中都用到了那些设计模式?用在什么场合?
 
JavaScript方面
51.    如何校验数字型?
 
CORBA方面
52.    CORBA是什么?用途是什么?
 
LINUX方面
53.    LINUX下线程,GDI类的解释。
 
数据库方面
54.    写一个 SQL Server 中的存储过程:
55.    写一个 Oracle 中的存储过程:
 
HTTP方面
56.    HTTP的请求过程:

   有感:应聘Java笔试时可能出现问题及其答案

前段时间因为要参加一个笔试,在准备期间在网上找到了两条关于笔试题目的文章,其中一篇为<<有感:应聘Java笔试时可能出现问题>>,还有一篇忘了名字,读后深受启发。
在寻找这些答案的过程中,我将相关答案记录下来,就形成了以下这些东西。需要说明的是以下答案肯定有很多不完整甚至错误的地方,需要各位来更正与完善它,千万不要扔我的鸡蛋啊。

希望本文能够给即将奔赴笔试考场的同仁些许帮助,更希望更多的人加入到收集整理笔试题与完善答案的这些工作中来,为大家更好的获得工作机会做一点贡献。

在此感谢前面两文的作者的对笔试题目的收集与整理。

如有任何意见与建议请通过QQ:6045306,Mail:huijunzi@21cn.com与我联系。


Java基础方面:

1
、作用域public,private,protected,以及不写时的区别
答:区别如下:

作用域:   当前类 , 同一package ,  子孙类 ,  其他
package
public  √ √ √ √           
//
能被所有类访问

protected  √ √ √ ×         //本类和其子类访问, 同一包中的所有类访问
friendly  √ √ × ×          //可以被本类和同一包中的的其他类访问
private  √ × × ×           //只能在本类中访问
不写时默认为friendly

2
ArrayListVector的区别,   HashMapHashtable的区别

答: ArrayListVector主要从二方面来说
.
.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的

.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半


HashMapHashTable主要从三方面来说。
.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMapJava 1.2引进的Map接口的一个实现

.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的

.值:只有HashMap可以让你将空值作为一个表的条目的key
value

3
char型变量中能不能存贮一个中文汉字?为什么
?
答: 是能够定义成为一个中文的,因为java中以unicode编码,一个char16个字节,所以放一个中文是没问题的


4
、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么
?
答: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口

同步的实现方面有两种,分别是synchronized,  wait
notify

5
、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么
?
:父类:

package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类
:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出结果:

C:/>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create

6
、内部类的实现方式
?
答:示例代码如下:

package test;
public class OuterClass
{
private class InterClass
{
public InterClass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
输出结果
:
C:/>java test/OuterClass
InterClass Create
OuterClass Create

 

再一个例题:
public class OuterClass {
private
double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)


A. class InnerOne{          //.
静态内部类可以有静态成员,而非静态内部类则不能有静态成员
public
static double methoda() {return d1;}
}
B. public class InnerOne{     //.
静态内部类可以有静态成员,而非静态内部类则不能有静态成员

static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D.
static
class InnerOne{
protected double methoda() {
return d1;}    //
静态内部类的非静态成员不可访问外部类的非静态变量

}
E. abstract class InnerOne{
public abstract double methoda();
}
说明如下:
.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。 AB

.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错, D

.非静态内部类的非静态成员可以访问外部类的非静态变量。 C 正确

.答案为C
E

7
、垃圾回收机制,如何优化程序
?
 
:  结束方法 finalize() 可以用来帮助优化对象,该方法在释放对象时被子引用,它是 java 中为了有效地进行垃圾收集而引入的一个特殊方法, finalize() 方法属于 java.lang.Object 的系统类方法,它能被所有类访问, 当一个对象实例已经完全没有被任何变量引用时,则可以对它进行垃圾收集标记,在进行垃圾收集之前,系统将自动调用对象的 finalize() 方法,释放对象实例所占用的系统资源.

 
8
floatfloat f=3.4是否正确
?
:   不正确。精度不准确,  应该用强制类型转换,如下所示:float f=(float)
3.4

9
、介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构
)?
答:  Collection FrameWork如下:

Collection
List
│├
LinkedList
│├
ArrayList
│└
Vector
│ └
Stack
Set
Map

Hashtable
HashMap
WeakHashMap
Collection
是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements

Map
提供keyvalue的映射


10
Java中异常处理机制,事件机制?

 

11
JAVA中的多形与继承?

希望大家补上,谢谢


12
、抽象类与接口?

答:  抽象类与接口都用于抽象,但是抽象类(JAVA)可以有自己的部分实现,而接口则完全是一个标识 (同时有多重继承的功能)


13
Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
:   Server端程序
:
package test;
import java.net.*;
import java.io.*;

public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss=new ServerSocket(10000);
while(true)
{
socket = ss.accept();
String RemoteIP = socket.getInetAddress().getHostAddress();
String RemotePort = ":"+socket.getLocalPort();
System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
in = new BufferedReader(new  InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("Cleint send is :" + line);
out = new PrintWriter(socket.getOutputStream(),true);
out.println("Your Message Received!");
out.close();
in.close();
socket.close();
}
}catch (IOException e)
{
out.println("wrong");
}
}
public static void main(String[] args)
{
new Server();
}
};
Client
端程序
:
package test;
import java.io.*;
import java.net.*;

public class Client
{
Socket socket;
BufferedReader in;
PrintWriter out;
public Client()
{
try
{
System.out.println("Try to Connect to 127.0.0.1:10000");
socket = new Socket("127.0.0.1",10000);
System.out.println("The Server Connected!");
System.out.println("Please enter some Character:");
BufferedReader line = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(socket.getOutputStream(),true);
out.println(line.readLine());
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.close();
in.close();
socket.close();
}catch(IOException e)
{
out.println("Wrong");
}
}
public static void main(String[] args)
{
new Client();
}
};

14
、用JAVA实现一种排序,JAVA类实现序列化的方法(二种) 如在COLLECTION框架中,实现比较要实现什么样的接口?

:   插入法进行排序代码如下
package test;
import java.util.*;
class InsertSort
{
ArrayList al;                      //
定义一个链表


public InsertSort(int num,int mod)              //带参数的构造函数
{
    al = new ArrayList(num);                         //
实例化链表
    Random rand = new Random();                    //
取一个随机数
   

System.out.println("The ArrayList Sort Before:");
    for (int i=0;i<num ;i++ )
    {
        al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
        System.out.println("al["+i+"]="+al.get(i));
    }
}
public void SortIt()
{
       Integer tempInt;
       int MaxSize=1;
    for(int i=1;i<al.size();i++)
    {
       tempInt = (Integer)al.remove(i);
       if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
       {
            al.add(MaxSize,tempInt);
            MaxSize++;
            System.out.println(al.toString());
       }

else

 {
           for (int j=0;j<MaxSize ;j++ )
           {
               if (((Integer)al.get(j)).intValue()>=tempInt.intValue())
               {
                   al.add(j,tempInt);
                   MaxSize++;
                   System.out.println(al.toString());
                   break;
                }
            }
         }
   }

System.out.println("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
     System.out.println("al["+i+"]="+al.get(i));
}

}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);      //
定义一个类的对象

is.SortIt();              //
调用类中的方法, 执行排序
}
}
JAVA类实现序例化的方法是实现java.io.Serializable接口
Collection
框架中实现比较要实现Comparable 接口和 Comparator 接口


15
、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为AB”,输入ABCDEF”6,应该输出为ABC”而不是ABC+汉的半个
答:代码如下:

package test;

class SplitString
{
String SplitStr;
int SplitByte;

public SplitString(String str,int bytes)      //带参数的构造函数,给类变量赋初值
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:´"+SplitStr+"´;SplitBytes="+SplitByte);
}


public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);

for (int i=1;i<=loopCount ;i++ )
{
     if (i==loopCount){
           System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
     } else {
            System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
     }
  }
}

public static void main(String[] args)
{
SplitString ss = new SplitString("test
dddsaf中男大3443n中国43中国人
0ewldfls=103",4);
ss.SplitIt();
}
}


16JAVA多线程编程。 JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。
希望大家补上,谢谢


17
STRING STRINGBUFFER 的区别。

答: STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffertoString()方法

 

18.      == equals  的区别:

:   "==" 比较的是两个对象的引用 (references),并不是他们的内容.

equals(Object) 方法与 "==" 相比的特殊之处就在于它可以覆盖,所以我们可以通过覆盖的办法让它不是比较引用而是比较数据内容。当然 JDK 中也有覆盖过 equals(Object) 方法的类,如 java.lang.String,它就覆盖了从 Object 继承来的的 equals(Object) 方法,用以比较字符串内容是否相同。

 

19.      JAVA的基本数据类型有哪些 ?  String 是不是基本数据类型 ?

Java 有8种基本数据类型: 

   byte   int   short   long   double   float   Boolean   char 

 

其中, byte  int  short  long  都属于整数类型.

Double  float  属于浮点类型.

Boolean  为布尔类型

Char 为字符型

          String 不是基本数据类型.它定义的为对象


20. 
面向对象语言的特征:

a.        抽象性

b.        封装

c.        继承

d.        多态

 

20.      链表和数组的区别:

               创建数组必须明确说明数组的长度,(即数组中元素的个数),以便在内存中留出一块空间存放所有的数组元素,数组中各数据元素在内存中是顺序存放的.

               创建链表时,不需要给出链表中元素(称为节点)的个数,可以先只创建一个链表头,其他

元素在需要时动态地创建并加入到链表,链表的数据无素在内存中不是连续存放的.

 

 

Jsp方面


1
jsp有哪些内置对象?作用分别是什么?
:   JSP共有以下9种基本内置组件(可与ASP6种内部组件相对应):

request   
用户端请求,此请求会包含来自GET/POST请求的参数

response   网页传回用户端的回应
pageContext   
网页的属性是在这里管理

session   
与请求有关的会话期

application   servlet
正在执行的内容
 
config   servlet
的构架部件

out   用来传送回应的输出   (用来向客户端输出数据)
page   JSP
网页本身

exception   
针对错误网页,未捕捉的例外 (异常
)

2
jsp有哪些动作?作用分别是什么
?
:   JSP共有以下6种基本动作

jsp:include
:在页面被请求的时候引入一个文件。

jsp:useBean
:寻找或者实例化一个JavaBean

jsp:setProperty
:设置JavaBean的属性。

jsp:getProperty
:输出某个JavaBean的属性。

jsp:forward
:把请求转到一个新的页面。


jsp:plugin:根据浏览器类型为Java插件生成OBJECTEMBED标记

3
JSP中动态INCLUDE与静态INCLUDE的区别?

答: 动态INCLUDEjsp:include动作实现

     <jsp:include page="included.jsp" flush="true" />
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数

    
静态INCLUDEinclude伪码实现,定不会检查所含文件的变化,适用于包含静态页面

<%@ include file="included.htm" %>

4
、两种跳转方式分别是什么?有什么区别
?
答: 有两种,分别为:

<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
   
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.

后者完全转向新页面,不会再回来。相当于go to 语句。

Servlet
方面

1
、说一说Servlet的生命周期
?
:   Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。包括加载实例化初始化处理请求以及服务结束。这个生存期由 javax.servlet.Servlet 接口的 init,  service destroy 方法表达。


2
Servlet版本间(忘了问的是哪两个版本了)的不同
?
希望大家补上,谢谢


3
JAVA  Servlet  API forward() redirect() 的区别?

:   前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址

后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址

所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。但在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。

4
Servlet的基本架构

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {

doPost(request,response);
}
}

Jdbc
Jdo方面


1
、可能会让你写一段JdbcOracle的程序,并实现数据查询
.
:   程序如下:

package hello.ant;
import java.sql.*;
public class jdbc
{
String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
String theUser="admin";
String thePw="manager";
Connection conn=null;
Statement stmt;
ResultSet rs=null;
public jdbc()
{
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(dbUrl,theUser,thePw);
stmt=conn.createStatement();
}catch(Exception e){
e.printStackTrace();
}
}
public boolean executeUpdate(String sql)
{
try
{
stmt.executeUpdate(sql);
return true;
}
catch (SQLException e)
{
e.printStackTrace();
return false;
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
rs=stmt.executeQuery(sql);
}
catch (SQLException e)
{
e.printStackTrace();
}
return rs;
}
public void close()
{
try
{
stmt.close();
conn.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
ResultSet rs;
jdbc stmt = new jdbc();           //
定义上面 jdbc 类的对象,并调用其中的查询方法
.
rs=stmt.executeQuery("select * from test");
try{
while (rs.next())
{
System.out.println(rs.getString("id"));
System.out.println(rs.getString("name"));
}
}catch(Exception e)
{
e.printStackTrace();
}
}
}

2
Class.forName的作用?为什么要用
?
答:  调用该访问 返回一个以字符串指定类名类的对象


3
Jdo是什么
?
:   JDOJava对象持久化的新的规范,为Java Data 0bject的简称,也是一个用于存取某种数据仓库中的对象的标准化APIJDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行JDBC只是面向关系数据库(RDBMS ,  JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。


4
、在ORACLE大数据量下的分页解决方法。一般用截取ID方法,还有是三层嵌套方法。
:   一种分页方法

<%
int i=1;
int numPages=14;
String pages = request.getParameter("page") ;
int currentPage = 1;
currentPage=(pages==null)?(1):{Integer.parseInt(pages)}
sql = "select count(*) from tables";
ResultSet rs = DBLink.executeQuery(sql) ;
while(rs.next()) i = rs.getInt(1) ;
int intPageCount=1;
intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);
int nextPage ;
int upPage;
nextPage = currentPage+1;
if (nextPage>=intPageCount) nextPage=intPageCount;
upPage = currentPage-1;
if (upPage<=1) upPage=1;
rs.close();
sql="select * from tables";
rs=DBLink.executeQuery(sql);
i=0;
while((i<numPages*(currentPage-1))&&rs.next()){i++;}
%>
//
输出内容

//
输出翻页连接

合计:<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1">第一页
</a><a
href="List.jsp?page=<%=upPage%>">
上一页
</a>
<%
for(int j=1;j<=intPageCount;j++){
if(currentPage!=j){
%>
<a href="list.jsp?page=<%=j%>">[<%=j%>]</a>
<%
}else{
out.println(j);
}
}
%>
<a href="List.jsp?page=<%=nextPage%>">
下一页</a><a href="List.jsp?page=<%=intPageCount%>">最后页

</a>

Xml
方面


1
xml有哪些解析技术?区别是什么?
:   DOM , SAX , STAX

    DOM:
处理大型文件时其性能下降的非常厉害。这个问题是由DOM树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存, 适合对XML的随机访问 

SAX:不同于DOM(文档驱动型), SAX事件驱动型XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
    STAX: Streaming API for XML (StAX)

2
、你在项目中用到了xml技术的哪些方面?如何实现的
?
:   用到了 数据存贮 信息配置 两方面。

在做数据交换平台时,将数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再对XML文件中还原的相关信息进行处理。

在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。


3
、用jdom解析xml文件时如何解决中文问题?如何解析?
:   看如下代码,用编码方式加以解决

package test;
import java.io.*;
public class DOMTest
{

private String inFile = "c://people.xml";
private String outFile = "c://people.xml";

public static void main(String args[])
{
new DOMTest();
}


public DOMTest()
{
try
{

javax.xml.parsers.DocumentBuilder builder =
javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
org.w3c.dom
.Document doc = builder.newDocument();

org.w3c.dom.Element root = doc.createElement("老师");
org.w3c.dom.Element wang = doc.createElement("
");
org.w3c.dom.Element liu = doc.createElement("
");

wang.appendChild(doc.createTextNode("我是王老师"));
root.appendChild(wang);
doc.appendChild(root);

javax.xml.transform.Transformer transformer =
javax.xml.transform.TransformerFactory.newInstance().newTransformer();

transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");

transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");

transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
                      new 
javax.xml.transform.stream
.StreamResult(outFile));
}
catch (Exception e)
{
System.out.println (e.getMessage());
}

}

}

4
、编程用JAVA解析XML的方式.
:   SAX方式解析XMLXML文件如下:

<?xml version="1.0" encoding="gb2312"?>
<person>
<name>
王小明
</name>
<college>
信息学院
</college>
<telephone>6258113</telephone>
<notes>
,1955年生,博士,95年调入海南大学
</notes>
</person>
事件回调类
SAXHandler.java
import java.io.*;
import java.util.Hashtable;
import org.xml.sax.*;
public class SAXHandler extends HandlerBase
{
private Hashtable table = new Hashtable();
private String currentElement = null;
private String currentValue = null;
public void setTable(Hashtable table)
{
this.table = table;
}
public Hashtable getTable()
{
return table;
}
public void startElement(String tag, AttributeList attrs)
throws SAXException
{
currentElement = tag;
}
public void characters(char[] ch, int start, int length)
throws SAXException
{
currentValue = new String(ch, start, length);
}
public void endElement(String name) throws SAXException
{
if (currentElement.equals(name))
table.put(currentElement, currentValue);
}
}
JSP
内容显示源码
,SaxXml.jsp:
<HTML>
<HEAD>
<TITLE>
剖析XML文件
people.xml</TITLE>
</HEAD>
<BODY>
<%@ page errorPage="ErrPage.jsp"
contentType="text/html;charset=GB2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.Hashtable" %>
<%@ page import="org.w3c.dom.*" %>
<%@ page import="org.xml.sax.*" %>
<%@ page import="javax.xml.parsers.SAXParserFactory" %>
<%@ page import="javax.xml.parsers.SAXParser" %>
<%@ page import="SAXHandler" %>
<%
File file = new File("c://people.xml");
FileReader reader = new FileReader(file);
Parser parser;
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
SAXHandler handler = new SAXHandler();
sp.parse(new InputSource(reader), handler);
Hashtable hashTable = handler.getTable();
out.println("<TABLE BORDER=2><CAPTION>
教师信息表
</CAPTION>");
out.println("<TR><TD>
姓名
</TD>" + "<TD>" +
(String)hashTable.get(new String("name")) + "</TD></TR>");
out.println("<TR><TD>
学院
</TD>" + "<TD>" +
(String)hashTable.get(new String("college"))+"</TD></TR>");
out.println("<TR><TD>
电话
</TD>" + "<TD>" +
(String)hashTable.get(new String("telephone")) + "</TD></TR>");
out.println("<TR><TD>
备注
</TD>" + "<TD>" +
(String)hashTable.get(new String("notes")) + "</TD></TR>");
out.println("</TABLE>");
%>
</BODY>
</HTML>

EJB
方面


1
EJB2.0有哪些内容?分别用在什么场合? EJB2.0EJB1.1的区别?
答:   规范内容包括 Bean提供者应用程序装配者EJB容器EJB配置工具EJB服务提供者系统管理员。这里面,EJB容器是EJB之所以能够运行的核心EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。
JSP,  Servlet,  EJB,  JNDI,  JDBC,  JMS.....

2
EJBJAVA BEAN的区别?
:    Java Bean 可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性Java Bean实际上相当于微软COM模型中的本地进程内COM组件它是不能被跨进程访问的 

Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技

术的,所以EJB可以被远程访问 (跨进程、跨计算机) 。但EJB必须被布署在诸如WebspereWebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理客户通过容器来访问真正的EJB组件

3
EJB的基本架构

:   一个EJB包括三个部分:

Remote Interface 接口的代码
package Beans;
import
javax.ejb.EJBObject;
import java.rmi.RemoteException;

public interface Add  extends EJBObject
{
      //some method declare
}

Home Interface 接口的代码
package Beans;
import
java.rmi.RemoteException;

import
javax.ejb.CreateException;
import
javax.ejb.EJBHome;
public interface AddHome extends EJBHome
{
     //some method declare
}

EJB类的代码
package Beans;
import
java.rmi.RemoteException;

import
javax.ejb.SessionBean;
import
javax.ejb.SessionContext;
public class AddBean implements SessionBean
{
     //some method declare
}

 

4. 会话 BEAN 的属性:

a.     会话Bean是一种作为单用户执行的对象,作为对远程任务请求的响应,容器产生一个Session Bean 的实例,一个 Session Bean 有一个用户,从某种程度上来说,一个 Session Bean 对于服务器来说就代表了它的那个用户.

b.     Session Bean 也能用于事务,它能够更新共享的数据,但它不直接描述这些共享的数据.

c.        Session Bean 的生命周期是相对短暂的,只用当用户保持会话的时候, Session Bean 才是活着的.

 

5. 实体 BEAN 的属性:

a.     Entity Bean 对数据库中的数据提供了一种对象的视图.

b.     多个 Client 能够共享访问同一个 Entity Bean ,多个 Client 也能够同时地共享访问同一个 Entity Bean .

c.     Entity Bean 通过事务的上下文来访问或更新下层的数据.这样,数据的完整性就能够被保证.

d.     Entity Bean 能够存活相对较长的时间,并且状态是持续的.只要数据库存在, Entity Bean 就一直存活,即使EJB容器崩溃了, Entity Bean 也是存活的.

 

 

 

6. STATES SESSION BEAN STATELESS SESSION BEAN 的区别:

        a.  一个具有状态的Session Bean 称为有状态的Session Bean ,当用户终止与 Session Bean 互操作的时候,会话终止了, Bean 也不再拥有状态值.

  b.  无状态的Session Bean 并不掌握它的客户的信息或者状态,用户能够调用Bean的一些方法来完成一些操作.但是,Bean只是在方法调用的时候才知道用户的参数变量,当方法调用完成的时候, Bean不再保持这些参数变量.

 

J2EE  MVC方面

    1
MVC的各个部分都有那些技术来实现?如何实现?
    
:   MVCModelViewController的简写。

"Model" 代表的是应用的业务逻辑 (通过JavaBeanEJB组件实现),

"View" 应用的表示面(由JSP页面产生),

"Controller" 提供应用的处理过程控制(一般是一个Servlet,通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2、应用服务器与WEB SERVER的区别?
希望大家补上,谢谢


3J2EE是什么?

:   Je22Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)

企业级应用模型(enterpriese application model).  在这样的一个应用系统中,可按照功能划分为

不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括 

户层(clietn tier)组件,   web层和组件,  Business层和组件,  企业信息系统(EIS)

4WEB SERVICE名词解释。JSWDL开发包的介绍。JAXPJAXM的解释。SOAPUDDI,WSDL解释。
答:   Web Service描述语言WSDL

      
SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
      
UDDI
的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。



5
BSCS的联系与区别。

 
:  C/S 模式, 即客户端( Clinet)和服务器端 (Server)的两层结构模式, 其特点就是主要业务逻辑集中在客户端,因此,也带来了一定的弊端 :

a.                     首先,在安装,调试,维护,升级方面比较因难,  因为每个客户端的配置不同,所以在配置的时候,必须对每个客户端进行配置.

b.                     由于主要业务逻辑集中在客户端,系统的安全受到影响.

B/S 模式, 即浏览器端(Browers)和服务器端(Server)的结构模式, 其核心是用浏览器(Browers)取代C/S模式中的客户端。其优点是:

a.        首先,在维护,升级的时候,只须对服务器端进行维护和升能就可以了。

b.        由于客户端就是浏览器,有利于系统的安全。


6
STRUTS的应用(STRUTS架构)
答:   Struts是采用Java Servlet / JavaServer Pages技术,开发Web应用程序的开放源码的framework 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:

   
. 包含一个controller servlet,能将用户的请求发送到相应的Action对象。

   
. JSP自由tag,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。

   
. 提供了一系列实用对象XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。


设计模式方面

1
、开发中都用到了那些设计模式?用在什么场合?
答:   每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需再重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用简单工厂模式等。


2
UML方面

答: 标准建模语言UML 用例图,  静态图 ( 包括 类图对象图 包图 ),  行为图,  交互图

( 顺序图, 合作图 ),  实现图,

JavaScript
方面


1
、如何校验数字型?
var re = /^/d{1,8}$|/./d{1,2}$/;           //
定义一个变量,初值为不能包含的字符

var str = document.form1.all(i).value;    
 // 定义一个变量,包含页面中的所有字符。
var r = str.
match(re);               // 比较,看文档变量中是否包含有那些特殊字符。
if (r == null)
{
sign=-4;
break;
}
else{
document.form1.all(i).value=parseFloat(str);   
 //
转型
}
CORBA
方面

1
CORBA是什么?用途是什么?
答:  CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:

 a. 
不同的程序设计语言书写

 b.  
不同的进程中运行

 c. 
不同的操作系统开发



LINUX
方面

1
LINUX下线程,GDI类的解释。
答:  LINUX实现的就是基于核心轻量级进程"一对一"线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

GDI
类为图像设备编程接口类库。

 

数据库方面

 

1.写一个 SQL Server 中的存储过程:

 

以下为一个带有一个输入参数Vdeptno ,返回部门为Vdeptnor 的所有职员的信息.

 

create procedure Emp_dept

   @Vdeptno number(2) AS

begin

   select * from emp where deptno=@Vdeptno

end

 

2.写一个 Oracle 中的存储过程:

 

IN参数的过程

create or replace procedure addnew(dno IN number,

                                   name IN varchar2,

                                  location IN varchar2)IS

begin

insert into dept values(dno,name,location);

dbms_output.put_line(‘1 record inserted’);

          end;

 

      带OUT参数的过程

         create or replace procedure getsal(name IN varchar2,

                                          salary OUT number)AS

         begin

select sal into salary from emp where ename=name;

         end;

 

HTTP方面

1. HTTP 的请求过程:

        当点击一个链接时,浏览器首先找到站点的IP地址,这是通过DNS来实现的,在找到IP地址后就可以建立TCP连接了,连接建立后我们就可以发送请求了.但这个请求是什么样子的呢 ? 我们现在假设点击了一个从 www.webmonkey.com/HTML/96/47/Index2A , HTML 点击了WWW.GRIPY.ORG/MATTARG/  这时浏览器会发出下面的请求:

Get/MATTARG/HTML/1.0

User-Agent: Mozilla/2.0(macitosh;1;PPC)

Accept: text/html: */*

Cookie: name = value

Refetet: http://www.webmonkey.com/html/96/47/index2a.html

Host: www.gtippy.org

   第一行称为请求,它告诉服务器从MATTMARG 取得文件,这是的目录一般是要加 / 的,下面几行通知服务器你所使用的浏览器是什么类型,你所接收的数据是什么类型,如果你以前访问过这个站点,站点可能向你发送了Cookie ,如果你已经有了一个这样的 Cookie ,浏览器会将这个 Cookie 返回给服务器, referer 行通知服务器用户从哪一页到达此页的.

         下面服务器就要返回文件了,每次服务器返回文件时,都要返回一个 Http/1.0 响应,同进带有状态码,在此之后是述内部的头信息,下面就是一个响应:

HTTP/1.0 200 Pound

Data: Mon 10 Feb 1997 23:48:22 GMT

Server: Apache/1.1 1 Hot&ired/1.0

Content-type: text/html

Last-Moditied: Tues,11 Feb 1997 22:45:55 GMT

         不同的数据可能返回不同的Content-type ,因此不同的内容需要不同的 Content-type ,因此有时候这个过程是很慢的。

 

 

JAVA培训资料
一、Java语言
   1、面向对象的三个基本特征
   2、方法重载和方法重写的概念和区别
   3、接口和内部类、抽象类的特性
   4、文件读写的基本类
   **5、串行化的注意事项以及如何实现串行化
   6、线程的基本概念、线程的基本状态以及状态之间的关系
   7、线程的同步、如何实现线程的同步
   8、几种常用的数据结构及内部实现原理。
   9、Socket通信(TCP、UDP区别及Java实现方式)
 **10、Java的事件委托机制和垃圾回收机制
 11、JDBC调用数据库的基本步骤
 **12、解析XML文件的几种方式和区别
 13、Java四种基本权限的定义
 14、Java的国际化
二、JSP
   1、至少要能说出7个隐含对象以及他们的区别
 ** 2、forward 和redirect的区别
   3、JSP的常用指令
三、servlet
   1、什么情况下调用doGet()和doPost()?
   2、servlet的init()方法和service()方法的区别
   3、servlet的生命周期
   4、如何现实servlet的单线程模式
   5、servlet的配置
   6、四种会话跟踪技术
四、EJB
   **1、EJB容器提供的服务
       主要提供声明周期管理、代码产生、持续性管理、安全、事务管理、锁和并发行管理等服务。
   2、EJB的角色和三个对象
       EJB角色主要包括Bean开发者 应用组装者 部署者 系统管理员 EJB容器提供者 EJB服务器提供者
       三个对象是Remote(Local)接口、Home(LocalHome)接口,Bean类
   2、EJB的几种类型
       会话(Session)Bean ,实体(Entity)Bean 消息驱动的(Message Driven)Bean
       会话Bean又可分为有状态(Stateful)和无状态(Stateless)两种
       实体Bean可分为Bean管理的持续性(BMP)和容器管理的持续性(CMP)两种
   3、bean 实例的生命周期
       对于Stateless Session Bean、Entity Bean、Message Driven Bean一般存在缓冲池管理,而对于Entity Bean和Statefull Session Bean存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove等过程,对于存在缓冲池管理的Bean,在create之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache管理的Bean则通过激活和去激活机制保持Bean的状态并限制内存中实例数量。
   4、激活机制
       以Statefull Session Bean 为例:其Cache大小决定了内存中可以同时存在的Bean实例的数量,根据MRU或NRU算法,实例在激活和去激活状态之间迁移,激活机制是当客户端调用某个EJB实例业务方法时,如果对应EJB Object发现自己没有绑定对应的Bean实例则从其去激活Bean存储中(通过序列化机制存储实例)回复(激活)此实例。状态变迁前会调用对应的ejbActive和ejbPassivate方法。
   5、remote接口和home接口主要作用
       remote接口定义了业务方法,用于EJB客户端调用业务方法
       home接口是EJB工厂用于创建和移除查找EJB实例
   6、客服端调用EJB对象的几个基本步骤
一、设置JNDI服务工厂以及JNDI服务地址系统属性
二、查找Home接口
三、从Home接口调用Create方法创建Remote接口
四、通过Remote接口调用其业务方法
五、数据库
   1、存储过程的编写
   2、基本的SQL语句
六、weblogic
1、 如何给weblogic指定大小的内存?
在启动Weblogic的脚本中(位于所在Domian对应服务器目录下的startServerName),增加set MEM_ARGS=-Xms32m -Xmx200m,可以调整最小内存为32M,最大200M
2、 如何设定的weblogic的热启动模式(开发模式)与产品发布模式?
可以在管理控制台中修改对应服务器的启动模式为开发或产品模式之一。或者修改服务的启动文件或者commenv文件,增加set PRODUCTION_MODE=true。
3、 如何启动时不需输入用户名与密码?
修改服务启动文件,增加 WLS_USER和WLS_PW项。也可以在boot.properties文件中增加加密过的用户名和密码.
4、 在weblogic管理制台中对一个应用域(或者说是一个网站,Domain)进行jms及ejb或连接池等相关信息进行配置后,实际保存在什么文件中?
保存在此Domain的config.xml文件中,它是服务器的核心配置文件。
5、 说说weblogic中一个Domain的缺省目录结构?比如要将一个简单的helloWorld.jsp放入何目录下,然的在浏览器上就可打入http://主机:端口号//helloword.jsp就可以看到运行结果了? 又比如这其中用到了一个自己写的javaBean该如何办?
Domain目录/服务器目录/applications,将应用目录放在此目录下将可以作为应用访问,如果是Web应用,应用目录需要满足Web应用目录要求,jsp文件可以直接放在应用目录中,Javabean需要放在应用目录的WEB-INF目录的classes目录中,设置服务器的缺省应用将可以实现在浏览器上无需输入应用名。
6、 如何查看在weblogic中已经发布的EJB?
可以使用管理控制台,在它的Deployment中可以查看所有已发布的EJB
7、 如何在weblogic中进行ssl配置与客户端的认证配置或说说j2ee(标准)进行ssl的配置
缺省安装中使用DemoIdentity.jksDemoTrust.jks  KeyStore实现SSL,需要配置服务器使用Enable SSL,配置其端口,在产品模式下需要从CA获取私有密钥和数字证书,创建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。
   8、在weblogic中发布ejb需涉及到哪些配置文件
不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMP实体Bean一般还需要weblogic-cmp-rdbms-jar.xml
   9、EJB需直接实现它的业务接口或Home接口吗,请简述理由.
远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。
 10、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。
 11、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
     Session Facade Pattern:使用SessionBean访问EntityBean
Message Facade Pattern:实现异步调用
EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问
Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性
Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性
Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性
EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性

 

 

答案:
 
原创粉丝点击