Java考核试题含答案.docx
《Java考核试题含答案.docx》由会员分享,可在线阅读,更多相关《Java考核试题含答案.docx(13页珍藏版)》请在冰豆网上搜索。
Java考核试题含答案
软件开发评测题
(考核时间120分钟,总分100分+附加题15分)
一、选择题(每题2分,共30分)
1、请判断一下程序的正确结果是哪项(D)
publicclassmyprogram{
publicstaticvoidmain(Stringargs[]){
try{
System.out.print(“Helloworld”);}
finally{
System.out.println(“Finallyexecuting”);
}
}
}
A、无法编译,因为没有指定异常
B、无法编译,因为没有catch子句
C、Helloworld
D、HelloworldFinallyexecuting
2、JDBC中要显式地关闭连接的命令是(A)
A、Connection.close();B、RecordSet.close()
C、Connection.stop()D、Connection.release()
3、[多选题]根据下面的代码,Strings=null;会抛出NullPointerException异常的有(AC)。
A、if((s!
=null)&(s.length()>0))
B、if((s!
=null)&&(s.length()>0))
C、if((s==null)|(s.length()==0))
D、if((s==null)||(s.length()==0))
4、执行完以下代码int[]x=newint[25];后,以下哪项说明是正确的(A):
A、x[24]为0
B、x[24]未定义
C、x[25]为0
D、x[0]为空
5、[多选题]执行下列代码后,哪个结论是正确的String[]s=newString[10](AD);
A、s[9]为null;
B、s[10]为“”;
C、s[0]为未定义
D、s.length为10
6、[多选题]有关线程的哪些叙述是对的(BCD)
A、一旦一个线程被创建,它就立即开始运行。
B、使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行。
C、当一个线程因为抢先机制而停止运行,它被放在可运行队列的前面。
D、一个线程可能因为不同的原因停止并进入就绪状态。
7、使用"=="比较操作符,是为了判断两个对象(C)
A、是否为同一个类的实例
B、是否值相同
C、是否为完全相同的对象
8、[多选题]下面说法哪项是正确的(BD)
A、Java虚拟机中的自动垃圾回收机阻止程序运行溢出内存
B、一段程序可以建议垃圾回收执行,但不能强迫它执行
C、垃圾回收是一个独立的平台
D、当一个对象的所有引用都被置空时,这个对象就可以变为能被垃圾回收
9.[多选题]JDBC编程的异常类型分为 (AC)
A、SQLException
B、SQLError
C、SQLWarning
D、SQLFatal
E、SQLTruncation
10、如果要限制某个查询语句返回的最多的记录数,可以通过调用Statement的方法 (C )来实现。
A、setFetchSize
B、setMaxFieldSize
C、setMaxRows
11、[多选题]以下哪些是定义在ResultSet中用于Cursor定位的方法:
(ABCEF )
A、next() //此方法是使游标向下一条记录移动。
B、beforeFirst() //把游标移动到第一条记录的前面(逻辑位置)。
C、afterLast() //把游标移动到最后一条记录的后面(逻辑位置)。
D、isBeforeFirst()//判断的,不是定位
E、absolute(int) //定位到指定的记录位置
F、relative(int) //相对定位方法
12、DataSource是(B)类型,可以调用DataSource的方法(D)获得数据库连接。
A、Delegate
B、Factory
C、connect
D、getConnection
13、[多选题]我们实现的基于HTTP协议的Servlet的服务方法签名正确的有 (BCD )。
A、publicvoiddoGet(ServletRequestreq,ServletResponseres)throwsIOException,ServletException// 参数不对
B、publicvoiddoPost(HttpServletRequestreq,HttpServletResponseres)throwsIOException,ServletException
C、publicvoidservice(HttpServletRequestreq,HttpServletResponseres)throwsIOException,ServletException
D、publicvoidservice(ServletRequestreq,ServletResponseres)throwsIOException,ServletException
14、[多选题]典型的JDBC程序按(DBECFA)顺序编写。
A、释放资源
B、获得与数据库的物理连接
C、执行SQL命令
D、注册JDBCDriver
E、创建不同类型的Statement
F、如果有结果集,处理结果集
选择题答案:
D、A、AC、A、AD
BCD、C、BD、AC、C
ABCEF 、BD、BCD 、DBECFA
二、简答题(每题5分,共计10分)
1、简述Collection与Map的共同点和区别。
二者都作为容器存储对象,能够在添加更多对象时,自动调整其尺寸。
Collection只保存单一元素;Map保存对象关联的键值对。
2、简述String与StringBuffer的区别。
String类对象为不可变对象,一旦修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象;StringBuffer类对象为可修改对象,可以通过append()方法来修改值;对同一字符串做频繁更改时,String类对象的性能远不如StringBuffer类。
三、程序阅读题(每题5分,共计20分)
1、请写出以下程序的运行结果。
publicclassShortCircuit{
staticbolleantest1(intval){
print(“test1(”+val+”)”);
print(“result:
”+(val<1));
returnval<1;
}
staticbolleantest2(intval){
print(“test2(”+val+”)”);
print(“result:
”+(val<2));
returnval<2;
}
staticbolleantest3(intval){
print(“test3(”+val+”)”);
print(“result:
”+(val<3));
returnval<3;
}
Publicstaticvoidmain(String[]args){
Bolleanb=test1(0)&&test2
(2)&&test3
(2);
Print(“expressionis“+b);
}
}
答案:
Test1(0)
result:
true
test2
(2)
result:
false
expressionisfalse
2、请写出以下程序的运行结果。
PublicclassStringOperators{
Publicstaticvoidmain(String[]args){
Intx=0,y=1,z=2;
Strings=“x,y,z”;
print(s+x+y+z);
print(x+“”+s);
s+=“(summed)=”;
print(s+(x+y+z));
print(“”+x);
}
}
答案:
x,y,z012
0x,y,z
x,y,z(summed)=3
0
3、请写出以下程序的运行结果。
publicclassCastingNumbers{
publicstaticvoidmain(String[]args){
doubleabove=0.7,below=0.4;
floatfabove=0.7f,fbelow=0.4f;
print(“(int)above:
”+(int)above);
print(“(int)below:
”+(int)below);
print(“(int)fabove:
”+(int)fabove);
print(“(int)fbelow:
”+(int)fbelow);
}
}
答案:
(int)above:
0
(int)below:
0
(int)fabove:
0
(int)fbelow:
0
4、请写出以下程序的运行结果。
publicclassArraysOfPrimitives{
publicstaticvoidmain(String[]args){
int[]a1={1,2,3,4,5};
int[]a2;
a2=a1;
for(inti=0;Ia2[i]=a2[i]+1;
for(intI=0;Iprint(“a1[”+I+“]=”+a1[i]);
}
}
答案:
a1[0]=2
a1[1]=3
a1[2]=4
a1[3]=5
a1[4]=6
四、编程题(每题10分,共计40分)
1、题目:
输入三个整数x,y,z,请把这三个数由小到大输出。
(写出符合的伪代码即可)
帮助分析:
我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
答案:
importjava.util.*;
publicclasstest{
publicstaticvoidmain(String[]args){
inti=0;
intj=0;
intk=0;
intx=0;
System.out.print("请输入三个数\n");
Scannerinput=newScanner(System.in);
i=input.nextInt();
j=input.nextInt();
k=input.nextInt();
if(i>j)
{
x=i;
i=j;
j=x;
}
if(i>k)
{
x=i;
i=k;
k=x;
}
if(j>k)
{
x=j;
j=k;
k=x;
}
System.out.println(i+","+j+","+k);
}
}
2、编写一个Java程序将当100,101,102,103,104,105个数以数组的形式写入到Dest.txt文件中,并以相反的顺序读出显示在屏幕上。
(写出符合的伪代码即可)
importjava.io.*;
publicclassIODemo{
publicstaticvoidmain(Stringargs[]){
intdata[]={100,101,102,103,104,105};
intt;
try{DataOutputStreamout=newDataOutputStream(newFileOutputStream(“dest.txt”));
for(inti=0;iout.WriteInt(data[i]);
out.close();
DataInputStreamin=newDataInputStream(newFileInputStream(“dest.txt”));
for(inti=data.length-1;i>=0;i--){
t=in.readInt(data[i]);
System.out.print(“”+t);
}
System.out.println();
in.close();
}catch(IOExceptione){
System.out.println(e.getMessage());
}
}
}
3、录入用户的18位身份证号,从中提取用户的生日。
(写出符合的伪代码即可)
importjava.util.Scanner;
publicclassGetBirthday{
publicstaticvoidmain(String[]args){
System.out.print("请输入用户的身份证号码:
");
Scannerinput=newScanner(System.in);
Stringid=input.next();
Stringyear="";
Stringmonth="";
Stringday="";
if(id.length()!
=18){//有效身份证号码为18位
System.out.println("\n身份证号码无效!
");
}else{year=id.substring(6,10);//提取年
month=id.substring(10,12);//提取月
day=id.substring(12,14);//提取日
System.out.println("\n该用户生日是:
"+year+"年"+month+"月"+day+"日");
}
}
}
4、 实现server和client模型程序
服务器,使用ServerSocket监听指定的端口,端口可以随意指定,等待客户连接请求,客户连接后,会话产生;在完成会话后,关闭连接。
客户端,使用Socket对网络上某一个服务器的某一个端口发出连接请求,一旦连接成功,打开会话;会话完成后,关闭Socket。
客户端不需要指定打开的端口,通常临时的、动态的分配一个1024以上的端口。
服务端:
package com.basic.socket.server;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import .ServerSocket;
import .Socket;
/**
* 服务器断的工作就是在指定的端口上监听
* 1、建立连接
* 2、打开输出流
* 3、封装输出流
* 4、向客户端发送数据
* 5、关闭打开的输出流
* 6、关闭打开的socket对象 */
public class Chat_Server {
public static void main(String[] args) {
try {
// 指定服务器端的端口号为8888
ServerSocket s=new ServerSocket(8888);
while(true){
//建立连接
Socket socket=s.accept();
//打开输出流
OutputStream os=socket.getOutputStream();
//封装输出流
DataOutputStream dos=new DataOutputStream(os);
//s.getInetAddress()获取远程ip地址,s.getPort()远程客户端的断后好
//向客户端发送数据
dos.writeUTF("你好,客服端地址信息:
"+socket.getInetAddress()+"\t客服端通讯端口号:
"+socket.getPort());
dos.writeUTF("i'm a server ,my name is Mercury!
");
//关闭打开的输出流
dos.close();
//关闭打开的socket对象
socket.close();
} //开始下一次循环
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
package com.basic.socket.client;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import .Socket;
/**
* 1、创建socket对象,指定服务器的ip地址,和服务器监听的端口号
* 2、打开输入流
* 3、封装输入流
* 4、打印服务器端发送过来的信息
* 5、关闭输入流
* 6、关闭打开的socket对象
* * /
public class Chat_Client {
public static void main(String[] args) {
try {
// 创建socket对象,指定服务器的ip地址,和服务器监听的端口号
// 客户端在new的时候,就发出了连接请求,服务器端就会进行处理,如果服务器端没有开启服务,那么 这时候就会找不到服务器,并同时抛出异常==》.ConnectException:
Connection
// refused:
connect
Socket socket=new Socket("127.0.0.1",8888);
// 打开输入流
InputStream is=socket.getInputStream();
// 封装输入流
DataInputStream dis=new DataInputStream(is);
// 打印服务器端发送过来的信息
System.out.println(dis.readUTF());
System.out.println(dis.readUTF());
// 关闭输入流
dis.close();
// 关闭打开的socket对象
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
五、附加题(15分)
1、请写出5条代码编写规范性要求。
(每条1分)
2、请写出5条在频繁数据库操作、大批量数据运算等复杂计算逻辑的代码实现中避免或提升代码性能的方法。
(每条2分)