java笔试题-选择题编程题集锦

一、选择题(每题2分)

1.下列哪些情况可以终止当前线程的运行?

a. 抛出一个例外时。

b. 当该线程调用sleep()方法时。

c. 当创建一个新线程时。

d. 当一个优先级高的线程进入就绪状态时。

答案:ABD

2. 下面哪些为构造函数的特性定义         

a. 在类中声明构造函数时,名称应该与类名相同

    b. 具有重载特性,可以建立多个相同的名称

    c. 使用类建立新对象时,会自动执行构造函数,因此在构造函数内设定变量的初值或进行内存分配

d. 以上都是

答案:ABCD

3. 关于异常处理机制的叙述哪些正确     

    a. catch部分捕捉到异常情况时,才会执行finally部分

    b. 当try区段的程序发生异常时,才会执行catch区段的程序

    c. 不论程序是否发生错误及捕捉到异常情况,都会执行finally部分

d. 以上都是

答案:BC

4. 下列关于接口的叙述中哪些是错误的         

    a. 接口中的数据必须设定初值

    b. 接口中无法声明一般方法

    c. 接口可以声明引用

d. 以上都正确

答案:BC

5. Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是对的?

A. 重写是父类与子类之间多态性的一种表现。

B. 重写是一个类中多态性的一种表现。

C. 重载是一个类中多态性的一种表现。

D. 重载是父类与子类之间多态性的一种表现。

 

6.在Struts应用的视图中包含哪些组件?

A. JSP

B. Servlet

C. ActionServlet

D. Action

E. 代表业务逻辑或业务数据的JavaBean

F. EJB

G. 客户化标签

答案:A,G

7. struts框架中,关于FormBean,下列哪些说法是正确的:       
       A  FormBean是一种数据bean,主要用来封装表单提交上来的数据,并把这些数据传递给Action
      B 在FormBean中可以对页面上传递来的参数进行一下格式上的验证,这种验证是一种客户端的验证
       C 用户每次提交表单,都会产生一个新的FormBean实例
      D 动态FormBean不能进行验证操作

答案:A

8.以下哪些不是Hibernate的检索方式:

A、导航对象图检索   

B、OID检索      

C、ORM检索

D、QBC检索            

E、本地SQL检索 

F、HQL检索

答案:C

9.以下代码定义了一个变量,如何输出这个变量的值?

<bean:define id="stringBean" value=“helloWorld“/>

(A)<bean:write name=“stringBean"/>

(B) <bean:write name=“helloWorld"/>

(C)<%= stringBean%>

(D)<% String myBean=(String)pageContext.getAttribute(“stringBean”,PageContext.PAGE_SCOPE);

%>

<%=myBean%>

答案: A,D

10.EJB有哪些对象?

  1. Remote(Local)接口
  2. Home(LocalHome)接口
  3. Bean类
  4. Enterprise Bean Provider

答案:A B C

11方法可以进行servlet的调试?(A B C D E)

A、使用打印语句; 在桌面计算机上运行服务器

B、使用Apache Log4J

C、使用IDE集成的调试器

D、直接查看HTML源码

E、返回错误页面给客户

12、下面关于servlet的功用说法正确的有哪些?(A B C D E)

    A、读取客户程序发送来的显式数据

B、读取客户程序发送来的隐式数据

C、生成相应的结果

D、发送显式的数据给客户程序

E、发送隐式的数据给客户程序

13、下面关于session的用法哪些是错误的?(A B D)

    A、HttpSession session = new HttpSession();

    B、String haha = session.getParameter(“haha”);

    C、session.removeAttribute(“haha”);

    D、session. setAttribute(“haha”);

14、关于<jsp:include page="Relative URL" />说法正确的有哪些?(A B C)

A、URL的输出在请求时被插入到JSP页面中

B、不能含有影响整个页面的JSP内容

C、被包含文件改变后不需更改使用它的页面

D、被包含文件更改后,需要手动地更新使用它的页面

15、关于bean的说法正确的有哪些?(B D)

    A、具备一个零参数(空)的构造函数(不是必须的)

B、不应该有公开的实例变量(字段)

C、所有的属性都必须通过getXxx和setXxx方法来访问

D、布尔型的属性使用isXxx,而非getXxx

16、下面关于MVC说法错误的有哪些?(A C)

    A、必须使用复杂的框架

    B、使用内建的RequestDispatcher能够很好地实现MVC

    C、MVC影响整个系统的设计

    D、我们可以用MVC来处理单个请求

17、下面的标签中哪些是JSTL标签?(A B C)

    A、<c:out…/>

    B、<c:set…/>

    C、<c:if…/>

    D、<c:errors…/>

18、使用Junit测试equals()必须根据哪些属性来进行?(A B C)

    A、反身性

    B、对称性

    C、传递性

    D、一致性

19、以下哪些说法是正确的?C

(A)每个HTTP请求对应一个单独的ActionServlet实例

(B)对于每个请求访问HelloAction的HTTP请求,Struts框架会创建一个单独的HelloAction实例。

(C)每个子应用对应一个单独的RequestProcessor实例

(D)每个子应用对应一个单独的web.xml文件

20、ActionForm Bean对象是由谁创建的?C

(A) <html:form>标签处理类

(B) ActionServlet

(C) RequestProcessor

(D) Action  

21、struts框架,错误的是,面那些说法正确?        
   A Struts中无法完成上传功能
   B Struts框架基于MVC模式
   C Struts框架容易引起流程复杂、结构不清晰等问题
   D Struts可以有效地降低项目的类文件数目

答案:C

                                                                                                                                  

 

四、编程题1、2题各15分,3题20分)

1、利用异常处理机制的方法来制作一个代码程序段。输入I am 007”时,打印亲爱的007,您好;输入其他字符串时,打印对不起,请下次进入,然后程序结束

import java.io.*;

 

public class KB

{

       public static String scan()

       {

              String str="";

              try

              {

                     BufferedReader buf=new BufferedReader(new InputStreamReader(System.in));

                     str=buf.readLine();

              }

              catch(Exception e){}

              return str;

       }

}

 

public class MyExceptionTest {

       public static void exceptionThrow() throws MyException1 {

              throw new MyException1();

       }

       public static void anotherThrow() throws MyException2 {        

              throw new MyException2();

       }

       public static void main(String args[]) {

              try {

                     String str=KB.scan();

                     if(str.equals("I am 007"))

                            exceptionThrow();

                     else

                            anotherThrow();

                    

              } catch (MyException1 e1) {

                     e1.printStackTrace();

              } catch (MyException2 e2) {

                     e2.printStackTrace();

              }

       }

}

 

class MyException1 extends Exception {

       MyException1() {

              super("亲爱的007,您好");

       }

}

 

class MyException2 extends Exception {

       MyException2() {

              super("对不起,请下次进入");

       }

}

2、使用同步函数实现卖100张票。要求写两个类(主函数类:MainTest,线程类:ThreadTest,线程类实现Runnable接口。

public class MainTest {

       public static void main(String args[])

       {

              Thread t=new Thread(new ThreadTest());

              t.start();

       }

}

class ThreadTest implements Runnable{

 

       private int tickets = 100;

       public void run() {

              while(true)

              {

                     sale();

              }

       }

       public synchronized void sale()

       {

              if(tickets>0)

              {

                     try{

                            Thread.sleep(10);                       

                     }catch(Exception e)

                     {

                            e.printStackTrace();

                     }

                     System.out.println(Thread.currentThread().getName()+" is saling ticket "+tickets--);

              }

       }

}

3、请完成一个选课系统里注册模块的程序设计:

条件:

学生的持久化类的属性有:id,username,password,sex,major,class,

课程的持久化类的属性有:id,coursename,classroom,coursetime,

JSP页面为:reg.jsp,regok.jsp,regbad.jsp;

完成学生与课程的持久化类的映射文件,设置成级连保存,延迟检索;

写出与注册页面相对应的的Action和ActionForm;要求ActionForm要对表单中的数据格式进行验证;Action要对学生的用户名进行唯一验证;如果没有重复的用户名就可以注册成功,否则失败;

写出检测用户名是否存在的方法;

根据session接口写出相应的方法;

Course.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.Course" table="COURSES">

        <id name="id" type="integer">

            <column name="ID" />

            <generator class="increment" />

        </id>

        <property name="coursename" type="string">

            <column name="COURSENAME" length="45" not-null="true" />

        </property>

        <property name="coursetime" type="string">

            <column name="COURSETIME" length="45" not-null="true" />

        </property>

        <property name="classroom" type="string">

            <column name="CLASSROOM" length="45" not-null="true" />

        </property>

        <set name="stu_cou" cascade="save-update" lazy="true" inverse="true">

            <key>

                <column name="COU_ID" not-null="true" />

            </key>

            <one-to-many class="com.hibernate.StudentCourse" />

        </set>

    </class>

</hibernate-mapping>

Student.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.Student" table="STUDENTS">

        <id name="id" type="integer">

            <column name="ID" />

            <generator class="increment" />

        </id>

        <property name="username" type="string">

            <column name="username" length="45" not-null="true" />

        </property>

        <property name="password" type="string">

            <column name="password" length="45" not-null="true" />

        </property>

         <property name="sex" type="string">

            <column name="SEX" length="45" not-null="true" />

        </property>

        <property name="stuclass" type="string">

            <column name="STUCLASS" not-null="true" />

        </property>

        <property name="major" type="string">

            <column name="major" length="45" not-null="true" />

        </property>

        <set name="stu_cou" cascade="save-update" lazy="true" inverse="true">

            <key>

                <column name="STU_ID" not-null="true" />

            </key>

            <one-to-many class="com.hibernate.StudentCourse" />

        </set>

    </class>

</hibernate-mapping>

StudentCourse.hbm.xml

<hibernate-mapping>

    <class name="com.hibernate.StudentCourse" table="student_course">

        <id name="id" type="integer">

            <column name="ID" />

            <generator class="increment" />

        </id>

        <many-to-one name="course" class="com.hibernate.Course">

            <column name="COU_ID" not-null="true" />

        </many-to-one>

        <many-to-one name="student" class="com.hibernate.Student">

            <column name="STU_ID" not-null="true" />

        </many-to-one>

    </class>

</hibernate-mapping>

struts-config.xml

<struts-config>

  <data-sources />

       <form-beans>

              <form-bean name="RegFormBean"

                               type="com.formbean.RegFormBean"/>

       </form-beans>

  <global-exceptions />

  <global-forwards />

  <action-mappings >

  

    <action path="/actions/reg"

                  type="com.action.RegAction"

                  name="RegFormBean"

                  input="/reg.jsp">

      <forward name="bad"

                    path="/regbad.jsp" />               

      <forward name="success"

                    path="/regok.jsp" />

    </action>

  </action-mappings>

  <message-resources parameter="MessageResource"

                                   null="false"/>

</struts-config>

 

 

4Java编程,打印昨天的当前时刻

public class YesterdayCurrent{

  public void main(String[] args){

  Calendar cal = Calendar.getInstance();

  cal.add(Calendar.DATE, -1);

  System.out.println(cal.getTime());

  }

}

5.文件读写,实现一个计数器

  public int getNum(){

      int i = -1;

      try{

        String stri="";

        BufferedReader in = new BufferedReader(new FileReader(f));

        while((stri=in.readLine())!=null){

          i = Integer.parseInt(stri.trim());

        }

        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();

      }

  }

6. 指出下面程序的运行结果:

class A{

  static{

      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 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造

7.写一个Singleton模式的例子

public class Singleton{

  private static Singleton single = new Singleton();

  private Singleton(){}

  public Singleton getInstance(){

    return single;

  }

}

8 删除表的重复记录

     如果记录完全相同才算重复记录,那么: (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)

posted on 2009-01-05 22:28  linzheng  阅读(15705)  评论(1编辑  收藏  举报

导航