1. 异步通信和同步通信的区别?
- 同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信不要求接收端时钟和发送端时钟同步,发送端发送完一个字节后,可以经过任意长的时间间隔再发送下一个字节;
- 同步通信效率高,异步通信效率低;
- 同步通信复杂,双方时钟允许的误差小;异步通信简单,双方时钟可以允许一定误差;
- 同步通信可用于点对多点,异步通信只适用于点对点;
2. TCP协议的作用?三次握手?
TCP提供面向连接的可靠数据传输服务,依靠接收端TCP软件按序号对收到的数据分组进行逐一确认实现。
三次握手过程:
- 第一次握手,建立连接时,客户端发送SYN(syn=j)包到服务器,进入SYN_SEND状态,等待服务器确认;
- 第二次握手,服务器收到SYN包,确认客户的SYN(ack=j+1),同时自己发送一个SYN(syn=k)包,即SYN+ACK包,此时服务器进入SYN_RECV状态;
- 第三次握手,客户端收到服务器的SYN+ACK包,向服务器发送ACK(ack=k+1),此包发送完毕后,客户端和服务器进入ESTABLISHED状态,完成三次握手;
3. 操作系统执行程序时,内存分配是怎样的?
- 栈(stack)区:由编译器自动分配与释放,存放函数的参数值,局部变量等,主要操作方式类似于数据结构中的栈;
- 堆(heap)区:一般由程序员分配与释放,若程序员不释放,程序结束时,可能由OS回收。它与数据结构中的堆无关,分配方式类似于链表;
- 全局区(静态区):全局变量和静态变量的存储区域,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和静态变量在相邻的另一块区域,程序结束后由系统释放;
- 文字常量区:常量字符串存储区域,程序结束后,由系统释放;
- 程序代码区:存放函数体的二进制代码;
4. 堆与栈的区别

本文总结了C++基础知识中的关键知识点,包括异步通信与同步通信的区别,TCP协议的三次握手过程,操作系统执行程序时的内存分配,堆与栈的区别,进程间的通信方式,以及面向对象的三大特征。此外,还探讨了C++与Java在内存管理和全局变量等方面的差异,并介绍了Windows编程中的自定义消息实现步骤。
最低0.47元/天 解锁文章
938

被折叠的 条评论
为什么被折叠?



