1、思维导图
2、模拟面试题
1)TCP通信中的三次握手和四次挥手
答:三次握手
客户端向服务器发送连接请求
服务器向客户端回复应答并向客户端发送连接请求
客户端回复服务端,并建立联系
四次挥手
进程a向进程b发送断开连接请求
进程b回应进程a的断开请求
进程b向进程a发送断开连接请求
进程a回应进程b的请求,并断开连接
2)并发和并行的区别
答:并发是针对单核的,在只有一个处理器的情况下,同时运行多个进程、任务,称为多并发
并行是针对多核来说的,多个CPU同时处理多个任何称为并行
3)阻塞IO和非阻塞IO的区别
答:阻塞IO会进行等待事件的产生,如果事件没有发生,会阻塞等待,不会执行后续的任务
而非阻塞IO,如果等待的事件没有发生,会立即返回,继续后续的任务
4)同步和异步的区别
答:同步是表示任务有顺序的执行,一个任务要等到上个任务执行完成后才能进行
异步是表示多个任务执行没有先后顺序,可以并发执行
5)详细描述IO多路复用的原理
答:在没有操作系统的情况下,想要让多任务并发执行,于是就引入了IO多路复用技术
原理:将多个阻塞任务的文件描述符,统一放入到一个检测容器中,然后用一个阻塞函数进行管理,如果检测容器中有一个或多个文件描述符对应的事件产生,就会解除阻塞,进而去执行相应的函数,如此循环,实现多路复用。
6)广播的相关内容
答:1.主机之间是一对多的通信模式,网络对其中的每一台主机都会将消息进行转发
2.在当前网络下的所有主机都会收到广播消息(无论对方释放愿意接收)
3.广播的实现方式是基于UDP通信模型
4.广播地址:当前网络号 + 全是1的主机号
5.广播消息不允许穿过路由器
7)组播的相关内容
答:1.组播是实现一对多的通信机制,也就是说,加入了同一个小组的主机可以收到该组内发送的数据
2.组播也是通过UDP实现的
3.组播地址:D类网络地址【224.0.0.0 --- 239.255.255.255】
4.发送端类似于UDP客户端,接收端类似于UDP的服务端
8)在使用套接字通信时,客户端就一定不需要绑定操作吗
答:不一定,对于报式域套接字而言,如果不绑定套接字文件,系统不会自动绑定,发生数据没有问题,但是服务器不能向客户端发送消息。
9)目前学习的进程间通信方式有哪些
答:套接字,有名管道,无名管道,信号,信号灯集,消息队列,共享内存
10)线程的同步互斥机制
答:由于多线程通信时,多个线程会争抢运行临界区,即竞态,又由于线程的自然运行状态无法预测,在临界区的任何代码中都可能随时结束运行,导致代码的逻辑出现问题,所以多线程编程的核心,其实就是对处于竞态的临界区做出保护,就有了同步和互斥机制,互斥是多个线程操作拥有临界资源的临界区的时候,一旦有一个线程正在操作的时候,其他线程都不能运行这段拥有临界资源的临界区,直到第一个线程运行结束, 剩下的其他线程再去抢夺运行权,同步可以简单的理解成有顺序的互斥,通过互斥的手段,安排好每一个线程的运行顺序。
互斥可以采用互斥锁,同步可以使用信号量和条件变量