天梯180416
1. 下面有关servlet中init,service,destroy方法描述错误的是?
A. init()方法是servlet生命的起点。一旦加载了某个servlet,服务器将立即调用它的init()方法
B. service()方法处理客户机发出的所有请求
C. destroy()方法标志servlet生命周期的结束
D. servlet在多线程下使用了同步机制,因此,在并发编程下servlet是线程安全的
2. 下列说法正确的有()
A. 数组是一种对象
3. 数组属于一种原生类
4. int number=[]={31,23,33,43,35,63}
5. 数组的大小可以任意改变
3. 假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
boolean isOdd = false;
for(int i=1;i<=2;++i) {
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
A. -1
B. -2
C. 0
D. 1
4.
设有下面两个赋值语句:
a = Integer.parseInt("1024");
b = Integer.valueOf("1024").intValue();
下述说法正确的是()
A. a是整数类型变量,b是整数类对象。
B. a是整数类对象,b是整数类型变量。
C. a和b都是整数类对象并且它们的值相等。
D. a和b都是整数类型变量并且它们的值相等。
5. 事务隔离级别是由谁实现的?
A. Java应用程序
B. Hibernate
C. 数据库系统
D. JDBC驱动程序
//-------------------------分各线----------------------------
D
A
D
D
C
答案详解:
1.
servlet在多线程下其本身并不是线程安全的。
如果在类中定义成员变量,而在service中根据不同的线程对该成员变量进行更改,那么在并发的时候就会引起错误。最好是在方法中,定义局部变量,而不是类变量或者对象的成员变量。由于方法中的局部变量是在栈中,彼此各自都拥有独立的运行空间而不会互相干扰,因此才做到线程安全。
2. 原生类是指Java中,数据类型分为基本数据类型(或叫做原生类、内置类型)和引用数据类型。
3.
易知:每个线程对a 均做了两次读写操作,分别是 “ +1 ” 和 “ -2 ”
而题目问了是最终a 的结果,所以 a 的结果取决于各自线程对 a 的先后读写的顺序
结论:a的可能取值为-1、0、-2
4.
intValue()是把Integer对象类型变成int的基础数据类型;
parseInt()是把String 变成int的基础数据类型;
Valueof()是把String 转化成Integer对象类型;(现在JDK版本支持自动装箱拆箱了。)
5.
A,我们写java程序的时候只是设定事物的隔离级别,而不是去实现它
B,Hibernate是一个java的数据持久化框架,方便数据库的访问
C,事物隔离级别由数据库系统实现,是数据库系统本身的一个功能
D,JDBC是java database connector,也就是java访问数据库的驱动