| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> C++学习重点记录(Week7):面经常见问题汇总 -> 正文阅读 |
|
[网络协议]C++学习重点记录(Week7):面经常见问题汇总 |
一、计算机网络部分 (1)HTTP常见状态码分类 1XX:信息型状态码,表示接收的请求正在处理; 2XX:成功状态码:表示请求正常处理完毕; 3XX:重定向,表示需要进行附加操作以完成请求; 4XX:客户端错误,表示客户端请求出错,服务器无法处理请求; 5XX:服务器错误,表示服务器处理请求出错。 (2)HTTP常见状态码 ①2XX: 200 OK:请求被正常处理并返回; 204 No Content:请求成功处理,但没有资源可以返回; 206 Patial Content:客户端进行了范围请求,并且服务器成功执行了这部分的GET请求。 ②3XX: 301 Moved Permanently:永久性重定向,表示请求的资源被分配了新的URL,之后应使用更改后的URL; 302 Found:临时性重定向,表示请求的资源被分配了新的URL,希望本次访问使用新的URL; 303 See Other:表示请求的资源被分配了新的URL,应使用GET方法定向获取请求的资源。 ③4XX: 400 Bad Request:请求报文中存在语法错误; 401 Unauthorized:未经许可,需要通过HTTP认证; 403 Forbidden:服务器拒绝被访问; 404 Not Found:服务器上无法找到请求的资源。 ④5XX: 500 Inter Server Error:服务器在执行请求时发生了错误,也有可能是web应用存在的bug或某些临时的错误; 50. Server Unavailable:服务器暂时处于超负载或正在进行停机维护,无法处理请求。 (3)为什么需要三次握手? 答:防止主机发送的数据包隔了很久之后才到达服务端。如果没有第三次握手,那么服务端收到这个隔了很久的请求报文时会回应ACK,以为建立了链接,就会一直等待主机发送资源,但主机并没想连接,因此并不会发送资源,这样服务端就一直处于等待的状态,浪费资源。 (4)为什么需要四次挥手? 答:TCP是全双工模式,当主机发送FIN时,代表主机没有数据发送了,但主机还是可以接收服务端数据的。等服务端的第二次挥手即发送完确认包,表示知道主机已经没有数据发送了。然后再发送自己的FIN包,表示自己也没有数据发送了。如果收到主机的确认报文,就可以断开连接了。 (5)HTTP和HTTPS的区别 答:HTTP即超文本传输协议,是互联网上应用最为广泛的一种网络协议。HTTPS是以安全为目标的HTTP通道,是HTTP的安全版。安全基础是SSL,SSL协议位于TCP/IP与各种应用层协议之间,为数据通讯提供安全支持。 ①HTTPS设计目标: 数据保密性:保证数据内容在传输过程中不会被第三方查看; 数据完整性:及时发现被第三方篡改的传输内容; 身份校验安全性:通过身份校验保证数据到达用户期望的目的地。 ②两者区别: ·HTTPS需要费用; ·HTTP是明文传输,HTTPS是具有安全性的SSL加密传输协议; ·使用的连接方式不同,HTTP是TCP,端口是80;HTTPS是SSL,端口是443; ·HTTP是无状态连接(无状态是指其数据包的发送、传输、接收都是相互独立的,双方都不长久地维持对方的任何信息),而HTTPS是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。 二、操作系统部分 (1)堆栈溢出 ①概念:不顾堆栈中数据块大小,向数据块中写入过多的数据,导致数据越界,结果覆盖了老的堆栈数据。 ②过程:数组容不下所有元素时,系统会不断地向内存顶部写元素,但由于栈的声场方向是高地址到低地址,因此不会像其他内存结构一样不断更新最后一个元素,而是会不断覆盖前面的元素,因此会不断覆盖老的堆栈数据。 (2)堆和栈的主要区别 ①管理方式不同:堆由管理员自己分配,new和delete操作;栈由编译器自动管理; ②空间大小不同:堆内存很大,几乎没有什么限制;栈是由一定空间大小的; ③能否产生碎片不同:如果程序员操作不当,会出现内存泄漏,造成内存碎片;栈是由编译器分配,不会产生碎片; ④生长方向不同:栈是由高地址到低地址;堆是从低地址到高地址; ⑤分配方式不同:堆是动态分配;栈可以静态分配也可以动态分配; ⑥分配效率不同:栈是由机器系统提供的数据结构,计算机会在底层对战提供支持,因此分配效率方面,栈比对要高。 (3)缓冲区溢出 ①概念:当计算机向缓冲区填充数据时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上; ②危害:程序崩溃,导致拒绝服务;跳转并且执行一段恶意代码; ③原因:造成缓冲区溢出的主要原因是程序中没有仔细检查用户输出是否合理。 (4)上下文切换 ①上下文:每个任务运行前,CPU都需要知道任务从哪里加载,又从哪里开始运行,这就涉及到CPU寄存器和程序计数器(PC)。CPU寄存器是CPU内置的容量小但速度极快的内存;程序计数器会存储在CPU正在执行的指令位置,或即将执行的指令位置。这两个是CPU运行任务前都必须依赖的环境,因此叫做CPU上下文。 ②切换步骤: ·将前一个CPU的上下文保存起来; ·加载新任务的上下文的寄存器和PC; ·跳转到PC指定的新位置,运行新任务。 (5)协程 ①概念:协程是线程内的函数,和进程、线程不是一个维度的概念。一个进程可以有多个线程,同样一个线程可以有多个协程,这些协程在线程内部是串行运行的。 ②适用场景:适用于I/O阻塞的场景。当一个协程I/O阻塞时,它可以切换到其他没有阻塞的协程上继续执行,这样效率较高。 三、其他 (1)哈希冲突及解决方法 ①概念:就是不同的key对应了同一个value值; ②产生原因: ·散列函数:一个好的散列函数应该保证value值尽可能的平均分布; ·处理冲突方法; ·负载因子的大小;太大不一定就好,并且浪费空间严重,负载因子和散列函数是联动的。 ③解决方法: ·拉链法:将链表和数组相结合,也就是创建一个链表数组。如果遇到冲突的值就把这个值加到链表后面,适用于造表前 无法确定表长的情况(因为链表添加元素很方便且容量大); ·开发地址法: 如果冲突了,就通过查找方法一直查找,找到第一个空的地址,放入其中。适用于表长确定的情况,如果不确定可能会溢出。查找方法分为线性探测(一直向后找)、二次探测(在表的左右进行跳跃式探测,比较灵活)、伪随机探测(建立一个伪随机数发生器,并给定一个随机数做起点); ·再哈希法: 在设计哈希表的时候设计多个散列函数,如果主体函数冲突了,就使用其他散列函数; ·建立公共溢出区: 将哈希表分为基本表和溢出表两部分,凡是和基本表发生冲突的就填入溢出表。 (2)static关键字 ①定义全局平台变量:在声明它的文件之外不可见; ②定于局部静态变量:当局部静态变量离开作用域后,并没有销毁,而是存留于静态存储区中,只不过我们不能对它进行访问,直到该函数再次被调用,并且值不变,在程序的整个周期都存在; ③定义静态函数:静态函数只能在声明它的文件中可见,不能被其他文件所用。如果函数被static修饰,那么这个函数只能在本cpp内使用,且不会与其他cpp中的同名函数起冲突; ④类的静态成员:在类中,静态成员可以实现多个对象之间的数据共享。类的静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对于类来说,静态数据成员只存储一处,供所有对象公用,包括派生类的对; ⑤类的静态成员函数:在静态成员函数的实现中,不能直接引用类中说明的非静态成员、可以引用类中说明的静态成员。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 18:32:06- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |