1.IO多路复用的原理?
IO多路复用是一种编程技术,它可以让单个进程或线程高效地处理多个输入/输出(I/O)请求。其核心原理是使用系统提供的select、poll或epoll等函数,这些函数可以监视多个文件描述符(file descriptors,简称fd),等待其中任意一个或多个fd准备好读或写。一旦某个fd准备就绪,系统就会通知应用程序。
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等数据,与主线程共享内存空间(如全局变量,相互传参)
角色不同:进程是获取资源的最小单位,线程是资源分配的最小单位
效率不同:多进程切换效率低于多线程
关联性不同:
多进程之间的运行不相互影响:父进程结束,不影响子进程运行。同理子进程结束,不影响父进程运行。
多线程之间的运行单向影响:主进程结束,所有子线程直接结束。其他线程之间相互不影响