1、编译java程序的命令是___B_____;运行java程序的命令是____A____;产生java文挡的命令是___D____;查询java类型是否是serializable类型的命令是____C___;产生java安全策略文件的命令是____E____;产生类型归档文件.jar的命令是___F_____。
A. java B. javac C. serialver
D.javadoc E.policytool F.jar
2、在使用super 和this关键字时,以下描述正确的是(A)
A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过
B super()和this()不一定要放在构造方法内第一行
C this()和super()可以同时出现在一个构造函数中
D this()和super()可以在static环境中使用,包括static方法和static语句块
3、下面叙述正确的有_______C___D____E__ ___。
A.在一个java原文件中只能定义一个class
B在一个java原文件中只能定义一个interface
C在一个java原文件中可以定义多个class
D在一个java原文件中可以定义多个interface
E在一个java原文件中可以定义多个class和interface
F在一个java原文件中只能定义public class
G java原文件的前缀一定是所包含类型的名字
4、java程序中程序运行入口方法main的签名正确的有__A__B____。
A. public static void main(String args[])
B. static public void main(String[] args)
C. public void static main(String[] args)
D. public void main(String args[])
- public class Test {
void printValue(int m){
do {
System.out.println("The value is"+m);
} while( --m > 10 );
}
public static void main(String args[]) {
int i=10;
Test t= new Test();
t.printValue(i);
}
}
输出将是什么? (C)
A. The value is 8
B. The value is 9
C. The value is 10
D. The value is 11
6、以下能作为class, interface, method或variable有效标识符的有____A___D__F_______。
A.For B.boolean C.23age
D. _id E.my name F. $this_is_a_long_variable_name
7、给出下面的代码:
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)}
哪些行在编译时可能产生错误? ____C____________。
A. line 4
B. line 6
C. line 7
D. line 8
8、以下能作为char类型的字面值的有____B___。
A. “e” B.’杰’ C. ‘\u12’ D.205
9、 byte变量的取值范围是_____B___。
A. 0 - 65535 B.-128 – 127 C.-256 – 255 D.0 - 32767
10、以下正确的有__A_C____。
A. int i = 32; B.float f = 45.32; C. double d=3.2;
11、以下返回true的表达式有___A_C__ _。
A. “briup” == “briup” B.”briup” = “briup”
C. “briup”.equals(new String(“briup”)) D. “briup” == new String(“briup”)
12、inner class的类型有_A__B _C _____D__ _。
A.member inner class B.static inner class
C.local inner class D.anonymous inner class
E.public inner class F.global inner class
13、以下方法申明正确的有___A_____D______。
A.public static synchronized void writeLog(String msg)
B. synchronized public static writeLog(String msg)
C. public final abstract void writeLog(String msg)
D.final public void writeLog(String msg)
E.abstract synchronized void writeLog(String msg)
14、方法重载(overloading)必须满足_ _C_ __E___。
A. 在不同class中定义的方法 B.在同一类型中定义的方法
C. 方法名必须相同 D.返回类型必须相同
E. 参数一定不同 F.参数可以相同
15、请看以下程序:
class Vehicle {
public void drive() {
System.out.println("Vehicle: drive");
}
}
class Car extends Vehicle {
public void drive() {
System.out.println("Car: drive");
}
}
public class Test {
public static void main (String args []) {
Vehicle v;
Car c;
v = new Vehicle();
c = new Car();
v.drive();
c.drive();
v = c;
v.drive();
}
}
以下描述正确的有___C_____。
- 对于语句v=c;会导致编译错误
B.对于语句v=c;会导致运行错误
C.运行输出:
Vehicle: drive
Car: drive
Car: drive
D.运行输出:
Vehicle: drive
Car: drive
Vehicle: drive
16、程序:
public class StaticTest {
static {
System.out.println("Hi there");
}
public void print() {
System.out.println("Hello");
}
public static void main(String args []) {
StaticTest st1 = new StaticTest();
st1.print();
StaticTest st2 = new StaticTest();
st2.print();
}
}
什么时候字符串“Hi there”会输出___C_____。
A.永远都不会输出 B.创建st1和st2时
C.第一次将StaticTest类型装载进内存时 D.显示调用print方法时
17、创建一个tcp服务程序的顺序是_BACDEGF______。
- 创建一个服务线程处理新的连接
- 创建一个服务器socket
- 从服务器socket接受客户连接请求
- 在服务线程中,从socket中获得I/O流
- 对I/O流进行读写操作,完成与客户的交互
- 关闭socket
- 关闭I/O流
18、Java UDP编程主要用到的两个类型是____B____和___D____。发送和接收信息的方法是__B_____。
A.UDPSocket B.DatagramSocket
C.UDPPacket D.DatagramPacket
E.read/write F.send/receive
19、下面的代码段中,执行之后i 和j 的值是什么?B
int i = 1;
int j;
j = i++;
A、 1, 1 B、1, 2 C、2, 1 D、2, 2
20、图形编程通常按_________________顺序。
A.设置布局管理器(Layout manager) B.向容器中增加控件
C.选择容器 D.为控件设置事件处理器
21. 如下程序:
public class ArugmentTest{
static class IntA{
private int a;
public IntA(int a){ this.a = a; }
public int getA() { return a; }
public void setA(int a){ this.a = a; }
}
static public void change(int a){
a = 3;
}
static public void change(IntA a){
a.setA(3);
}
static public void changeRef(IntA a){
a = new IntA(9);
}
public static void main(String[] args){
int a = 2; w a= 2
change(a); A a = 3
System.out.print(a); w a =2
IntA ia = new IntA(5);
change(ia);
System.out.print(ia.getA());
ChangeRef(ia);
System.out.println(ia.getA());
}
}
在控制台上输出的是___A___。
A. 2 3 3 B.333 C.259 D.339
22.有下面代码
import java.util.*;
class Student {
int age;
String name;
public Student(){}
public Student(String name, int age){
this.name = name;
this.age = age;
}
public int hashCode(){
return name.hashCode() + age;
}
public boolean equals(Object o){
if (o == null) return false;
if (o == this) return true;
if (o.getClass() != this.getClass()) return false;
Student stu = (Student) o;
if (stu.name.equals(name) && stu.age == age)
return true;
else return false;
} }
public class TestHashSet{
public static void main(String args[]){
Set set = new HashSet();
Student stu1 = new Student();
Student stu2 = new Student(“Tom”, 18);
Student stu3 = new Student(“Tom”, 18);
set.add(stu1);
set.add(stu2);
set.add(stu3);
System.out.println(set.size());
} }
B
下列说法正确的是:
A. 编译错误
B. 编译正确,运行时异常
C. 编译运行都正确,输出结果为3
D. 编译运行都正确,输出结果为2
23.有下面代码
import java.util.*;
public class TestListSet{
public static void main(String args[]){
List list = new ArrayList();
list.add(“Hello”);
list.add(“Learn”);
list.add(“Hello”);
list.add(“Welcome”);
Set set = new HashSet();
set.addAll(list);
System.out.println(set.size());
}
}
选择正确答案( C )
A. 编译不通过
B. 编译通过,运行时异常
C. 编译运行都正常,输出3
D. 编译运行都正常,输出4
- 填空题(每空0.5分,总分19分)
- Java方法的参数传递对于基本数据类型如int, byte等,参数传递是___按值传递_____;对自定义数据类型,参数传递是____按址传递___。
2、当声明一个数组int arr[] = new int[5]; 时,这代表这个数组所保存的变量类型是___int_____,数组名是____arr____,数组的大小为____5_____,数组元素下标的使用范围是__0-4______。
3、创建线程(Thread)的方式有两种,一种是继承类___Thread_____,另一种是实现接口____Runable____。启动线程的方法是____start____。线程启动后运行的是___run_____方法里的代码,线程的四种状态分别是___新建状态______、____就绪状态_____、_____运行状态______、_阻塞状态_、____死亡状态_____。
4、并发控制是多线程编程的难点。一个线程要等待某个条件的满足而阻塞调用方法__wait______;通知某一个处于等待状态线程的方法是____notify____;代码临界区的方法或程序块用关键字__synchronized______来限制达到互斥效果。
5、对原始数据的读写,采用____ InputStream ___接口和____ OutputStream ___接口的相关实现类,为了提高性能增加缓存区采用流________和________;对各种基本数据类型的读写,采用流________和________;读写文字字节流采用________接口和________接口的相关实现类, 方便读写字符串到字节流的转换采用流________和________;对象读写采用流________和_______。
6、一个File对象是文件或目录在内存中的表示,File类型中定义了方法___exits___来判断一个文件是否存在,定义方法____renameTo___改变文件名,定义方法____mkdirs____同时创建一个目录层次。对文件可以从任意位置进行写操作用文件流__RandomAccessFile_____。
7、事件处理方式采用了observer(观察者)设计模式,事件编程模式三要素是Event source 、 Event listener和Event object 。其中, Event object通常继承java.util.EventObject, Event listener通常继承java.util.EventListener。
- 简答题(每题3分,总分15分)
- 运算符”==”与equals比较对象的区别是什么?
== 对基本数据类型比较数值,对引用类型比较引用地址
equals 基本数据类型比较内容,对引用数据类型比较内容(这是在String Integer 等重写Object的equals方法后)
- 说出ArrayList,Vector, LinkedList的存储性能和特性?
ArrayList存储
答案:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
- 简述Java中异常处理的机制?
throw 在方法中抛出
throws在方法名后抛出
try catch捕获答案:首先Java的异常是面向对象的。一个Java的Exception是一个描述异常情况的对象.当出现异常情况时,一个Exception对象就产生了,并放到异常的成员函数里。
Java的异常处理是通过5个关键词来实现的:try,catch,throw,throws和finally。
1.异常处理:在Java语言的错误处理结构由try,catch,finally三个块组成。其中try块存放将可能发生异常的Java语言,并管理相关的异常指针;catch块紧跟在try块后面,用来激发被捕获的异常;finally块包含清除程序没有释放的资源,句柄等。不管try块中的代码如何退出,都将执行 finally块。
2.抛出异常:Java语言可以不在方法中直接捕获,而用throw语句将异常抛给上层的调用者。Throw语句就是来明确地抛出一个异常;首先你必需得到一个Throwable的实例句柄,通过参数传到catch中,或者采用new操作符来创建一个。
- 请简述重载和重写的区别?
重写:发生在类的继承中,
返回值,方法名,参数必须相同
且访问权限不能比父类小
抛出异常不能多于父类
重载:发生在本类中
方法名必须相同,参数列表,返回值不同
- String是最基本的数据类型吗? String 和StringBuffer的区别?
不是,
String是引用数据类型,保存字符串常量,是不可变的
StringBuffer的长度是可变的,用toString可以将StringBuffer转化为String
- 编程题(第1、2小题每题5分,第3题10分,总分20分)
1、李白街上走,提壶去买酒,遇店加一倍,见花喝一斗,五遇店和花,喝光壶中酒,壶中原有多少酒?请编程计算李白的壶中原有多少斗酒。
int x = 0;
for(int i = 5 ; i> 0 ; i - -){
x = x +1;
x = x / 2;
}
- 常用的排序算法有哪些,请列举?
使用java实现选择排序,对数组int[] array = {2,5,-5,98,198,43};进行排序。
(在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。)
选择 插入 冒泡
int temp = 0;
for(int i = 0 ; i < arr.length-1 ; i ++){
for(int j = i+1 ; j < arr.length;j++){
if(arr[i] > arr[j]){
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
3、(1).使用Socket实现文本文件test.txt在客户端和服务器端之间的传输(使用Socket创建客户端和服务器端,将文件testA.txt通过客户端传递到服务器端,再保存在本地文件testB.txt中)
(2).把上边的代码修改成多线程实现。