java编程测试标识符是否正确_软件工程师( Java程序设计)阶段测试题

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

1.名为HelloWorld.java的Java应用程序如下:

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

A、AnyClass.java是否存在

B、CLASSPATH环境变量是否正确

C、PATH环境变量是否正确

D、AnyClass.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.对List和Set的正确描述是(C)

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

B、List不可以包含重复元素。(可以重复)

C、Set不可以包含重复元素。

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先自加在运算)

A、99

B、96

C、121

D、120

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型)

A、0

B、1

C、0.67

D、0.66666667

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

A、String类没有实现Comparable接口。

B、Comparable里面的排序规则可以随意定义。

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

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

13.关于下述程序:

public class Test4{

public static void main(String[] agrs){

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)

A、finally

B、final

C、static

D、private

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.2和2B.3和3C.3和4D.4和3

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]是0B.arr[9]是0

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

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

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

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

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

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

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

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

A.IAMAClassB.$byteC.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.iteratorB.hasNextElementC.toArrayD.next

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

class OuterClass {

public void f() {

String s1 = "inner";

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

public void g() {

System.out.println(s1);

}

}

}

}

A.将变量s1声明为staticB.将变量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));

A、true、true、true、true

B、true、false、true、true

C、true、true、false、false

D、true、false、true、false

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

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

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

C、PrintWriter属于字节流。(字符流)

D、System类的out属性不属于流类。

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

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

A、中国的英语单词是ch

B、中国的英语单词是c

C、国的英语单

D、国的英语单词是ch

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

A、try代码段中的return语句

B、catch代码段中的return语句

C、finally代码段中的return语句

D、try和finally代码段中的return语句

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

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

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

C、抽象类可以被实例化

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

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

A、break和continue只能用在循环语句中

B、break和continue可以与标签一起使用

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

D、continue会放弃执行后续代码,继续执行循环

33.sleep和wait语句的作用是(D)

A、sleep语句精确地将当前线程暂时停止。

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

B、wait语句精确地将当前线程暂时停止。

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;

}

下面的类定义不会有编译错误的是:(AB 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.24B.23C.25D.22

二、数据库(共18分)

1、oracle中char和varchar2数据类型有什么区别?

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

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

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

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

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

字段名称 数据类型 要求

idNumber主键

name Varchar2非空

age Number

sexVarchar2

salary Number

create table test_table(

idnumber(10),

namevarchar2(10),

agenumber(10),

sexvarchar2(10),

salarynumber(10)

)

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

Createsequence t_sque(

Incrementby1

Startwith 100

Minvalue10

Maxvalue99999;

)

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

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

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

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

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

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

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

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

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

三、编程题(共42分)

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

Public class singleton{

Private static singleton single = new singleton();

Privatesingleton(){

}

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分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值