第1题-选择题
小红书9月17日机考题目与解析
1、IO 多路复用
园区门禁闸机要把多路套接字日志收进同一采集线程。IO 多路复用允许在单个线程中同时监视和处理多个 I/O 操作,以下不属于 IO 多路复用的技术是()
- A. poll 用描述符数组等待多个套接字就绪
- B. eselect IO多路复用
- C. epoll 用内核事件表减少每次等待的用户态拷贝
- D. select 在用户态传入描述符集合并阻塞等待就绪
2、二叉排序树
仓储货位号按插入顺序建立二叉排序树,插入序列为 (11, 13, 16, 18, 20, 22, 25)。建立好的二叉排序树是一棵()
- A. 所有内部结点都有两个孩子的完美树
- B. 按层从左到右填满的堆序树
- C. 右向单支树
- D. 每个结点只保留左孩子的递减链
3、流水线调度
单核质检台配有读码枪和喷码机各 1 台。现有 4 份并发工单,每份的采集、核算和喷码时间分别为 2ms、3ms 和 4ms,且都按采集、核算、喷码的顺序执行。执行完这 4 份工单需要的时间最少是()
- A. 13ms
- B. 9ms
- C. 17ms
- D. 21ms
4、mysqldump 备份
实验台账库要做夜间备份,运维选用 mysqldump。下列关于 mysqldump 的说法,正确的是()
- A. 通过生成 SQL 语句实现数据库的逻辑备份
- B. 通过停库后打包数据文件实现冷物理备份
- C. 通过二进制日志实时回放实现热同步
- D. 通过存储引擎页拷贝做增量物理备份
5、SQL 模糊查询
变电站检修班组人事库中,表结构如下:①检修员表(工号, 姓名, 性别, 出生日期, 入职日期, 班组编号);②出勤表(工号, 年份, 月份, 出勤量)。若完成操作:显示所有姓「王」和「赵」的检修员信息。以下操作可行的是()
- A.
select * from 检修员表 where 姓名='王%' or 姓名='赵%' - B.
select * from 检修员表 group by 工号 having 姓名 like '王' or 姓名 like '赵' - C.
select * from 检修员表 where 姓名 like '[王,赵]%' - D.
select * from 检修员表 where substring(姓名, 2, 1) in ('王', '赵')
参考答案与解析
1、IO 多路复用(答案 B)
常见的 I/O 多路复用技术有:
- select:在用户态传入描述符集合,阻塞等待多个套接字就绪。
- poll:用描述符数组等待多个套接字就绪。
- epoll:用内核事件表管理描述符,减少每次等待时的用户态/内核态拷贝开销。
而 eselect 并不是标准的 I/O 多路复用技术,属于干扰项。
2、二叉排序树(答案 C)
插入序列为 (11, 13, 16, 18, 20, 22, 25),是严格递增的。按二叉排序树规则:比当前结点小 → 插入左子树;比当前结点大 → 插入右子树。由于每个新插入的元素都比之前所有元素大,所以每次都插入到当前最右结点的右孩子位置,最终形成:
11
\
13
\
16
\
18
\
20
\
22
\
25这是一棵只有右孩子的单支树,即 右向单支树。
3、流水线调度(答案 D)
每份工单必须依次经过:
- 采集:2ms(读码枪,1 台)
- 核算:3ms(单核,1 台)
- 喷码:4ms(喷码机,1 台)
4 份工单可以流水线式执行,但每种设备同一时间只能处理 1 份工单。按最优流水线顺序执行:
- 采集阶段:4 份共需 4×2=8 ms
- 核算阶段:第 1 份在 2ms 后开始,之后连续核算,最后一份核算完成于 2+4×3=14 ms
- 喷码阶段:第 1 份在 5ms 后开始,之后连续喷码,最后一份喷码完成于 5+4×4=21 ms
因此,执行完 4 份工单最少需要 21ms,选 D。
4、mysqldump 备份(答案 A)
mysqldump 是 MySQL 提供的逻辑备份工具,它把数据库中的表结构、数据等内容导出为一系列 SQL 语句,例如 CREATE TABLE、INSERT INTO 等。恢复时执行这些 SQL 语句即可重建数据库。
其他选项:
- B:停库后打包数据文件属于冷物理备份,不是
mysqldump。 - C:二进制日志实时回放属于主从复制或基于 binlog 的恢复,不是
mysqldump。 - D:存储引擎页拷贝做增量物理备份,通常是
xtrabackup等物理备份工具。
5、SQL 模糊查询(答案 C)
题目要求显示所有姓「王」和「赵」的检修员信息,即姓名以「王」或「赵」开头。逐项分析:
- A:
姓名='王%' or 姓名='赵%'使用=与带%的字符串比较,%不会作为通配符,只会按普通字符匹配,因此无法匹配「王某某」或「赵某某」。错误。 - B:
group by 工号 having 姓名 like '王' or 姓名 like '赵'先按工号分组,且like '王'只匹配姓名恰好为「王」,不是以「王」开头;同时having中直接引用非聚合列也不规范。错误。 - C:
姓名 like '[王,赵]%'在支持字符类通配符的数据库(如 SQL Server)中,[王,赵]表示第一个字符可以是「王」「赵」或逗号,后跟任意字符。由于姓名一般不会以逗号开头,因此可实现对以「王」或「赵」开头的匹配。可行。 - D:
substring(姓名, 2, 1) in ('王', '赵')取的是姓名的第 2 个字符,而不是第 1 个字符,匹配的是第二个字为「王」或「赵」,不符合「姓王/赵」的要求。错误。
因此,可行的是 C。