1、進程與線程關係
1)一個線程只屬於一個進程,一個進程至少擁有一個或多個線程;
2)進程作爲資源調度的基本單位,所有線程共享該進程資源;
3)線程作爲調度的基本單位,真正實現在處理機上執行;
4)線程執行過程需要協作同步,不同進程的線程利用消息通信同步。
2、進程與程序的區別
1)程序是一組有序的靜態指令,進程是一次程序的執行過程
2)程序可以長期保存,進程是暫時的
3)程序沒有狀態,而進程是有狀態的
注:一個程序至少一個進程,一個進程至少一個線程。
3、多線程的優缺點
優點:內部無須跨進程邊界;程序邏輯和控制方式簡單;線程直接共享內存和變量;線程方式消耗的總資源比進程方式少。
缺點:每個線程和主程序共用地址空間,受限於2GB地址空間;線程之間的同步和加鎖較爲麻煩;一個線程崩潰可能影響整個程序穩定性;線程數到一定程度難以通過增加CPU進行擴展,且難以調度。
4、多進程的優缺點
優點:進程間獨立,不贏天下主程序的穩定性;增加CPU,實現性能擴充;減少加鎖/解鎖操作,提升性能;每個進程獨享2GB地址空間和相關資源。
缺點:邏輯控制複雜;需要跨進程邊界。
5、數據庫中常用鎖的類型
1)共享鎖:用於所有的只讀數據操作,屬於非獨佔的,允許多個併發事務讀取其鎖定的資源。
2)排他鎖:用於對數據進行寫操作,只允許單個事務寫操作。
3)更新鎖:在修改操作初始化階段用來鎖定可能被修改資源,避免共享鎖產生死鎖現象。
6、TCP與UDP區別
1)TCP面向連接,UDP是無連接的;
2)TCP通過校驗和、重傳機制、序號標識、確認應答等機制實現可靠服務,UDP盡最大努力交互,不保證可靠服務;
3)TCP傳輸效率較低,UDP傳輸效率較高,適用於高速傳輸和實時性較高的通信;
4)TCP只支持一對一,點對點,UDP支持一對一,多對一,一對多和多對多的交互通信。
7、TCP三次握手與四次揮手
TCP在建立連接時需要三次握手,在斷開連接時需要四次揮手。如圖所示:
三次握手階段:客戶端向服務器發送連接請求的SYN包,包含自己的同步序列號;服務端收到請求後,對客戶端進行應答發送ACK以及自己的同步序列號;客戶端收到ACK後,再對服務端ACK應答進行應答,完成三次握手。
四次揮手階段:客戶端發送釋放請求,FIN並攜帶同步序列號,客戶端進入FIN-WAIT-1狀態;服務端收到釋放請求後,進行應答ACK,然後進入CLOEST-WAIT狀態;然後服務端進入收尾階段,將最後數據發送完成後,發送FIN,連接釋放後,進入LAST-ACK狀態;客戶端收到服務端發送的FIN釋放報文後,發送應答ACK,並進入TIME-WAIT狀態,經過2倍最長報文壽命後進入CLOEST狀態;服務端收到客戶端的ACK應答後就進入CLOEST狀態。
8、進程的狀態劃分
進程的狀態有兩種劃分方式:三態模型與五態模型。
1)三態模型:運行態、就緒態、阻塞(等待)態。
2)五態模型:新建態、就緒態、運行態、阻塞態、終止態。
9、數據庫設計的幾種範式
1)第一範式(1NF):強調數據表的原子性,每個屬性都不可再分;
2)第二範式(2NF):關係模式R滿足第一範式,並且R中每個非主屬性完全依賴於R的某個候選鍵,即所有非主屬性都和主鍵完全依賴;
3)第三範式(3NF):關係模式R滿足第二範式,並且每個非主屬性不傳遞依賴於R的候選鍵,即所有元素唯一地被主鍵標識,並相互獨立;
4)BCNF:構建於第三範式,如果關係模式R是第一範式,且每個屬性都不傳遞依賴於R的候選鍵;
5)第四範式4NF:存在多值依賴(一對多)的關係。(詳情可見關係數據設計-5大範式。)
10、suspend()和resume()方法,notify()和wait()方法區別
suspend()和resume()方法配套使用,屬於Thread類,suspend()使得線程進入阻塞狀態,並且不會自動恢復,必須其對應的 resume() 被調用,才能使得線程重新進入可執行狀態,該方法阻塞時不會釋放已佔用的鎖,並且可以在任意位置調用。
notify()和wait()方法配套使用,屬於Object類,區別在於該方法阻塞時會釋放已佔用的鎖,並且必須在synchronized 方法或塊中調用,理由也很簡單,只有在 synchronized 方法或塊中當前線程才佔有鎖,纔有鎖可以釋放。