整理的CCAT学习考试JAVA试题,如下:
一、填空题(每空2分,共20分)。
1.将一个行内标签转换为块状标签的CSS样式是 display:block
。
2.表达式19/3*3+19%3的值是 19
。
3.用static
修饰的变量叫静态变量,他可以通过对象
和类名
两种方式访问。
4.如果一个方法被修饰为重写 / final
方法,则这个方法不能被重写。
5.下述代码输出结果是:ABC
public class Test {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
list.add("F");
for (int i = 0; i < list.size(); i++) {
//poll 获取并移除列表的头
System.out.println(list.poll());
}
}
}
- 输出后I和J的值分别是
100
,0
。
public class Test {
public static void main(String[] args) {
int j = 0;
int i = 0;
for(;i<100; i++){
j = j++;
}
System.out.println(i);
System.out.println(j);
}
}
- 分析下面的java代码输出结果为
7
public class Point {
int x,y;
Point(int x,int y){
this.x=x;
this.y=y;
}
public static void main(String[] args){
Point pt1,pt2;
pt1=new Point (3,3);
pt2=new Point(4,4);
System.out.print(pt1.x+pt2.x);
}
}
二、选择题(本大题 20 小题,每小题2分.共40分)。
-
可以通过修改(
A
)文件的 (A
) 节点来配置Tomcat端口号。
A:server.xml
B:web.xml
C:server.xml
D:web.xml -
在Java中,关于类和对象,以下说法正确的是(
A
)。
A:类定义了概念模型,而对象是真正的实体
B:对象定义了概念模型,而类是真正的实体
C:类是对象的子集
D:对象是类的子集 -
在Java中,Statement接口中包含很多基本数据库操作方法,以下说法不正确的是(
B
)。
A:ResultSet executeQuery(String sql):可以执行SQL语句并获取ResultSet对象
B:boolean executeUpdate(String sql):可以执行插入、删除、更新等操作
C:boolean execute(String sql):可以执行任意SQL语句,表示SQL语句是否执行成功
D:int executeUpdate(String sql):可以执行插入、删除、更新等操作 -
某Java类中包含如下main函数,则编译运行此类的结果是(
C
)。
A:第1行出现编译错误
B:第2行出现编译错误
C:第3行出现编译错误
D:程序正确运行,输出结果为:a+b=17.2
public static void main(String args[]) {
double a = 10.2; //第1行
int b = 7, result; //第2行
result = a + b; //第3行
System.out.println("a+b=" + result);
}
-
在Java中,下列选项说法不正确的是(
D
)。
A:java.util.Random类用于生成随机数
B:java.util.Random类的nextInt()方法返回一个此随机生成器序列中均匀分布的int值
C:java.util.Random类的nextInt()方法返回一个此随机生成器序列中在0(包括)和指定值(不包括)之间均匀分布的int值
D:执行代码:System.out.println(new java.util.Random().nextInt(10)+1);输出的值不可能为10 -
有如下JavaScript代码,页面运行后,输出(
C
)。
A:abc
B:0
C:NaN
D:页面报错,无法运行
<script type=“text/javascript”> var x=parseInt("abc"); document.write(x); </script>
-
在JSP页面上,以下(
C
)语句,可以把类java.util.Date引入到JSP页面。
A:<% page import =“java.util.Date” %>
B:<%@ page import =“java.util.Date” @%>
C:<%@ page import =“java.util.Date” %>
D:<%@ import =“java.util.Date” %> -
在JSP中,以下关于Cookie描述错误的是(
C
)。
A:Cookie是在客户端保存用户相关数据的
B:Cookie可以保存字符串
C:Cookie可以保存任意类型的对象
D:不建议在Cookie中保存比较重要或敏感的内容 -
在JSP中,以下关于转发和重定向的说法正确的是(
B D
)。
A:不管转发还是重定向,客户端浏览器中显示的都是新的URL地址
B:重定向可以理解为是浏览器至少提交了两次请求。它是在客户端发挥作用,通过请求新的地址实现页面转向
C:转发和重定向都可以共享request范围内的数据
D:转发通过request的getRequestDispatcher().forward()方法即可实现。它的作用是在多个页面交互过程中实现请求数据的共享 -
关于HTML的Ajax工作流程,说法正确的是(
B
)。
A:服务器端产生js事件
B:必须创建XMLHttpRequest对象
C:服务器端处理请求后,必须以纯文本方式返回
D:XMLHttpRequest对象有4个响应状态 -
仔细分析下面程序,while 的循环次数是 (
D
)
A、1 B、10 C、6 D、死循环,不能确定次数
int i=0;
while(i<10) {
if(i<1) continue;
if(i==5) break; i++;
}
-
为了区分重载多态中同名的不同方法,要求:(
B
)。
A)参数名不同 B) 采用不同的形式参数列表
C)返回值类型不同 D) 选项A, B, C都对 -
以下哪个不是Collection的子接口?(
C
)。
A) List B) Set C) Map D) SortedSet -
下列说法正确的有(
C
)
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D.一个class只能定义一个constructor -
CSS样式background-position:5px -10px代表的意义是(
D
)。
A.背景图片向左偏移5px,向下偏移10px
B.背景图片向左偏移5px,向上偏移10px
C.背景图片向右偏移5px,向下偏移10px
D.背景图片向右偏移5px,向上偏移10px -
以下哪个描述是正确的?
D
A.多线程是Java语言独有的
B.多线程需要多CPU
C.多线程要求一个计算机拥有单独一个CPU
D.Java语言支持多线程 -
以下代码的执行结果是?
C
A.large.txt文件在本地硬盘上被创建
B.在Unix系统上运行失败,因为路径分割符不正确
C.large.txt文件在本地硬盘上没有被创建
D.如果large.txt文件已经存在,则一个异常被抛出
public class Example {
public static void main(String[] args) {
File f = new File("c:\\large.txt");
}
- 请选择以下代码运行结果?(
C
)
A、0
B、1
C、2
D、3
public class test {
public static void main(String args[]) {
int i=0, j=2;
do {
i=++i;
j--;
} while(j>0);
System.out.println(i);
}
}
- 请选择以下代码运行结果?(
A
)
A、编译出错
B、运行出错
C、null
D、””
Character c1=-13;
Character c2=-13;
System.out.println("c1==c2"+(c1==c2));
- 自定义类Account,创建此类对象account,哪个选项不能正确返回Class对象?(
A
)
A、account.class
B、Account.class
C、account.getClass()
D、Class.forName(“Account”)
三、问答题(共40分)。
- 抽象类(abstract class)和接口(interface)有什么异同?(6分)
答:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方法。抽象类中的成员可以是private、默认、protected、public的,而接口中的成员全都是public的。抽象类中可以定义成员变量,而接口中定义的成员变量实际上都是常量。有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法。
- List、Map、Set三个接口存取元素时,各有什么特点? (6分)
答:List以特定索引来存取元素,可以有重复元素。Set不能存放重复元素(用对象的equals()方法来区分元素是否重复)。Map保存键值对(key-value pair)映射,映射关系可以是一对一或多对一。Set和Map容器都有基于哈希存储和排序树的两种实现版本,基于哈希存储的版本理论存取时间复杂度为O(1),而基于排序树版本的实现在插入或删除元素时会按照元素或元素的键(key)构成排序树从而达到排序和去重的效果。
- Statement和PreparedStatement有什么区别?哪个性能更好?(6分)
答:与Statement相比,①PreparedStatement接口代表预编译的语句,它主要的优势在于可以减少SQL的编译错误并增加SQL的安全性(减少SQL注射攻击的可能性);②PreparedStatement中的SQL语句是可以带参数的,避免了用字符串连接拼接SQL语句的麻烦和不安全;③当批量处理SQL或频繁执行相同的查询时,PreparedStatement有明显的性能上的优势,由于数据库可以将编译优化后的SQL语句缓存起来,下次执行相同结构的语句时就会很快(不用再次编译和生成执行计划)。 补充:为了提供对存储过程的调用,JDBC API中还提供了CallableStatement接口。存储过程(Stored Procedure)是数据库中一组为了完成特定功能的SQL语句的集合,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。虽然调用存储过程会在网络开销、安全性、性能上获得很多好处,但是存在如果底层数据库发生迁移时就会有很多麻烦,因为每种数据库的存储过程在书写上存在不少的差别
- 请求转发和重定向的区别(6分)
答:
1、重定向是两次请求,转发是一次请求,因此转发的速度要快于重定向
2、重定向之后地址栏上的地址会发生变化,变化成第二次请求的地址,转发之后地址栏上的地址不会变化,还是第一次请求的地址
3、转发是服务器行为,重定向是客户端行为。重定向时浏览器上的网址改变 ,转发是浏览器上的网址不变
4、重定向是两次request,转发只有一次请求
5、重定向时的网址可以是任何网址,转发的网址必须是本站点的网址
- 编写方法给定参数a,b,c求一元二次方程式的跟 y=ax^2+bx+c (8分)
提示:△=b2-4ac的值,若△小于0,一元二次方程无根.若△等于0,一元二次方程有两个相等的根.若△大于0,一元二次方程有两个不相等的实数根(‘’表示平方)
答:
{
public static void main(String [] args){
Scanner sc = new Scanner(System.in);
System.out.println("输入2次方的系数");
int a = sc.nextInt();
System.out.println("输入1次方的系数");
int b = sc.nextInt();
System.out.println("输入0次方的系数");
int c = sc.nextInt();
//判断方程是否有解
if((b*b - 4*a*c)<0){
System.out.println("方程无解!");
return;
}
else{
System.out.println("方程有解!");
}
double x1 = (-b + Math.sqrt(b*b - 4*a*c))/2*a;
double x2 = (-b - Math.sqrt(b*b - 4*a*c))/2*a;
System.out.println("根分别是 " + x1 + "\t" + x2);
}
}
- 验证“鬼谷猜想”:对任意自然数,若是奇数,就对它乘以 3 再加 1;若是偶数,就对它除以 2,这样得到一个新数,再按上述计算规则进行计算,一直进行下去,最终必然得到 1. (8分)
答:
import java.util.Random;
public class Test {
public static void main(String[] args) {
int num;
Random rd=new Random();
//Integer.MAX_VALUE为最大的整数
num=1+rd.nextInt(Integer.MAX_VALUE);//产生数的范围-2[31]----2[31]-1
//System.err.println(rd.nextInt(100));//产生数>=0且<100
System.out.println("原本的数为"+num);
while(num!=1){
System.out.println("产生的新数是"+num);
if(num%2==0){
//偶数
num=num/2;
}
else{
num=num*3+1;
}
}
System.out.println(num);
}
}