刷題 day 04 Java
1.下列Java常見的事件類中哪個是滑鼠事件類(C)
A InputEvent
B KeyEvent
C MouseEvent
D WindowEvent
2.方法通常儲存在程序中的哪一區(D)
A 堆區
B 棧區
C 全域性區
D 方法區
解析:1:棧區 主要用於存放區域性變數,傳遞引數,存放函式的返回地址。esp 始終指向棧頂, 棧中的資料越多, esp的值越小。
2.堆區:用於存放動態分配的物件。
3.全域性區(靜態區)(static)全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。
3.方法區:方法區是存放虛擬機器載入類的相關資訊,如類,靜態變數和常量。
3.以下描述錯誤的一項是(C)
A 程式計數器是一個比較小的記憶體區域,用於指示當前執行緒所執行的位元組碼執行到了第幾行,是執行緒隔離的
B 原則上講,所有的物件都是在堆區上分配記憶體,是執行緒之間共享的
C 方法區用於儲存JVM載入的類資訊,常量,靜態變數,即使編譯器編譯後的程式碼等資料是執行緒隔離的
D Java方法執行記憶體模型,用於儲存區域性變數,運算元棧,動態連結,方法出口等資訊,是執行緒隔離的
解析:方法區: 1.又叫靜態區,跟堆一樣,被所有的執行緒共享。方法區包含所有的class和static變數。 2.方法區中包含的都是在整個程式中永遠唯一的元素,如class,static變數。
4.下面有關SPRING的事務傳播特性,說法錯誤的是(B)
A PROPAGATION_SUPPORTS:支援當前事務,如果當前沒有事務,就以非事務方式執行
B PROPAGATION_REQUIRED:支援當前事務,如果當前沒有事務,就丟擲異常
C PROPAGATION_REQUIRES_NEW:新建事務,如果當前存在事務,把當前事務掛起
D PROPAGATION_NESTED:支援當前事務,新增Savepoint點,與當前事務同步提交或回滾
5.Java語言中,方法的重寫(Overriding)和過載(Overloading)是多型性的不同表現。下邊哪些說法是正確的(AC)
A 重寫是父類與子類之間多型性的一種表現
B 重寫是一個類中多型性的一種表現
C 過載是一個類中多型性的一種表現
D 過載是父類與子類之間多型性的一種表現
解析:重寫是子類繼承父類方法並對其進行修改,可選擇呼叫父類方法或子類重寫後的同名方法;過載是一個類可以存在同名但引數列表不同的方法,可根據傳入的引數呼叫相應的方法
6 關於HashMap和Hashtable正確的說法有(AC)
A 都實現了Map介面
B Hashtable類不是同步的,而HashMap類是同步的
C Hashtable不允許null鍵或值
D HashMap不允許null或值
解析:1、繼承不同。public class Hashtable extends Dictionary implements Map
public class HashMap extends AbstractMap implements Map
2、Hashtable 中的方法是同步的,而HashMap中的方法在預設情況下是非同步的。在多執行緒併發的環境下,可以直接使用Hashtable,但是要使用HashMap的話就要自己增加同步處理了。
3、Hashtable中,key和value都不允許出現null值。
在HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。當get()方法返回null值時,即可以表示 HashMap中沒有該鍵,也可以表示該鍵所對應的值為null。因此,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵, 而應該用containsKey()方法來判斷。
4、兩個遍歷方式的內部實現上不同。
Hashtable、HashMap都使用了 Iterator。而由於歷史原因,Hashtable還使用了Enumeration的方式 。
5、雜湊值的使用不同,HashTable直接使用物件的hashCode。而HashMap重新計算hash值。
6、Hashtable和HashMap它們兩個內部實現方式的陣列的初始大小和擴容的方式。HashTable中hash陣列預設大小是11,增加的方式是 old*2+1。HashMap中hash陣列的預設大小是16,而且一定是2的指數
7.關於OutOfMemoryError,下面說法正確的是(ABC)
A java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize這個引數的值的話,這個問題通常會得到解決。
B java.lang.OutOfMemoryError: Requested array size exceeds VM limit當你正準備建立一個超過虛擬機器允許的大小的陣列時,這條錯誤將會出現
C java.lang.OutOfMemoryError: Java heap space 一般情況下解決這個問題最快的方法就是通過-Xmx引數來增加堆的大小
D java.lang.OutOfMemoryError: nativeGetNewTLA這個異常只有在jRockit虛擬機器時才會碰到
解析:A 查了一下為"永久代"記憶體大小不足,“永久代”的解釋應該為JVM中的方法區,主要用於儲存類資訊,常量,靜態變數,即時編譯器編譯後代碼等。本錯誤僅限於Hotspot虛擬機器,本區進行垃圾回收很少,不夠直接加大簡單粗暴。
B 直接翻譯報錯資訊:陣列過長導致堆記憶體溢位,加大堆記憶體或者減少陣列長度。
C 堆記憶體不足,直接增大堆記憶體。
8 true ,false, null, sizeof, goto, synchronized哪些是關鍵字(goto synchronized)
解析:1,Java 關鍵字列表 (依字母排序 共50組):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留關鍵字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留關鍵字), if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14組),Java保留字是指現有Java版本尚未使用,但以後版本可能會作為關鍵字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留關鍵字) , const (保留關鍵字) , null
9 JDK提供的用於併發程式設計的同步器有哪些 (ABC)
A Semaphore
B CyclicBarrier
C CountDownLatch
D Counter
解析:Semaphore 訊號量,用於表示資源共享數量。用acquire()獲取資源,用release()釋放資源
CyclicBarrier 執行緒達到屏障後等待,當一組執行緒都達到屏障後才一起恢復執行
CountDownLatch 初始時給定一個值,每次呼叫countDown值減1,當值為0時阻塞的執行緒恢復執行。