刷题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
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 效率高。
總結
- 上一篇: error: Pulling is no
- 下一篇: Parallel类