1.http 与 https 的区别逐字稿
https 是在 http 的基础上,在 tcp 连接之后建立 tls 连接,tls 通过证书验证服务器身份,并通过非对称加密等协商密钥,使用对称加密的方式传输数据,https 还会校验数据的完整性。
2.new 和 malloc 的区别
new 是 c++的分配堆上空间的方法,而 malloc 属于 c,new 会在分配空间之后调用对象的构造函数而 malloc 不会,new 返回的是指向对象的指针,malloc 返回的是无类型的指针,new 之后要 delete,malloc 后要 free。
在调用失败之后 new 是抛出异常,而 malloc 是返回 nullptr。
3.进程退出的几种方法
首先是主动退出的方法,main 通过 return 退出进程,可以使用 exit 这个 c 库函数去退出,exit 会刷新 stdio 缓冲区,系统调用 exit 也可以退出。
异常退出的情况可以使用 abort 也可以是在接收到一些信号比如 ctrl+c 的情况下进程会退出。
4.关于智能指针
c++的智能指针是基于 Raii 资源管理方式,管理动态对象生命周期的方法,可以避免手动 delete 造成的内存泄漏。
uniqueptr 独享所有权,不能被拷贝只能被移动。
sharedptr 共享对象所有权,内部有引用计数,当引用计数为 0 时自动释放对象的空间。
weakptr 和 sharedptr 是结合起来使用的,解决了 sharedptr 循环引用的问题,在使用前要通过 lock 去尝试获得 sharedptr 再去使用。
5.避免僵尸进程的方法
可以通过父进程 wait wait pid 去回收资源,可以使用信号处理函数去收到信号时去 wait pid 回收资源,如果不关心子进程退出可以忽略信号由内核进行处理,也可以使用两个 fork,子进程立马 exit 由父进程回收资源,孙进程变成孤儿进程由 init 进程回收。