
第二届全国ITAT教育工程就业技能大赛预赛试题Java程序设计
注意:在指定的路径下创建以姓名和准考证号命名的文件夹,并将试题答案存放在以题号命名的子文件夹中。凡未按照要求将试题存放在相应文件夹中的考生成绩一律作废。
一.选择题(每道题3分,共45分)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
(1)下列关于Java语言的特点,描述错误的是( )
A.Java是跨平台的编程语言 B.Java支持分布式计算
C.Java是面向过程的编程语言 D.Java支持多线程
(2)下述概念中不属于面向对象方法的是________。
A.对象、消息 B.继承、多态 C.类、封装 D.过程调用
(3)结构化程序设计所规定的三种基本控制结构是 ( )
A.输入、处理、输出 B.树形、网形、环形
C.顺序、选择、循环 D.主程序、子程序、函数
(4)下列关于构造方法的叙述中,错误的是( )
A.Java语言规定构造方法名与类名必须相同
B.Java语言规定构造方法没有返回值,但不用void声明
C.Java语言规定构造方法不可以重载
D.Java语言规定构造方法只能通过new自动调用
(5)下列哪个类的声明是正确的?
A.abstract final class HI{} B.abstract private move(){}
C.protected private number; D.public abstract class Car{}
(6)关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
(7)以下声明合法的是( )
A.default String s; B.public final static native int w( )
C.abstract double d; D.abstract final double hyperbolicCosine( )
(8)Applet可以做下列哪些操作?( )
A.读取客户端文件 B.在客户端主机上创建新文件
C.在客户端装载程序库 D.读取客户端部分系统变量
(9)下列关于for循环和while循环的说法中哪个是正确的?( )
A.while循环能实现的操作,for循环也都能实现
B.while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果
C.两种循环任何时候都可替换
D.两种循环结构中都必须有循环体,循环体不能为空
(10)类Test1定义如下:
1.public class Test1{
2. public float aMethod(float a,float b){ }
3.
4.}
将以下哪种方法插入行3是不合法的。( )
A、public float aMethod(float a, float b,float c){ }
B、public float aMethod(float c,float d){ }
C、public int aMethod(int a, int b){ }
D、private float aMethod(int a,int b,int c){ }
(11)阅读以下代码:
import java.io.*;
import java.util.*;
public class foo{
public static void main (String[] args){
String s;
System.out.println("s=" + s);
}
}
输出结果应该是:( )
A.代码得到编译,并输出“s=”
B.代码得到编译,并输出“s=null”
C.由于String s没有初始化,代码不能编译通过
D.代码得到编译,但捕获到 NullPointException异常
(12)编译运行以下程序后,关于输出结果的说明正确的是 ( )
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
A.输出结果为:value is 99.99 B.输出结果为:value is 9
C.输出结果为:value is 9.0 D.编译错误
(13)执行完以下代码int [ ] x = new int[10];后,以下哪项说明是正确的( )
A.x[9]为0 B.x[9]未定义 C.x[10]为0 D.x[0]为空
(14)关于以下程序段,正确的说法是( )
1. String s1=“a”+“b”;
2. String s2=new String(s1);
3. if(s1==s2)
4. System.out.println(“= = is succeeded”);
5. if (s1.equals(s2))
6. System.out.println(“.equals() is succeeded”);
A.行4与行6都将执行 B.行4执行,行6不执行
C.行6执行,行4不执行 C.行4、行6都不执行
(15)以下程序的运行结果是:( )
public class Increment{
public static void main(String args[]){
int c;
c = 2;
System.out.println(c);
System.out.println(c++);
System.out.println(c);
}
}
A.2 B.2 C.2 D.3
2 3 2 4
2 3 3 4
二.写出以下程序的运行结果。(每道题10分,共30分)
1、写出以下程序的运行结果。
public class ChangeStrDemo {
public static void changestr(String str){
str="welcome";
}
public static void main(String[] args) {
String str="1234";
changestr(str);
System.out.println(str);
}
}
2、写出以下程序的运行结果。
class First{
public First(){
aMethod(); }
public void aMethod(){
System.out.println(“in First class”);}
}
public class Second extends First{
public void aMethod(){
System.out.println(“in Second class”);}
public static void main(String[ ] args){
new Second( ); }
}
3、写出以下程序的运行结果。
public class FooDemo{
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main(String[] args ) {
int i =0;
for ( foo(’a’); foo(’b’)&&(i<2); foo(’c’)){
i++ ;
foo(’d’);
}
}
}
三.编程题(45分)
1.编写一个Java程序要求:开启一个文本文件,一次读取其内的一行文本。令每一行形成一个String,并将读出的String对象置于LinkedList中。请以相反次序印出LinkedList内的所有文本行。
第二届全国ITAT教育工程就业技能大赛模拟试题Java程序设计(A卷)
注意:在指定的磁盘根目录下创建以准考证号命名的文件夹,并将试题答案存放在以题号命名的子文件夹中。凡未按照要求将试题存放在相应文件夹中的考生成绩一律作废。
一、选择题(每题3分,共45分)
(1)下列关于栈的叙述正确的是 ( )
A.栈是非线性结构 B.栈是一种树状结构 C.栈具有先进先出的特征 D.栈具有后进先出的特征
(2)结构化程序设计所规定的三种基本控制结构是 ( )
A.输入、处理、输出 B.树形、网形、环形 C.顺序、选择、循环
D.主程序、子程序、函数
(3)结构化程序设计的一种基本方法是 ( )
A.筛选法 B.递归法 C.归纳法 D.逐步求精法
(4)如果对一个关系实施了一种关系运算后得到了一个新的关系,而且新的关系中属性个数少于原来关系中属性个数,这说明所实施的关系运算是: ( )
A.选择 B.投影 C.连接 D.并
(5)关于被私有保护访问控制符private protected修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B. 可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D. 只能被同一个包中的类访问
(6)关于被私有访问控制符private修饰的成员变量,以下说法正确的是( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
(7)关于被保护访问控制符protected修饰的成员变量,以下说法正确的( )
A.可以被三种类所引用:该类自身、与它在同一个包中的其他类、在其他包中的该类的子类
B.可以被两种类访问和引用:该类本身、该类的所有子类
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
(8)下列关于修饰符混用的说法,错误的是( )
A.abstract不能与final并列修饰同一个类
B.abstract类中不可以有private的成员
C.abstract方法必须在abstract类中
D.static方法中能处理非static的属性
(9)容器Panel和Applet缺省使用的布局编辑策略是( )
A、BorderLayout B、FlowLayout C、GridLayout D、CardLayout
(10)以下标识符中哪项是不合法的( )
A、 BigMeaninglessName B、$int C、1 s D、$1
(11)main方法是Java Application程序执行的入口点,关于main方法的方法头以下哪项是合法的( )
A、public static void main() B、public static void main(String[ ] args)
C、public static int main(String[ ] arg) D、public void main(String arg[ ])
(12)执行完以下代码int [ ] x = new int[25];后,以下哪项说明是正确的( )
A、x[24]为0 B、x[24]未定义 C、x[25]为0 D、x[0]为空
(13)以下代码段执行后的输出结果为( )
int x=3; int y=10;
System.out.println(y%x);
A、0 B、1 C、2 D、3
(14)以下哪个表达式是不合法的( )
A、String x="Hello"; int y=9; x+=y;
B、String x="Hello"; int y=9; if(x= =y) { }
C、String x="Hello"; int y=9; x=x+y;
D、String x=null; int y=(x!=null)&&(x.length()>0) ? x.length : 0
(15)编译运行以下程序后,关于输出结果的说明正确的是 ( )
public class Conditional{
public static void main(String args[ ]){
int x=4;
System.out.println(“value is “+ ((x>4) ? 99.9 :9));
}
}
A、输出结果为:value is 99.99 B、输出结果为:value is 9
C、输出结果为:value is 9.0 D、编译错误
二、程序阅读(每题10分,共30分)
1、阅读以下程序,输出结果为 。
class Q1{
public static void main(String args[ ]){
double d=1.23;
Dec dec=new Dec( );
dec.decrement(d);
System.out.println(d);
}
class Dec{
public void decrement(double decMe){
decMe = decMe - 0.1;
}
}
2、以下程序的输出结果为 。
public class Short{
public static void main(String args[ ]) {
StringBuffer s = new StringBuffer(“Hello”);
if((s.length( )>5)&& (s.append(“there”) . equals(“False”)))
;
System.out.println(“value is ”+s);
}
}
3、以下程序段的输出结果为 。
int x=0,y=4, z=5;
if ( x>2){
if (y<5){
System.out.println(“Message one”);
}
else {
System.out.println(“Message two”);
}
}
else if(z>5){
System.out.println(“Message three”);
}
else {
System.out.println(“Message four”);
}
三.编程题(45分)
1.编写一个完整的Java Application 程序。包含接口ShapeArea,类Circle、Rectangle、Test,具体要求如下:
⑴接口ShapeArea:
①接口方法
double getArea():求一个形状的面积
double getPerimeter ():求一个形状的周长
⑵类Rectangle:
实现ShapeArea接口,并有以下属性和方法:
①属性
width: double型,表示长方形的宽度
height:double型,表示长方形的长度
②方法
Rectangle(double w, double h):构造函数
toString():输出矩形的描述信息,如“width=1.0,height=2.0,perimeter=6.0,area=2.0”
⑶Test类作为主类要完成测试功能
① 生成Rectangle对象
② 调用对象的toString方法,输出对象的描述信息
第二届全国ITAT教育工程就业技能大赛复赛试题Java程序设计(A卷)
注意:在指定的路径下创建以姓名和准考证号命名的文件夹,并将试题答案存放在以题号命名的子文件夹中。凡未按照要求将试题存放在相应文件夹中的考生成绩一律作废。
一.选择题(每道题3分,共30分)
1、 使用以下哪个保留字可以使只有在定义该类的包中的其他类才能访问该类?
A)abstract B)private
C)protected D)不使用保留字
2、下列选项中哪一个是表达式1+2+"aa"+3的值()?
A)"12aa3" B) "3aa3 " C) "12aa" D) "aa3"
3、考虑下面的类:
1. class Test {
2. void test(int i) {
3. System.out.println(“I am an int.”);
4. }
5. void test(String s) {
6. System.out.println(“I am a string.”);
7. }
8.
9. public static void main(String args[]) {
10. Test t=new Test();
11. char ch=“y”;
12. t.test(ch);
13. }
14. }
下列哪一个结论是正确的
A)第5行不能通过编译,因为void方法不能被重载。
B)第12行不能通过编译,因为没有将一个将char类型作为参数的test() 方法。
C)代码不能通过编译但是会在第12行抛出异常。
D)代码能通过编译并会产生如下输出:I am an int.
E)代码能通过编译并会产生如下输出:I am a String.
4、下列哪些代码编译时没有错误
A) int i=0;
if (i) {
System.out.println(“Hi”);
}
B)boolean b=true;
boolean b2=true;
if(b==b2) {
System.out.println(“So true”);
}
C) int i=1;
int j=2;
if(i==1|| j==2)
System.out.println(“OK”);
D) int i=1;
int j=2;
if (i==1 &| j==2)
System.out.println(“OK”);
5、 如果float f=4.2F;
Float g=new Float(4.2F);
Double d=new Double(4.2);
则下列哪些表达式值为真?
A)f==g
B)g==g
C)d==f
D)d.equals(f)
E)d.equals(g)
F)g.equals(4.2)
6、public class Test{
public static void add3(Integer i){
int val=i.intValue();
val+=3;
i=new Integer(val);
}
public static void main(String args[]){
Integer i=new Integer(0);
add3(i);
System.out.println(i.intValue());
}
}
以上代码的结果会是以下哪个选项?
A)编译出错。
B)输出 "0"
C)输出 "3"
D)编译成功但运行时会在第3行出现异常
7、下面程序标记处应该插入哪个选项的代码?
class EnclosingOne{
public class InsideOne{}
}
public class InnerTest{
public static void main(String args[]){
EnclosingOne eo=new EnclosingOne();
//insert code here
}
}
A)InsideOne ei=eo.new InsideOne();
B)eo.InsideOne ei=eo.new InsideOne();
C)InsideOne ei=EnclosingOne.new InsideOne();
D)InsideOne ei=eo.new InsideOne();
E)EnclosingOne.InsideOne ei=eo.new InsideOne();
8、public class SychTest{
private int x;
private int y;
public void setX(int i){ x=i;}
public void setY(int i){ y=i;}
public Synchronized void setXY(int i){
setX(i);
setY(i);
}
public Synchronized boolean check(){
return x!=y;
}
}
在下列哪种情况下,check()方法在被另一个不同的类调用时会返回true?
A)check() 永远也不会返回true。
B)当通过多线程调用setXY () 时check() 能够返回true。
C)当通过多线程单独调用setX() 和setY()时check() 能够返回true。
D)只有当SychTest 被改为允许x和y单独设值时check() 才能够返回true。
9、import java.awt.*;
public class X extends Frame{
public static void main(String[] args){
X x=new X();
x.pack();
x.setVisible(true);
}
public X(){
setLayout(new GridLayout(2,2));
Panel p1=new Panel();
add(p1);
Button b1=new Button("One");
p1.add(b1);
Panel p2=new Panel();
add(p2);
Button b2=new Button("Two");
p2.add(b2);
Button b3=new Button("Three");
p2.add(b3);
Button b4=new Button("Four");
add(b4);
}
}
当frame改变大小时,
A)所有都会改变高度
B)所有都会改变宽度
C)Button "One" 改变高度
D)Button "Two"改变高度
E)Button "Three" 改变宽度
F)Button "Four"改变高度和宽度
10、String或StringBuffer类的对象在调用以下哪个方法时其自身会发生更改?
A)String类的charAt()方法。
B)String类的toUpperCase()方法。
C)String类的replace()方法。
D)StringBuffer类的reverse ()方法。
E)StringBuffer类的length ()方法。
二. 简答题(每题5分,共10分)
1、说明final, finally, finalize的区别?
2、线程类的方法中sleep() 和 wait() 有什么区别?
三. 写出下列程序的输出结果(第1题5分,第2题10分,共15分)
1、以下程序段的输出结果为 。
int j=2;
switch ( j ) {
case 2:
System.out.print(“Value is two.”);
case 2+1 :
System.out.println(“Value is three.”);
break;
default:
System.out.println(“value is “+j);
break;
}
2、阅读以下程序段:
class Parent
{
void printMe()
{
System.out.println(“parent”);
}
}
class Child extends Parent
{
void printMe()
{
System.out.println(“child”);
}
void printAll()
{
super.printMe();
this.printMe();
printMe();
}
}
public class Test_this
{
public static void main(String args[ ])
{
Child myC=new Child();
myC.printAll();
}
}
输出结果为:
四. 编程题(共65分)
1、用LinkedList实现一个stack,实现其中的push(),top()和pop()方法;其中push()实现向栈中加入一个元素,top()实现得到栈的最顶元素,pop()实现删除最顶元素。(25分)
2、为Thread撰写两个子类,其中一个的run()在启动后取得第二个Thread object reference,然后调用wait()。另一个子类的run()在过了数秒之后调用notifyAll(),唤醒第一个线程,使第一个线程可以印出消息。(40分)
