基础知识1-答案
1.https的原理,用的是对称加密还是非对称加密
1.客户端向服务器发起ssl链接
2.服务器发送公钥到客户端
3.客户端发送对称密钥到服务器
4.服务器利用对称密钥传输数据
SSL协议在握手阶段使用的是非对称加密,在传输阶段使用的是对称加密
常见的对称加密有:DES(Data Encryption Standard)、AES(Advanced Encryption Standard)、RC4、IDEA
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey
2.死锁原理,如何避免
产生死锁的原因主要是:
- 因为系统资源不足。
- 进程运行推进的顺序不合适。
- 资源分配不当等。
产生死锁的四个必要条件:
1.互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的。
2.占有和等待条件:已经得到了某个资源的进程可以再请求新的资源。
3.不可抢占条件:已经分配给一个进程的资源不能强制性地被抢占,只能被占有它的进程显式地释放;
4.环路等待条件:死锁发生时,系统中一定有两个或者两个以上的进程组成的一条环路,该环路中的每个进程都在等待着下一个进程所占有的资源。
四种处理死锁的策略:
- 鸵鸟策略(忽略死锁);
- 检测死锁并恢复;
- 仔细对资源进行分配,动态地避免死锁;
- 通过破坏引起死锁的四个必要条件之一,防止死锁的产生。
3.如下题:
int n = 0;
asyncA(10) ^{
n++;
}
asyncB(10) ^{
n++;
}
n = ?
n = 20
4.内存堆和内存栈的区别
栈:由编译器自动分配释放,存放函数的参数值,局部变量的值
堆:由程序员分配释放,若程序员不释放,程序结束时可能由OS回收
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456/0在常量区,p3在栈上
// 分配得来得10和20字节的区域就在堆区
p1 = (char *)malloc(10);
p2 = (char *)malloc(20);
5.字符串"abcde"的内存长度
6
6.int的长度,指针的长度
32位平台
int:4字节
指针:4字节
64位平台
int:4字节
指针:8字节
7.tcp是可靠的吗
TCP可靠是因为它在建立链路时进行了“多次”地确认
但是可靠也是相对的
8.udp如何保证数据到达
重新设计一下协议,增加接收确认超时重发