1. 程式人生 > >Java筆試題不會的地方總結

Java筆試題不會的地方總結

1、一般關係資料模型和物件資料模型之間有以下對應關係:表對應類,記錄對應物件,表的欄位對應類的屬性

2、sleep()和wait()相同點與不同點:Java中的多執行緒是一種搶佔式的機制,而不是分時機制。搶佔式的機制是有多個執行緒處於可執行狀態,但是隻有一個執行緒在執行。 
共同點 : 
1. 他們都是在多執行緒的環境下,都可以在程式的呼叫處阻塞指定的毫秒數,並返回。 
2. wait()和sleep()都可以通過interrupt()方法 打斷執行緒的暫停狀態 ,從而使執行緒立刻丟擲InterruptedException。 
如果執行緒A希望立即結束執行緒B,則可以對執行緒B對應的Thread例項呼叫interrupt方法。如果此刻執行緒B正在wait/sleep/join,則執行緒B會立刻丟擲InterruptedException,在catch() {} 中直接return即可安全地結束執行緒。 
需要注意的是,InterruptedException是執行緒自己從內部丟擲的,並不是interrupt()方法丟擲的。對某一執行緒呼叫 interrupt()時,如果該執行緒正在執行普通的程式碼,那麼該執行緒根本就不會丟擲InterruptedException。但是,一旦該執行緒進入到 wait()/sleep()/join()後,就會立刻丟擲InterruptedException 。 
不同點 :  
1.每個物件都有一個鎖來控制同步訪問。Synchronized關鍵字可以和物件的鎖互動,來實現執行緒的同步。 
sleep方法沒有釋放鎖,而wait方法釋放了鎖,使得其他執行緒可以使用同步控制塊或者方法。 
2.wait,notify和notifyAll只能在同步控制方法或者同步控制塊裡面使用,而sleep可以在任何地方使用 
3.sleep必須捕獲異常,而wait,notify和notifyAll不需要捕獲異常 
4.sleep是執行緒類(Thread)的方法,導致此執行緒暫停執行指定時間,給執行機會給其他執行緒,但是監控狀態依然保持,到時後會自動恢復。呼叫sleep不會釋放物件鎖。

5.wait是Object類的方法,對此物件呼叫wait方法導致本執行緒放棄物件鎖,進入等待此物件的等待鎖定池,只有針對此物件發出notify方法(或notifyAll)後本執行緒才進入物件鎖定池準備獲得物件鎖進入執行狀態。

3、JVM堆分割槽

1,新生代:(1)所有物件建立在新生代的Eden區,當Eden區滿後觸發新生代的Minor GC,將Eden區和非空閒Survivor區存活的物件複製到另外一個空閒的Survivor區中。(2)保證一個Survivor區是空的,新生代Minor GC就是在兩個Survivor區之間相互複製存活物件,直到Survivor區滿為止。

2,老年代:當Survivor區也滿了之後就通過Minor GC將物件複製到老年代。老年代也滿了的話,就將觸發Full GC,針對整個堆(包括新生代、老年代、持久代)進行垃圾回收。

3,持久代:持久代如果滿了,將觸發Full GC。


四、執行緒和程序的區別聯絡: 1,程序:子程序是父程序的複製品。子程序獲得父程序資料空間、堆和棧的複製品。 2,執行緒:相對與程序而言,執行緒是一個更加接近與執行體的概念,它可以與同進程的其他執行緒共享資料,但擁有自己的棧空間,擁有獨立的執行序列。      
兩者都可以提高程式的併發度,提高程式執行效率和響應時間。      
執行緒和程序在使用上各有優缺點:執行緒執行開銷小,但不利於資源管理和保護;而程序正相反。同時,執行緒適合於在SMP機器上執行,而程序則可以跨機器遷移。 根本區別就一點:用多程序每個程序有自己的地址空間(address space),執行緒則共享地址空間。所有其它區別都是由此而來的: 
1、 速度:
執行緒產生的速度快,執行緒間的通訊快、切換快等,因為他們在同一個地址空間內。 
2、 資源利用率:執行緒的資源利用率比較好也是因為他們在同一個地址空間內。 
3、 同步問題:執行緒使用公共變數/記憶體時需要使用同步機制還是因為他們在同一個地址空間內
五、用補碼錶示時8位暫存器所能表示的整數範圍為-128到+127。  
r   1   =(15×16+14)-256=-2;  
r   2   =(15×16+2)-256=-14;  
r   3   =(9×16+0)-256=-112;  
r   4   =(15×16+8)-256=-8;  
則r   1   ×r   2   =28,r   2   ×r   3   =1568,r   1   ×r   4   =16,r   2   ×r   4   =112,只有r   2   ×r   3   結果溢位。