软件工程师( Java程序设计)阶段测试题

14年前

软件工程师( Java程序设计)阶段测试题

一、选择题,共40分(有多选):

1.           名为HelloWorld.javaJava应用程序如下:

public class HelloWorld {

    public static void main(String args[]){

        System.out.println("Hello World!");  

    }

}

(编译的时候不区分大小写(是在WINDOW引导下执行的),但是执行的时候必须要和文件名相同(是在JAVA虚拟机引导下执行的))

 

将这个程序放在C:\Test下,然后在命令行窗口中,进入到C:\Test路径执行如下指令:

javac helloworld.java将得到( B)结果。

A.       编译出错。

B.       编译成功,生成名为HelloWorld.class的文件。

C.       编译成功,生成名为helloworld.class的文件。

D.       找不到名为helloworld.java的文件。

 

2.           Java程序被执行前,需要编译成.class文件。.class文件中保存的是(   B  

A、二进制的本机代码

B、字节码

C、原始代码

D、原始代码与字节码

 

3.           下面的程序名为Student.java

public class Student{

private String name;

public Student(String s_name)    //1

{

name = s_name;      //2

}

 

public static void main(String args[])

{

Student s = new Student();    //3,,。。。。构造器缺少参数

}

}

使用如下指令编译:javac Student.java。将会得到的结果(B )。

A.       将会顺利通过编译,并将产生一个Student.class的类文件。

B.       编译时在//3处出错。

C.        编译时在//2处出错。

D.       编译时在//1处出错。

 

4.           当看到以下异常信息的时候,应该检查(  B D 

Exception in thread "main" java.lang.NoClassDefFoundError: AnyClass

AAnyClass.java是否存在

BCLASSPATH环境变量是否正确

CPATH环境变量是否正确

DAnyClass.class是否存在

 

5.           在面向对象技术中,对外部世界隐藏内部数据,只通过公共方法访问内部数据,这被称为(   A  

A、封装

B、多态

C、继承

D、动态绑定

 

6.           关于下面的类描述中正确的是( C )。

class Test {                                             // 1

void test(int i) {        (构造器是没有返回值的,也就是不带VOID                             // 2

System.out.println("I am an int.");                   // 3

}                                                 // 4

void test(String s) {                                  // 5

System.out.println("I am a string.");                 // 6

}                                                 // 7

// 8

public static void main(String args[]) {                   // 9

Test t=new Test();                                // 10

char ch='y';                                      // 11

t.test(ch);                                        // 12

}                                                  // 13

}                                                      // 14

 

A.       编译出错

B.       编译通过,运行出错

C.       编译通过,运行时输出“I am an int

D.       编译通过,运行时输出“I am a string

 

 

7.           ListSet的正确描述是(   C   

A、他们都是Collection的子类。(是子接口)

BList不可以包含重复元素(可以重复)

CSet不可以包含重复元素

D、里面的元素按照Hash Code排序

 

 

8.           关于下述程序:

public class Test3{

public static void main(String[] agrs) {

byte b = 2,e =3;       //1

byte f = b+e;         //2(做变量的运算时,系统会自动转换为int型,所以要求定义变量类型要大于int才行)

System.out.println(f);  //3

}

}

描述正确的是( C )。

A.       编译通过,运行时打印出5

B.       编译通过,运行时打印出23

C.       编译不通过,在//2处有错误,因为此处f必须是一个int类型的变量。

D.       编译不通过,在//1处有错误,不能这样定义变量

 

9.           运行以下代码,会在控制台输出( C    

int x = 5;

int y = 5;

System.out.println((x++ + ++y)*(--x + y--));X++先运算在自加,++X先自加在运算)

 

A99

B96

C121

D120

 

10.       Java中,关于让垃圾回收器强制回收对象的说法中,正确的是( A )。

A垃圾回收不能强制

B. 调用System.gc()方法

C. 调用System.gc()方法,并且将需要回收的对象引用作为参数传递给这个方法

D. 调用Runtime.gc()方法

 

11.       运行以下代码,会在控制台输出(  A 

int x = 2;

int y = 3;

System.out.println(x/y);(默认是int)

 

A0

B1

C0.67

D0.66666667

 

12.       可以通过实现Comparable让一个类所产生的对象能够被排序,那么对Comparable接口的正确描述是(  B  C 

AString类没有实现Comparable接口。

BComparable里面的排序规则可以随意定义

C、如果把没有实现Comparable接口的类所产生的对象放置到SortedSetSortedMap中会产生异常。

D、对中文字符,Java能够按字典顺序排序

 

13.       关于下述程序:

public class Test4{

public static void main(String[] agrs){

double x = 1.234;                //1

double y = 2;                       //2

System.out.println(""+x+y);   //3(字符串和任何形式的数运算都会变成字符串)

System.out.println(x+y+"");   //4

}

}

描述正确的是D  )。

A.       编译出错。

B.       编译通过,执行的时候在//2处报错。

C.       编译通过,执行时在//3处打印出3.234,在//4处打印出3.234

D.       编译通过,执行时在//3处打印出1.2342.0,在//4处打印出3.234//在这是字符串)。

 

14.       声明Java类的语法是:

修饰符 class 类名

以下那些修饰符可以使用到Java类声明中(   B  

Afinally

Bfinal

Cstatic

Dprivate

 

15.       方法重载(overload)的条件是( A C 

A、参数类型不同

B、参数名称不同

C、参数数量不同

D、返回值类型不同

 

16.       下述程序:

public class Test9{

static int i = 1;

static{

i++;   (静态属性,代码块在初始化时只执行一次)

}

public Test9(){

i++;

}

public static void main(String[] args){

Test9 t1 = new Test9();

System.out.println(t1.i); //1

Test9 t2 = new Test9();

System.out.println(t2.i); //2

}

}

编译运行后在//1//2处分别打印出(c)。

A.   22           B.  33           C.  34           D.  43

 

17.       关于下述三个接口:

public interface IA{

public void methodA();

}

 

public interface IB{

public void methodB();

}

 

public interface IC extends IA,IB{

public void methodA();

}

正确的是(D)。

A.       接口IC不能通过编译,因为它继承了两个接口。(类继承类是单一的,类实现接口可以多个,接口可以继承多个接口)

B.       接口IC不能通过编译,因为它定义了一个和IA中一样的方法methodA()

C.       接口IC不能通过编译,因为它继承了两个接口,并且还定义了一个和IA一样的methodA()方法。

D.       接口IC能够顺利通过编译。

 

18.       下述语句执行结果为( A B )。

int[] arr = new int[10];

A.   arr[0] 0                          B.  arr[9] 0 

C.   arr[10]0                          D.  arr[0] null

(数组在创建的时候,默认值是对应数据类型的默认值int 0,,…double 0.0  booleanfalse  char\u0000  引用类型默认是NULL.

19.       关于breakcontinue语句,下面说法错误的有(A D )。

A.       break只能用于循环语句中。

B.       continue只能用于循环语句中。

C.       在循环语句中,break语句将终止循环;而continue是略过当前循环中剩余的语句进入下一次循环。

D.       在循环语句中,continue语句将终止循环;而break是略过当前循环中剩余的语句进入下一次循环。

 

20.       下面标识符合法的有( ABD

A.   IAMAClass           B.  $byte           C.  const(是个关键字)         D.  _year

 

21.       关于JAVA垃圾回收机制的哪些叙述是对的?(B)    ?????????????

A.       程序开发者必须自己创建一个线程进行内存释放的工作。

B.       垃圾回收机制将检查并释放不再使用的内存。

C.       JAVA允许程序开发者明确指定并立即释放该内存。

D.       能够在期望的时间释放被JAVA对象使用的内存。

 

22.  取出字符串String target = "IbmSunJavaBeaWeblogicOracle..."中的子串“Java”的语句是:( B 

A.   target.substring(5,10);             B.  target.substring(6,10);(包含前面的数字内容不包含后面的数字指示内容)

C.   target.substring(5,9);              D.  target.substring(6,9);

 

23.       下列描述正确的是:(  D ???????????????????????

A.       hashCode()返回是对象在内存唯一的标识,对象不同,hashCode()返回值一定不同。

B.       hashCode()方法可以重写,但重写的逻辑要和equals()保持一致性(不必要保持一致)。

C.       语句System.out.println("java"=="java");打印出的结果为“false”。(“true”)

D.       HashSet容器在存放某一类的对象时,改变该类的hashCode()方法可能会影响到HashSet容器的效率

 

24.       属于Collection容器的方法是:( A C 

A.   iterator        B.  hasNextElement      C.  toArray     D.  next

 

25.       下面的程序会有编译错误,更正的方法为:( C 

class OuterClass {

  public void f() {

    String s1 = "inner";

    class InnerClass {……(内部类访问局部变量时,要求局部变量必须是final型的,但是能够正常访问全局变量)

      public void g() {

        System.out.println(s1);

      }

    }

  }

}

A.   将变量s1声明为static               B.  将变量s1声明为public

C.   将变量s1声明为final               

D.   将内部类InnerClass声明为static(静态类是不能访问任何外部变量)

 

26.       在以下的接口定义代码中

public interface AnyInterface {

    public int a = 6;(默认是final static

}

a 的正确描述是(  B C

A、该定义方式不合法

B、是成员变量,也就是属性

C、是最终变量,不可以修改

D、是类变量,也就是静态变量

 

27.       运行以下代码之后,控制台输出结果是( B

String s1 = "abc";

String s2 = "abc";

String s3 = new String("abc");

System.out.print((s1 == s2) + "");

System.out.print((s1 == s3) + "");

System.out.print(s1.equals(s2) + "");

System.out.println(s1.equals(s3));

 

Atruetruetruetrue

Btruefalsetruetrue

Ctruetruefalsefalse

Dtruefalsetruefalse

 

28.       Java提供了两类I/O流,也就是字节流和字符流.以下选项正确的是(  B    

A、字节流是建立在字符流的基础上的。(反过来)

B、字节流每个字节的长度为8位。

CPrintWriter属于字节流。(字符流)

DSystem类的out属性不属于流类。

 

29.       运行以下代码,在控制台会输出(  D 

System.out.println("中国的英语单词是china".substring(1, 10));

A、中国的英语单词是ch

B、中国的英语单词是c

C、国的英语单

D国的英语单词是ch

 

30.       如果在一个trycatchfinally组成的异常处理结构中,trycatchfinally每一个代码段都存在return语句,且代码没有产生异常。那么被执行的return语句是(   D

Atry代码段中的return语句

Bcatch代码段中的return语句

Cfinally代码段中的return语句

Dtryfinally代码段中的return语句

 

31.       以下对抽象类正确的描述是(   BD

A、抽象类一定存在抽象方法

B、存在抽象方法的一定是抽象类

C、抽象类可以被实例化

D、抽象类不可以被实例化

 

32.       break continue语句的正确解释是(  BD 

Abreak continue 只能用在循环语句中

Bbreak continue 可以与标签一起使用

Cbreak 用来结束所有包含它的循环语句(只结束包含它的那一层循环)

Dcontinue 会放弃执行后续代码,继续执行循环

 

33.       sleepwait语句的作用是(   D 

Asleep语句精确地将当前线程暂时停止。

(线程的执行与停止是不能精确控制的,线程是由CPU控制的)

Bwait语句精确地将当前线程暂时停止。

C、可以通过notify语句停止sleep状态。

D、可以通过notify语句停止wait状态。

 

34.       对接口的正确描述包括(  C 

A、接口之间可以存在继承关系,但是每个接口只能有一个父接口

B、接口里面可以定义私有方法(只能是public的方法)

C、接口里面可以定义常量

D、一个类只可以实现一个接口

 

35.       对变量成功进行强制类型转换的前提条件是(  A C

A、转换之后的类型是对象直接或间接父类类型

B、转换之后的类型是对象直接或间接子类类型

C、转换之后的类型是对象直接或间接实现的接口类型

D、可以转换为任意类型

 

36.       标准的对象序列化过程中,序列化内容包括( B   (序列化过程不包括方法, static的不能被序列化  )

A、静态属性

B、成员属性

C、静态方法

D、成员方法

 

37.       下面的程序的输出结果是:(  A (静态优先于非静态,父类优先于子类)

class SuperClass {

  static {

    System.out.println("SuperClass");

  }

  SuperClass() {

    System.out.println("SuperClass()");

  }

  public static void main(String[] args) {

    SubClass sc = new SubClass();

  }

}

class SubClass extends SuperClass {

  static {

    System.out.println("SubClass");

  }

  SubClass() {

    System.out.println("SubClass()");

  }

}

A.       SuperClass/SubClass/SuperClass()/SubClass()/

B.       SuperClass/ SuperClass()/SubClass /SubClass()/

C.       SubClass / SuperClass / SubClass()/SuperClass()/

D.       SubClass/ SubClass()/SuperClass / SuperClass()/

 

38.       下面程序的运行结果是:(  C

class SuperClass {

  public void f() {

    System.out.print("SuperClass.f()/");

  }

}

class SubClass extends SuperClass {

  public void f() {

   System.out.print("SubClass.f()/");

 }

}

class ThirdClass {

  public void g(SuperClass arg) {

    System.out.print("g(SuperClass)/");

    arg.f();

  }

  public void g(SubClass arg) {

    System.out.print("g(SubClass)/");

    arg.f();

  }

  public static void main(String[] args) {

    ThirdClass tc = new ThirdClass();

    SuperClass sc = new SubClass();

    tc.g(sc);

  }

}

A.   g(SubClass)/SubClass.f()/           B.  g(SuperClass)/SuperClass.f()/

C.   g(SuperClass)/SubClass.f()/         D.  g(SubClass)/SuperClass.f()/

 

39.       已有接口定义:

package test;

public interface Role {

  public void action() throws java.io.IOException;

}

下面的类定义不会有编译错误的是:(A  B C )

A.        

package test;

public class A implements Role {

  public void action() throws java.io.FileNotFoundException {}

}

B.        

package test;

public class B implements Role {

  public void action() throws java.io.IOException {}

}

       C

package test;

public class C implements Role {

  public void action() {};

}

       D

package test;

public class D implements Role {

  public void action() throws Exception {}(子类的异常要小于等于父类)

}

 

40.       下面的程序输出的结果为:(D)

public class Test {

  public static void main(String[] args) {

    StringBuffer buffer = new StringBuffer();

    int value = 18;

    do {

      int temp = value & 0x07;

      buffer.append(temp);append是连接方法)

    }while((value>>>=3)!=0);

    System.out.println(buffer.reverse());reverse是反转方法)

  }

}

A.   24              B.  23              C.  25              D.  22

 

二、数据库(共18分)

1oraclecharvarchar2数据类型有什么区别?

有数据”test”分别存放到char(10)varchar2(10)类型的字段中,其存储长度及类型有何区别?2分。

Char 是定长字符数据  varchar2是可变长字符数据

Char(10)是固定了10个长度,后面不满时会补满,而varchar2(10)的长度是可变的,后面不满可以略去

       test4个字符,当它存放到char(10)时,会补满10位,而varchar2(10)时只用4位)

2、在scott用户中建立表test_table,表中包含如下字段

字段名称 数据类型 要求

id         Number 主键

name      Varchar2 非空

age        Number

sex        Varchar2

salary     Number

create table test_table(

id     number(10),

name  varchar2(10),

age    number(10),

sex    varchar2(10),

salary  number(10)  

)

a、简要写出在scott用户中建立序列t_sque,要求从100开始,步长为1,最小值10,最大值99999.

Create  sequence t_sque(

Increment  by  1

Start      with 100

Minvalue      10

Maxvalue      99999;

)

 

b、写出SQL语句,向test_table表中插入一条记录,其中ID字段的值来自序列t_sque

Insert into test_table value(t_sque.nextval…)

 

c、用SQL语句创建个一个视图test_vw,这个视图用来显示test_table表中id>1000的记录。

Create view test_vw as where id>1000;

 

3、参见如下表结构

出版社:

出版社代码 char(2),

出版社名称 varchar2(32)

 

图书:

图书编号 char(8),

图书名称 varchar2(128),

出版社代码 char(2),

作者代号 char(4),

图书简介 varchar2(128)

 

作者:

作者代号 char(4),

作者名称 varchar2(10),

性别 char(1),

年龄 number(3),

文学方向 varchar2(64)

 

获奖名单:

获奖日期 date,

获奖人员 char(4)  --注:获奖人员即为作者代号

 

a.编写SQL语句,找出“作者”库中没有出现在“获奖名单”表中所有作者信息的SQL语句。Select * from

 

 

b.根据 “获奖名单”和“作者”表,写出SQL语句,查询出在上一个月获奖的人员信息(代号,名称,获奖时间)。

Where 

 

4Oracle数据库表存在伪列rownumber,请利用rownumber,编写一个SQL语句,如emp表已经按sal从大到小排列,请从中找出第310条(包含)记录。

 

 

5Oracle中,需要在查询语句中把空值(NULL)输出为0,如何处理?

Nvl(列名,0)//若该列为空,则输出为0

 

6、创建表SWJ,有列名ID(字符,3)、NAME(字符,20)、AGE(数字,2)、UNIT(字符,30),BIRTH(日期)。要求:ID为主键,NAME不能为空,AGE1625之间。

 

 

7 根据SCOTTEMP表建立一个新表EMPLOYEES,字段与原表相同,但内容只要有工资SAL不小于2000的记录。根据EMPLOYEES建立视图EMP_VIEWEMP_VIEW中有IDNAMESAL。根据DEPT表建立一个新表DEPARTMENTS,结构与内容与原表的完全一致。

 

 

8 从第7题表EMPLOYEESDEPARTMENTS中显示所有名字(EANME)G开头且工资(SAL)大于3000的人的姓名、工资、部门名称。

 

 

9 从第7题表EMPLOYEESDEPARTMENTS中显示最高工资人姓名ENAME、部门名称(DNAME)和工作岗位(JOB)。

 

 

10 从第7题表EMPLOYEES中统计出每个部门的平均工资、工资总和、部门人数、最大工资和最小工资。

 

 

三、编程题(共42分)

1.           简述单子模式的思路,并且写出一种实现方案:5

Public class singleton{

Private static singleton single = new singleton();

Private  singleton(){

}

Public static singleton getsingletoninstance(){

    Return single;   

}

}

2.       写一个类,当该类的实例创建时即启动一个线程,按照指定格式每隔5秒循环打印出当前的时间,指定的日期格式为:××××年××月××日 ××点××分××秒。5

(线程的创建和日期的格式化)

3.       写一个程序统计输入字符串中以“,”分隔的各种单词出现的次数。例如:输入的字符串为“java,java,j2ee,ibm,j2ee,ibm,j2me,java”,则该程序的输出结果应该为:

java3;j2ee2;ibm2;j2me1个。8

 

4.       已知在文件路径“c:\temp\”,在此文件夹下有若干.dat文件,写出Java程序将该文件夹下所有文件拷贝到路径“c:\bak”下。7分。

 

5.       写出一段程序,从备选字符串“red”、“green”、“blue”、“black”、“white”中随机选出3个不同的字符串,并打印到控制台。7分。

 

6.写一个服务端程序,和一个客户端程序,并由客户端程序记录键盘敲击事件(什么时间按什么键),然后发送给服务端,再由服务端把每次的信息保存到“d:\keyinfo.txt”文件中。10