计算机程序设计员 练习卷

四级 / 三级 / 二级 / 一级 | 50 题 | 姓名:__________ 得分:______

返回题库 显示答案 15 题30 题50 题100 题

1在C语言中执行 int a=5; int b=a++ + ++a; 后,b的值是

  1. A. 11
  2. B. 12
  3. C. 13
  4. D. 10

2在 C 语言中,执行语句 int a = 5; printf("%d", a++ + ++a); 后输出的结果是

  1. A. 12
  2. B. 11
  3. C. 10
  4. D. 13

3关于 HTTP/1.1 的持久连接与 HTTP/2 的多路复用,下列描述正确的是

  1. A. HTTP/2 可在同一连接上并行交错多个请求响应
  2. B. HTTP/1.1 持久连接也支持请求响应交错发送
  3. C. HTTP/2 多路复用要求每个请求单独建立 TCP 连接
  4. D. HTTP/1.1 默认关闭持久连接

4在后端接口设计中,为防止 SQL 注入,下列哪种做法最有效?

  1. A. 使用参数化查询并绑定用户输入
  2. B. 对用户输入中的单引号做删除处理
  3. C. 将 SQL 语句拼接后统一转义再执行
  4. D. 限制数据库账号为只读权限后直接拼接

5在 MySQL 中,对已建表 users 增加一个允许为空且无默认值的列 age,应使用的语句是

  1. A. ALTER TABLE users ADD COLUMN age INT NULL
  2. B. ALTER TABLE users MODIFY age INT NULL
  3. C. UPDATE TABLE users ADD age INT NULL
  4. D. ALTER TABLE users INSERT age INT NULL

6在 MySQL 中,对已有数据的表执行 ALTER TABLE 添加一个 NOT NULL 且无默认值的列,若表中已有记录,通常结果是

  1. A. 自动为旧记录填 0 或空串
  2. B. 旧记录该列被置为 NULL
  3. C. 语句报错或需先给默认值
  4. D. 旧记录被删除后重建表

7HTTP 状态码 301 与 302 在重定向语义上的关键差异是

  1. A. 301 表示永久重定向,302 表示临时重定向
  2. B. 301 表示临时重定向,302 表示永久重定向
  3. C. 301 用于 HTTPS,302 用于 HTTP
  4. D. 301 用于 GET,302 用于 POST

8在 Python 中,表达式 [x * 2 for x in range(3) if x % 2 == 0] 的求值结果是

  1. A. [0, 4]
  2. B. [0, 2]
  3. C. [2, 4]
  4. D. [0, 2, 4]

9关于 JavaScript 中 let 与 var 声明变量的差异,下列描述正确的有(多选)

  1. A. let 声明的变量存在块级作用域,var 声明的变量属于函数作用域
  2. B. 在同一个块中 let 不允许重复声明同名变量,var 允许重复声明
  3. C. let 声明的变量在声明前访问会抛出 ReferenceError,var 声明前访问得到 undefined
  4. D. let 声明的变量会被提升到所在函数顶部并初始化为 undefined
  5. E. var 声明的变量在全局作用域下不会成为 window 对象的属性

10在关系型数据库中,能保证一个事务的修改在提交前对其他事务不可见的特性是

  1. A. 隔离性
  2. B. 原子性
  3. C. 一致性
  4. D. 持久性

11关于冒泡排序的稳定性,下列判断正确的是

  1. A. 当相邻元素相等时不交换,冒泡排序是稳定的
  2. B. 冒泡排序一定不稳定,因为会交换相邻元素
  3. C. 冒泡排序的稳定性取决于数组初始顺序
  4. D. 冒泡排序稳定,但前提是每轮必须交换相等元素

12某后端接口偶发返回旧数据,排查发现读请求走了从库而写请求走主库,最可能的原因是

  1. A. 主从复制存在延迟,读请求读到了尚未同步的从库
  2. B. 从库磁盘比主库慢导致读超时
  3. C. 写请求没有加事务导致数据丢失
  4. D. 接口没有设置缓存导致读到旧数据

13在 Python 中执行 d = {}; d[(1,2)] = 'a'; d[[1,2]] = 'b' 会得到什么结果

  1. A. 两次赋值都成功,字典有两个键
  2. B. 第一次成功,第二次抛出 TypeError
  3. C. 第一次抛出 KeyError,第二次成功
  4. D. 两次都抛出 TypeError,字典为空

14某后端接口在压测中出现响应时间随并发升高而急剧上升、CPU 使用率却不高,最可能的原因是

  1. A. 线程池核心线程数设置过小导致任务排队等待
  2. B. 数据库连接池被占满导致请求阻塞在获取连接
  3. C. JVM 堆内存不足频繁触发 Full GC
  4. D. 网络带宽达到上限导致数据包丢失重传

15关系数据库中,若表 R 已满足第三范式,则它一定满足的是

  1. A. 第二范式
  2. B. BCNF
  3. C. 第四范式
  4. D. 第五范式

16HTTP/1.1中启用持久连接后,若客户端发送的请求未带Connection头,服务器默认采取的行为是

  1. A. 关闭连接并等待下次请求
  2. B. 保持连接直到超时或显式关闭
  3. C. 立即升级为HTTP/2
  4. D. 每条请求重新建立TCP连接

17某后端接口在压测时响应时间随并发数上升先平稳后急剧增大,且CPU利用率接近饱和、GC日志频繁出现Full GC,最应优先排查的方向是

  1. A. 数据库连接池最大连接数是否过小
  2. B. 应用堆内存与对象创建速率是否合理
  3. C. 前端静态资源是否启用CDN
  4. D. HTTP响应头是否缺少缓存字段

18对栈执行依次入栈1、2、3、4后,允许在任意时刻出栈,下列不可能得到的出栈序列是

  1. A. 4,3,2,1
  2. B. 1,2,3,4
  3. C. 3,2,4,1
  4. D. 3,1,2,4

19git中已修改文件但尚未git add,此时执行git commit -m "x" 的结果是

  1. A. 修改被提交,工作区变干净
  2. B. 没有内容被提交,提示无变更
  3. C. 修改被自动加入暂存区并提交
  4. D. 提交成功但只包含上次暂存内容

20某后端接口在压测时发现响应时间随并发上升急剧增加,CPU使用率却不高,最可能的原因是

  1. A. 线程池核心线程数设置过小导致任务排队
  2. B. 数据库连接池被占满导致请求阻塞等待
  3. C. JVM堆内存过小频繁触发Full GC
  4. D. 网络带宽不足导致数据包丢失重传

21在 Git 中,需要把已经提交到本地仓库但尚未推送的最后一次提交撤销并保留改动到工作区,应使用的命令是

  1. A. git reset --soft HEAD~1
  2. B. git reset --hard HEAD~1
  3. C. git checkout HEAD~1
  4. D. git revert HEAD

22关于数据库事务的ACID特性,其中保证事务提交后修改永久保存的是

  1. A. 原子性
  2. B. 一致性
  3. C. 隔离性
  4. D. 持久性

23Java 中 String s = "a" + "b" + "c"; 与使用 StringBuilder 拼接相比,前者的编译期优化结果是

  1. A. 每次拼接都创建新的 String 对象
  2. B. 编译期直接合并为一个字符串常量
  3. C. 运行时调用 String.concat 三次
  4. D. 运行时创建三个临时 StringBuffer

24C语言中,表达式 sizeof(char) 与 sizeof('a') 在多数实现下的结果分别是

  1. A. 1 和 1
  2. B. 1 和 4
  3. C. 4 和 1
  4. D. 4 和 4

25在 Git 中,执行 git reset --hard HEAD~1 后,工作区与暂存区会

  1. A. 保留最近一次提交的改动
  2. B. 回退到上一次提交并丢弃当前改动
  3. C. 仅取消暂存但保留工作区改动
  4. D. 创建一个新的合并提交

26用链表实现栈时,若规定只能在链表头部进行插入和删除,则入栈和出栈操作的时间复杂度分别是

  1. A. O(1) 和 O(1)
  2. B. O(1) 和 O(n)
  3. C. O(n) 和 O(1)
  4. D. O(n) 和 O(n)

27在二叉搜索树中依次插入 5、3、8、1、4 后,中序遍历得到的序列是

  1. A. 5 3 8 1 4
  2. B. 1 3 4 5 8
  3. C. 1 3 5 4 8
  4. D. 5 3 1 4 8

28前端开发中,CSS选择器 div p 与 div > p 的主要区别是

  1. A. 前者选所有后代p,后者只选直接子元素p
  2. B. 前者只选直接子元素p,后者选所有后代p
  3. C. 前者选同级相邻p,后者选所有后代p
  4. D. 前者选div自身,后者选div内所有p

29关于进程与线程,以下说法正确的有(多选)

  1. A. 同一进程内线程共享进程的地址空间
  2. B. 线程切换通常比进程切换开销小
  3. C. 进程之间通信必须通过操作系统提供的机制
  4. D. 一个线程崩溃一定会导致同进程其他线程正常继续
  5. E. 每个线程拥有独立的文件描述符表

30某后端接口在高并发下出现数据库连接池耗尽,日志显示大量请求等待连接,最优先的处置是

  1. A. 检查慢查询与连接泄漏并设置合理超时
  2. B. 直接把连接池最大连接数调到最大
  3. C. 重启数据库释放所有连接
  4. D. 把接口改为同步阻塞调用

31在C语言中,表达式 5 / 2 * 2.0 的运算结果类型和值分别是

  1. A. double 类型,值为 4.0
  2. B. int 类型,值为 4
  3. C. double 类型,值为 5.0
  4. D. int 类型,值为 5

32关于 HTTP 状态码 302 与 301 的区别,描述正确的是

  1. A. 301 表示永久重定向,302 表示临时重定向
  2. B. 301 表示临时重定向,302 表示永久重定向
  3. C. 301 表示请求成功,302 表示资源未找到
  4. D. 301 表示服务器错误,302 表示客户端错误

33哈希表在负载因子过高时通常采取的措施是

  1. A. 扩大桶数组并重新散列
  2. B. 直接删除冲突元素
  3. C. 改用线性查找逐个比对
  4. D. 冻结插入操作直到有空位

34函数f定义如下:int f(int n){ return n<=1?1:n*f(n-1);} 调用f(5)的返回值是

  1. A. 120
  2. B. 24
  3. C. 60
  4. D. 720

35在SQL中,若要对查询结果按某列分组并只保留组内记录数大于3的组,应使用

  1. A. ORDER BY ... HAVING
  2. B. GROUP BY ... HAVING
  3. C. GROUP BY ... WHERE
  4. D. ORDER BY ... WHERE

36HTML中要让一个块级元素在父容器内水平居中且父容器宽度固定,下列CSS写法正确的是

  1. A. margin: 0 auto;
  2. B. text-align: center;
  3. C. float: left;
  4. D. position: absolute;

37在Git中已提交了敏感文件config.env,现在想从后续提交中移除但保留本地文件,应使用

  1. A. git rm config.env
  2. B. git rm --cached config.env
  3. C. git delete config.env
  4. D. git reset config.env

38前后端分离项目中,浏览器发起跨域请求被拦截,服务端已设置 Access-Control-Allow-Origin 为具体域名,但携带 Cookie 的请求仍失败,最可能缺少的响应头是

  1. A. Access-Control-Allow-Credentials: true
  2. B. Access-Control-Allow-Methods: GET
  3. C. Content-Type: application/json
  4. D. Cache-Control: no-cache

39在 Git 中,执行 git reset --soft HEAD~1 后工作区与暂存区的变化是

  1. A. 撤销最近一次提交,改动保留在暂存区
  2. B. 撤销最近一次提交,改动保留在工作区
  3. C. 撤销最近一次提交并丢弃所有改动
  4. D. 只撤销暂存区内容,不改变提交历史

40在关系型数据库中,某查询语句在 WHERE 条件中对索引列使用函数,如 WHERE DATE(create_time)='2024-01-01',导致查询变慢,主要原因是?

  1. A. 函数使索引无法被有效利用
  2. B. DATE 函数本身执行很慢
  3. C. create_time 字段类型错误
  4. D. WHERE 子句不支持函数

41某函数需要返回多个值,在Go语言中较符合惯例的做法是

  1. A. 返回一个包含所有值的切片
  2. B. 返回多个具名返回值
  3. C. 通过全局变量传出
  4. D. 返回格式化后的字符串

42对数组 [3, 1, 4, 1, 5] 执行一次冒泡排序(按升序,从前往后比较交换)后的结果是

  1. A. [1, 3, 1, 4, 5]
  2. B. [1, 1, 3, 4, 5]
  3. C. [3, 1, 4, 1, 5]
  4. D. [1, 3, 4, 1, 5]

43Java中 String s = "a"; s = s + "b"; 执行后关于字符串对象数量的说法,正确的是

  1. A. 只创建了1个String对象
  2. B. 创建了2个String对象,s指向新的那个
  3. C. 创建了2个String对象,s仍指向最初那个
  4. D. 创建了3个String对象,其中1个被回收

44关于HTTP状态码,客户端请求的资源需要身份认证且未提供凭证时,服务器应返回

  1. A. 301
  2. B. 401
  3. C. 403
  4. D. 404

45在多线程环境中对共享计数器 count 执行 count++ 出现丢失更新,最合适的修复方式是

  1. A. 把 count 声明为 volatile
  2. B. 用 synchronized 或原子类保护自增
  3. C. 把 count 改为 long 类型
  4. D. 在自增前后各加一次 Thread.yield

46在关系数据库中,若要保证一个事务的修改在提交前不被其他事务看到,应设置的隔离级别是

  1. A. 读已提交
  2. B. 读未提交
  3. C. 可重复读
  4. D. 串行化

47以下关于TCP与UDP的描述中,正确的有(多选)

  1. A. TCP提供面向连接的可靠传输
  2. B. UDP头部开销比TCP小
  3. C. TCP通过三次握手建立连接
  4. D. UDP在传输层提供拥塞控制
  5. E. TCP不保证数据顺序

48下列排序算法中,平均时间复杂度为 O(n log n) 且稳定的是

  1. A. 快速排序
  2. B. 堆排序
  3. C. 归并排序
  4. D. 选择排序

49在一个已按升序排好序的数组中用二分查找定位目标值,当中间元素小于目标值时,下一步应如何调整查找区间

  1. A. 把左边界移到中间位置加一
  2. B. 把右边界移到中间位置减一
  3. C. 把左右边界都移到中间位置
  4. D. 把左边界移到中间位置减一

50用快速排序对含大量重复元素的数组排序时,若分区函数始终以最左元素为基准且把等于基准的元素全部分到一侧,最可能导致的结果是

  1. A. 递归深度接近 n,时间复杂度退化为 O(n²)
  2. B. 每次分区后两侧规模严格相等,复杂度保持 O(n log n)
  3. C. 重复元素被自动去重,排序结果元素个数减少
  4. D. 基准元素被交换到末尾,后续不再参与分区