金山雲筆試:
1.兩個進程爭奪同一個資源會發生死鎖嗎?(死鎖發生的四個必要條件)
(1)互斥條件:一個資源每次只能別一個進程使用。
(2)請求和保持條件:一個進程因為請求資源而阻塞時,對持有資源保持不放。
(3)不剝奪條件:在進程沒有執行完成的情況下,持有資源不會被剝奪。
(4)循環等待條件:若個進程之間因為等待資源而形成一種循環關系。
在其他情況不明確的情況下,無法判斷兩個進程是否僅需要這一個資源就能完成,如果需要其他的資源,而資源被另外一個進程所持有,就有可能發生死鎖。
2.關於寄存器和高速緩存?
寄存器是中央處理器(cpu)的的組成部分,是有限存儲容量的高速存儲部件,可以暫存指令,數據和地址(指令寄存器(IR),程序計數器(pc),累加器(ACC))。
Cache,位於CPU和主內存之間容量小但速度很快的存儲器,是為了彌補CPU與內存之間的運算差距而設置的部件。
3.實現原子加操作
鎖總線,
恩~~,果然不是很明白,難受。。。
4.信號量,互斥體,自旋鎖。
信號量,相當於一個計數器,每當一個進程使用一個資源,信號量-1;進程釋放一個資源,信號量+1;當信號量為0時,進程無法使用該資源。
互斥體,在任何線程進入臨界區之前都先獲得臨界區的互斥體,其他進程沒有獲得互斥體便不能執行。
自旋鎖,跟互斥鎖挺像,但是未獲得執行權的進行不阻塞,而是循環請求,適應於持有鎖時間短的進程。
5.TCP中服務端和客戶端的執行完操作后的各種狀態。
(1)三次握手時:
客戶端:closed->syn-send->establised
服務端:listened->syn-rcvd->establised
(2)四次揮手時:
客戶端:fin-wait-1->fin-wait-2->time-wait->close
服務端:close-wait->last-ack->close
6.事務的隔離機制。
(1)readunCommited 事務修改數據加了X鎖,結束后釋放。解決了更新丟失。
(2)readCommited 在(1)的基礎上,每次事務讀數據時+S鎖,讀完(不是事務結束)釋放。解決了臟讀。
(3)repeatableRead 在(1)的基礎上,每次事務讀數據時+S鎖,事務結束后釋放。解決了不可重復度。
(4)serializable 事務串行執行。。。。
7.會引起全表查詢的情況。
(1)模糊查詢:右模糊查詢,全模糊查詢一定會產生全表掃描。
(2)查詢條件中含有 is null的select語句
(3)其余我真的不知道去哪查了。。。知道的可以回復我啊。