刷题08

1.以下多线程对int型变量x的操作,哪几个不需要进行同步()
正确答案: D
A. x=y;
B. x++;
C. ++x;
D. x=1;
解析:A.由于y的值不确定,所以要加锁;
B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;
D 原子操作,所以不需要加锁
2.如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是()

正确答案: D
A. 2530
B. 55
C. 2052055
D. 25255
解析:先运算()内,x+y+""+25+5=25255
任何字符与字符串相加都是字符串,字符串前面的按原来的格式相加,字符串后面的都按字符串相加.

3.以下代码段执行后的输出结果为
public class Test {
public static void main(String args[]) {
int x = -5;
int y = -12;
System.out.println(y % x);
}
}
正确答案: D
A. -1
B. 2
C. 1
D. -2
解析:当x和y的正负相同时,取余和取模结果相同;
当x和y的正负不同时,取余结果的符号和x相同,取模结果的符号和y相同。
JAVA中%为取余运算,
Math.floorMod()为取模运算。
取余取头,取模取尾

4.看以下代码:
文件名称:forward.jsp

跳转 如果运行以上jsp文件,地址栏的内容为 正确答案: A A. http://127.0.0.1:8080/myjsp/forward.jsp B. http://127.0.0.1:8080/myjsp/index.jsp C. http://127.0.0.1:8080/myjsp/index.htm D. http://127.0.0.1:8080/myjsp/forward.htm 解析: forward请求转发:一次请求,服务器行为,服务器获取跳转页面内容传给用户,用户地址栏不变; redirect请求重定向:两次请求,客户端行为,是服务器向用户发送转向的地址,redirect后地址栏变成新的地址。

5.以下哪几种方式可用来实现线程间通知和唤醒:( )
正确答案: A C
A. Object.wait/notify/notifyAll
B. ReentrantLock.wait/notify/notifyAll
C. Condition.await/signal/signalAll
D. Thread.wait/notify/notifyAll
解析:wait()、notify()和notifyAll()是 Object类 中的方法;
Condition是在java 1.5中才出现的,它用来替代传统的Object的wait()、notify()实现线程间的协作,相比使用Object的wait()、notify(),使用Condition的await()、signal()这种方式实现线程间协作更加安全和高效。

6.下面几个关于Java里queue的说法哪些是正确的()?
正确答案: A C
A. LinkedBlockingQueue是一个可选有界队列,不允许null值
B. PriorityQueue,LinkedBlockingQueue都是线程不安全的
C. PriorityQueue是一个无界队列,不允许null值,入队和出队的时间复杂度是O(log(n))
D. PriorityQueue,ConcurrentLinkedQueue都遵循FIFO原则
解析:
ArrayBlockingQueue:基于数组,在创建ArrayBlockingQueue对象时必须制定容量大小,先进先出队列,有界队列,容量有上限。
LinkedBlockingQueue:基于链表,在创建LinkedBlockingQueue对象时如果不指定容量大小,默认大小为Integer.MAX_VALUE,先进先出队列,有界队列,容量有上限。
PriorityBlockingQueue:按照元素的优先级对元素进行排序,按照优先级顺序出队,每次出队的元素都是优先级最高的元素。注意,此阻塞队列为无界阻塞队列,即容量没有上限。

7.下列哪些方法是针对循环优化进行的
正确答案: A B D
A. 强度削弱
B. 删除归纳变量
C. 删除多余运算
D. 代码外提
解析:强度削弱的本质是把强度大的运算换算成强度小的运算,例如将乘法换成加法运算。

8.Java1.8版本之前的前提,Java特性中,abstract class和interface有什么区别()
正确答案: A B D
A. 抽象类可以有构造方法,接口中不能有构造方法
B. 抽象类中可以有普通成员变量,接口中没有普通成员变量
C. 类中不可以包含静态方法,接口中可以包含静态方法
D. 一个类可以实现多个接口,但只能继承一个抽象类。
解析:JDK1.8后,接口中可以有静态方法。

tips:
1.原子性:指该操作不能再继续划分为更小的操作。
Java中的原子操作包括:
1).除long和double之外的基本类型的赋值操作
2).所有引用reference的赋值操作
3).java.concurrent.Atomic.* 包中所有类的一切操作

2.forward与redirect
1)地址栏 url 显示:foward url 不会发生改变,redirect url 会发生改变;
2)数据共享:forward 可以共享 request 里的数据,redirect 不能共享;
3)效率:forward 比 redirect 效率高。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值