37.静态变量什么时候初始化
静态变量存储在虚拟地址空间的数据段和bss段,C语言中其在代码执行之前初始化,属于编译期初始化。而C++中由于引入对象,对象生成必须调用构造函数,因此C++规定全局或局部静态对象当且仅当对象首次用到时进行构造。
38.HTTP和HTTPS的区别
HTTP协议和HTTPS协议的区别如下:
- HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据经过TLS加密后,HTTPS具有更高的安全性
- HTTPS在TCP三次握手阶段之后,还需要进行SSL的handshake,协商加密使用的对称加密密钥
- HTTPS协议需要服务端申请证书,浏览器端安装对应的根证书
- HTTP协议的端口是80,HTTPS的协议端口是443
39.HTTPS的优缺点
优点:
- 传输数据过程中使用秘钥进行加密,所以安全性更高
- 可交易认证用户和服务器,确保数据发送到正确的用户和服务器
缺点:
- 握手阶段延时较高,由于在进行会话之前还需要进行SSL握手,因此HTTPS协议握手阶段延时增加
- 部署成本高,一方面HTTPS协议需要使用证书来验证自身的安全性,所以需要购买CA证书,另一方面由于采用HTTPS协议需要进行加解密的计算,占用CPU资源较多,需要的服务器配置或数目高。
40.IP地址和MAC地址的作用
MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。
IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
41.GET和POST的区别
对于GET方式的请求,浏览器会把http header和data一并发出去,服务器响应200(返回数据)
对于POST方式的请求,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)
主要区别如下:
- get参数通过url传递,post放到request body中
- get请求在url中传递的参数是有长度限制的,post没有
- get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息
- get请求只能进行url编码,而post支持多种编码方式
- get请求参数会被完整保留在浏览历史记录,post中的参数不会被保留
- get和post本质上就是tcp连接,并无差别,但是由于http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
- get产生一个tcp数据包,post产生两个数据包。
42.C++11中的auto不能用于什么情况
auto使用限制:
- 不能用于函数参数
- 不能用于非静态成员变量,可以用于静态常量成员变量,如
static const auto a = 0;
- 无法定义数组,如:
auto a[10] = {0}
; - 无法推导出模板参数, 如:
Bar<int> bar; Bar<auto> b = bar;
auto仅能用于推到static const的整型或者枚举成员,因为其他静态类型在C++标准中无法就地初始化,虽然C++11中可以接收非静态成员变量的就地初始化,但不支持auto类型非静态成员变量的初始化。
转载:https://blog.csdn.net/luoyayun361/article/details/105052748
查看评论