基礎(chǔ)知識(shí)1-答案
1.https的原理,用的是對(duì)稱加密還是非對(duì)稱加密
1.客戶端向服務(wù)器發(fā)起ssl鏈接
2.服務(wù)器發(fā)送公鑰到客戶端
3.客戶端發(fā)送對(duì)稱密鑰到服務(wù)器
4.服務(wù)器利用對(duì)稱密鑰傳輸數(shù)據(jù)
SSL協(xié)議在握手階段使用的是非對(duì)稱加密拷恨,在傳輸階段使用的是對(duì)稱加密
常見的對(duì)稱加密有:DES(Data Encryption Standard)邢疙、AES(Advanced Encryption Standard)邮府、RC4、IDEA
非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey)和私有密鑰(privatekey
2.死鎖原理,如何避免
產(chǎn)生死鎖的原因主要是:
- 因?yàn)橄到y(tǒng)資源不足挡闰。
- 進(jìn)程運(yùn)行推進(jìn)的順序不合適。
- 資源分配不當(dāng)?shù)取?/li>
產(chǎn)生死鎖的四個(gè)必要條件:
1.互斥條件:每個(gè)資源要么已經(jīng)分配給了一個(gè)進(jìn)程,要么就是可用的秩伞。
2.占有和等待條件:已經(jīng)得到了某個(gè)資源的進(jìn)程可以再請(qǐng)求新的資源。
3.不可搶占條件:已經(jīng)分配給一個(gè)進(jìn)程的資源不能強(qiáng)制性地被搶占欺矫,只能被占有它的進(jìn)程顯式地釋放纱新;
4.環(huán)路等待條件:死鎖發(fā)生時(shí),系統(tǒng)中一定有兩個(gè)或者兩個(gè)以上的進(jìn)程組成的一條環(huán)路穆趴,該環(huán)路中的每個(gè)進(jìn)程都在等待著下一個(gè)進(jìn)程所占有的資源脸爱。
四種處理死鎖的策略:
- 鴕鳥策略(忽略死鎖);
- 檢測(cè)死鎖并恢復(fù)未妹;
- 仔細(xì)對(duì)資源進(jìn)行分配簿废,動(dòng)態(tài)地避免死鎖;
- 通過破壞引起死鎖的四個(gè)必要條件之一络它,防止死鎖的產(chǎn)生族檬。
3.如下題:
int n = 0;
asyncA(10) ^{
n++;
}
asyncB(10) ^{
n++;
}
n = ?
n = 20
4.內(nèi)存堆和內(nèi)存棧的區(qū)別
棧:由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值酪耕,局部變量的值
堆:由程序員分配釋放导梆,若程序員不釋放,程序結(jié)束時(shí)可能由OS回收
int b; 棧
char s[] = "abc"; 棧
char *p2; 棧
char *p3 = "123456"; 123456/0在常量區(qū),p3在棧上
// 分配得來(lái)得10和20字節(jié)的區(qū)域就在堆區(qū)
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
5.字符串"abcde"的內(nèi)存長(zhǎng)度
6
6.int的長(zhǎng)度,指針的長(zhǎng)度
32位平臺(tái)
int:4字節(jié)
指針:4字節(jié)
64位平臺(tái)
int:4字節(jié)
指針:8字節(jié)
7.tcp是可靠的嗎
TCP可靠是因?yàn)樗诮㈡溌窌r(shí)進(jìn)行了“多次”地確認(rèn)
但是可靠也是相對(duì)的
8.udp如何保證數(shù)據(jù)到達(dá)
重新設(shè)計(jì)一下協(xié)議看尼,增加接收確認(rèn)超時(shí)重發(fā)