计算机程序设计员 练习卷

四级 / 三级 / 二级 / 一级 | 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. 基准元素被交换到末尾,后续不再参与分区

参考答案

  1. B 知识点是自增运算符与序列点。a++先取5再加1使a=6,随后++a使a=7并取7,故b=5+7=12。选项11错在把两次…
  2. A 知识点是自增运算符与序列点。a++ 先取值 5,a 变为 6;++a 使 a 变为 7 再取值 7,两者相加为 12。选…
  3. A 知识点是 HTTP 版本特性。HTTP/2 帧机制支持同一连接多路复用。HTTP/1.1 持久连接仍需按序响应;HTTP…
  4. A 知识点:SQL 注入防御。参数化查询将 SQL 结构与数据分离,是根本手段。B 错,删除单引号会破坏数据且可被绕过;C …
  5. A 知识点是DDL中ALTER TABLE的列操作。增加新列用ADD COLUMN。选项B的MODIFY用于修改已存在列定义…
  6. C 知识点:MySQL 加非空无默认值列的行为。严格模式下会报错,需指定默认值或允许 NULL。A 项把严格模式下的隐式转换…
  7. A 知识点是 HTTP 重定向状态码的语义区别。301 为永久移动,客户端和搜索引擎可缓存并更新引用;302 为临时移动,后…
  8. A 知识点为列表推导式的过滤条件与映射顺序。range(3) 产生 0、1、2,先筛选 x%2==0 得到 0 和 2,再分…
  9. A、B、C 知识点为 JavaScript 变量声明与作用域。let 具有块级作用域,var 具有函数作用域,故第一项正确;同一块内…
  10. A 知识点:事务 ACID 特性。隔离性指并发事务之间互不干扰,未提交的修改对其他事务不可见。原子性指要么全做要么全不做;一…
  11. A 知识点:排序稳定性。稳定性指相等元素的相对次序是否保持,冒泡排序在相等时不交换即可保持稳定。选项B误以为交换相邻元素必然…
  12. A 知识点:读写分离与复制延迟。写主读从时,从库同步有延迟,短时间内读会拿到旧值。选项B把延迟原因归为磁盘速度,不能解释偶发…
  13. B 知识点:字典键的可哈希性。元组 (1,2) 不可变可哈希,能作键;列表 [1,2] 可变不可哈希,作键时抛 TypeEr…
  14. B 知识点:性能问题定位。CPU 不高而响应变慢,常见于等待型瓶颈如连接池耗尽,B 最符合;A 会体现为队列但通常伴随 CP…
  15. A 知识点是关系数据库范式的包含关系。正确项:3NF 蕴含 2NF 和 1NF。错误项 BCNF 比 3NF 更严格,满足 …
  16. B HTTP/1.1默认持久连接,未带Connection头时连接保持,直到超时或收到close。关闭连接、升级HTTP/2…
  17. B 知识点是性能瓶颈定位。CPU饱和且频繁Full GC指向堆内存不足或对象分配过快,应优先查堆与分配。连接池过小通常表现为…
  18. D 知识点是栈的合法出栈序列判定。D中先出3需1、2压底,出3后栈顶为2,不可能在2之前先出1,故D不可能;A全入再出合法;…
  19. B 知识点是git暂存区与提交的关系。commit只提交已暂存内容,未add的修改不在暂存区,故无变更可提交。选修改被提交者…
  20. B 知识点是性能瓶颈定位。CPU不高而响应时间陡增,常见于线程阻塞在I/O等待,如数据库连接池耗尽,B最符合。A会表现为线程…
  21. A 知识点是 Git reset 三种模式的区别。--soft 只移动 HEAD 保留暂存区和工作区改动。--hard 会丢…
  22. D 知识点是事务ACID含义。持久性D指提交后修改永久保存,D对。原子性指全做或全不做;一致性指约束不被破坏;隔离性指并发事…
  23. B 知识点是Java字符串常量折叠。字面量之间的+在编译期就被合并成"abc"常量,不产生多次拼接。选一是把变量拼接的情况套…
  24. B 知识点是C语言字符常量的类型。sizeof(char)恒为1字节;字符常量'a'在C中类型为int,故sizeof('a…
  25. B 知识点是 git reset 三种模式差异。--hard 会同时重置 HEAD、暂存区和工作区到目标提交;选保留改动是 …
  26. A 知识点是链表栈的操作位置与复杂度。头部插入和头部删除都只需改动头指针和常数个指针域,都是O(1),故A正确。B误以为出栈…
  27. B 二叉搜索树中序遍历得到升序序列,插入元素集合为{1,3,4,5,8},故为1 3 4 5 8;其余选项均非升序或顺序错误…
  28. A 知识点是CSS后代选择器与子选择器。空格表示所有后代,>表示仅直接子元素。选项1把两者说反;选项2相邻同级是+选择器;选…
  29. A、B、C 知识点是进程与线程区别。线程共享进程地址空间,切换开销较小,跨进程通信需OS机制。选项3错误,线程崩溃可能影响整个进程;…
  30. A 情境案例,考查连接池耗尽时的排查思路。优先定位慢查询或未释放连接,并设置获取连接超时避免雪崩。'调到最大' 可能压垮数据…
  31. A 知识点:整数除法与隐式类型转换。5/2 先按整数除法得 2,再与 2.0 相乘时 2 被提升为 double,结果为 4…
  32. A 知识点是HTTP重定向状态码:301为永久移动,302为临时移动。B项把两者语义颠倒;C项混淆了200和404;D项混淆…
  33. A 知识点:哈希表扩容机制。负载因子过高会扩容并 rehash 以降低冲突。错误项分析:删除冲突元素会丢数据;线性查找不是哈…
  34. A 知识点是递归与阶乘。f(5)=5×4×3×2×1=120,A对。B是4的阶乘;C错算为5×4×3;D是6的阶乘。
  35. B 知识点是GROUP BY与HAVING的配合。分组用GROUP BY,对分组结果过滤用HAVING。ORDER BY只排…
  36. A 知识点是块级元素水平居中。设置左右外边距为 auto 且元素有确定宽度即可居中,故 A 对;B 是行内内容居中,对块级元…
  37. B 知识点是Git索引与工作区区分。git rm --cached只从版本控制移除、保留本地文件。选0的git rm会同时删…
  38. A 知识点是 CORS 携带凭证:当请求带 Cookie 时,服务端必须返回 Access-Control-Allow-Cr…
  39. A 知识点是 git reset 三种模式区别。正确项 --soft 只移动 HEAD,最近提交的改动仍在暂存区。--mix…
  40. A 知识点:索引失效场景。正确项对,对索引列施加函数会使索引无法按原值匹配,通常改为范围条件。DATE 函数执行开销不是主因…
  41. B 知识点是Go多返回值惯例。正确项:Go原生支持多返回值,可具名返回。错误项:切片丢失类型信息;全局变量破坏封装;字符串需…
  42. A 知识点是冒泡排序单趟过程:依次比较(3,1)交换、(3,4)不换、(4,1)交换、(4,5)不换,得[1,3,1,4,5…
  43. B 字符串不可变,拼接会生成新对象,s重新指向新对象,故共2个对象,B正确;A忽略不可变性;C说s指旧对象;D凭空多算对象数…
  44. B 知识点是HTTP状态码语义。401表示未认证,需提供凭证。选项0是永久重定向;选项2表示已认证但无权限;选项3表示资源不…
  45. B 知识点是复合操作的原子性。count++ 含读改写三步,须用锁或原子类保证原子。选项 A 的 volatile 只保证可…
  46. A 知识点为事务隔离级别。读已提交保证只能读到已提交数据,未提交修改不可见,故a项正确。读未提交会读到未提交数据;可重复读主…
  47. A、B、C 知识点是传输层协议特性。TCP面向连接、可靠、三次握手、保证顺序;UDP头部小、无连接、不保证可靠与顺序,拥塞控制由应用…
  48. C 知识点:排序算法复杂度与稳定性。归并排序平均 O(n log n) 且相等元素相对次序不变,是稳定排序。快速排序与堆排序…
  49. A 知识点是二分查找的区间收缩方向。正确项:中间元素小于目标说明目标只可能在右半区,故左边界取 mid+1。错误项:右边界减…
  50. A 知识点是快速排序在重复元素与劣质基准下的退化。等于基准的元素全挤到一侧会使子问题规模每次只减一,递归深度接近 n,退化为…