1.IO多路复用的原理?
IO多路复用使得一个或少量线程资源处理多个连接的IO事件的技术。对于要处理的多个阻塞的IO操作,建立集合并存储它们的文件描述符,利用单个阻塞函数去监控集合中文件描述符事件到达的情况,(如果到达,集合中会保留对应的文件描述符,阻塞函数变为非阻塞,向后执行统一处理的代码),从而实现将多个阻塞函数变为一个阻塞函数,实现IO多路的复用。
2.实现IO多路复用可以使用哪些函数完成?
select、poll、epoll
3.select和poll的区别
select支持的最大文件描述符是1024个,传参为最大文件描述符的+1,同时监控三个文件描述符集合:读fds、写fds、异常fds,超时时间传参是地址传递;poll支持无上限的文件描述符,传参为文件描述符的个数,监控一个文件描述符集合,常用结构体数组表示,超时时间是值传递
4.在UDP通信过程中,能否使用connect函数?为什么?有什么好处?
可以,使用connect函数能够建立端点之间唯一通信,断开之前,其余端点不接受通信,能够实现数据稳定传输,不至于再跟某个端点通信时被其他端点打断,还能提高传输效率,原因是使内核不再清空对端地址信息从而持续读取消息
5.OSI 7层网络体系结构有哪些?
物理层、数据链路层、网络层、传输层、会话层、表示层、应用层
6. TCP/IP协议簇体系结构有哪些?
链路层、网络层、传输层、应用层
7.ARP、HTTP、TFTP、IP、UDP、TCP说出全称和所在层
ARP,地址解析协议,数据链路层
HTTP,超文本传输协议,应用层
TFTP,简单文件传输协议,应用层
IP,网际互联协议,网络层
UDP,用户数据报协议,传输层
TCP,传输控制协议,传输层
8.100.0.125.2的子网掩码是什么?
100.0.125.2是A类IP地址,8位网络号,故子网掩码为255.0.0.0
9.顺序表和链表的区别
顺序表逻辑结构是线性表,物理结构是顺序存储,常用数组实现,逻辑结构和物理结构均连续,内存使用效率低,查找和修改效率高,为O(1),增加和删除的效率低,为O(n);链表逻辑结构也是线性表,物理结构是链式存储,逻辑结构连续,物理结构不一定连续,内存使用效率高,增加和删除的效率高,为O(1),查找和修改的效率低,为O(n)
10.进程和线程的区别
内存管理:子进程创建后完全拷贝父进程内存空间(3GB),内存空间相互独立;创建子线程后额外开销为8KB用于存放线程属性、内存起始和终止位置、线程ID等数据,与主线程共享内存空间(如全局变量,相互传参)
角色不同:进程是获取资源的最小单位,线程是资源分配的最小单位
效率不同:多进程切换效率低于多线程
关联性不同:
多进程之间的运行不相互影响:父进程结束,不影响子进程运行。同理子进程结束,不影响父进程运行。
多线程之间的运行单向影响:主进程结束,所有子线程直接结束。其他线程之间相互不影响