计算机程序设计员 练习卷

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

返回题库 隐藏答案 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在Git中,想把本地已提交但尚未推送的最近一次提交与工作区修改合并进上一次提交,应使用

  1. A. git commit --amend
  2. B. git revert HEAD
  3. C. git reset --soft HEAD~1
  4. D. git cherry-pick HEAD

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

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

4对数组 [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

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

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

6在 C 语言中,执行 int a[5]; int *p = a; 后,表达式 *(p+3) 与下列哪一项等价?

  1. A. a[3]
  2. B. a[4]
  3. C. *(a+4)
  4. D. p[4]

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

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

8某服务上线后出现内存持续增长,日志显示缓存对象只增不减,下列排查与处置中最恰当的是哪一项?

  1. A. 检查缓存是否设置过期或淘汰策略,并补充容量上限与过期时间
  2. B. 立即重启服务并观察,确认不再增长后关闭监控告警
  3. C. 将缓存容量调大以避免频繁淘汰,再观察内存曲线
  4. D. 把缓存改为每次请求全量重建,避免复用旧对象

9在 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

10TCP 三次握手中,客户端收到服务器返回的 SYN+ACK 后应发送的报文是

  1. A. ACK
  2. B. SYN
  3. C. FIN
  4. D. RST

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

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

12在 Git 中,已提交但尚未推送的最近一次提交信息写错,最合适的修正命令是

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

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

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

14某后端服务在高峰期频繁出现数据库连接池耗尽,日志显示大量请求阻塞在获取连接阶段。此时最应优先排查的环节是

  1. A. 连接是否在使用后正确归还以及是否存在长事务占用
  2. B. 服务器 CPU 主频是否低于同型号平均水平
  3. C. 前端页面是否启用了浏览器缓存
  4. D. 数据库表的字段命名是否使用下划线风格

15在 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]

16在 Git 中,若本地分支 feature 已提交若干次,此时执行 git rebase main 后,feature 分支上原有提交的哈希值通常会

  1. A. 保持不变且历史线性
  2. B. 发生改变并生成新提交
  3. C. 被自动合并为一次提交
  4. D. 被移动到 main 分支之前

17关于 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 对象的属性

18C 语言中,对于数组 int a[5],表达式 *(a+2) 与下列哪个写法等价

  1. A. a[2]
  2. B. a[1]
  3. C. a[3]
  4. D. &a[2]

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

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

20程序运行中抛出空指针异常,日志显示调用链最深处为对象方法调用,优先排查的方向是

  1. A. 调用该方法前对象引用是否已被赋值
  2. B. 该方法的返回类型是否声明错误
  3. C. 方法的访问修饰符是否为 public
  4. D. 方法参数是否使用了可变参数

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

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

22在 Git 中,若想把本地分支 feature 的提交整理后合并到 main 并保持线性历史,较合适的操作是

  1. A. 切到 main 后执行 git rebase feature 再快进合并
  2. B. 切到 main 后执行 git merge --no-ff feature
  3. C. 切到 feature 后执行 git merge main
  4. D. 在 main 上执行 git cherry-pick feature 的全部提交

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

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

24关于进程与线程的区别,下列说法正确的是

  1. A. 同一进程内多个线程共享该进程的地址空间
  2. B. 线程拥有独立的地址空间而进程共享地址空间
  3. C. 进程切换开销一定小于线程切换开销
  4. D. 一个进程只能包含一个线程

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

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

26给定递归函数 f(n) = f(n-1) + f(n-2),f(0)=0,f(1)=1,直接递归计算 f(6) 的过程中,f(3) 被重复计算的次数是多少

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

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

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

28在 Python 中执行表达式 3 * 1 ** 2 后,结果是多少

  1. A. 9
  2. B. 6
  3. C. 3
  4. D. 1

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

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

30在面向对象设计中,子类重写父类方法时把访问权限由public改为private,这主要违反了哪一原则

  1. A. 单一职责原则
  2. B. 里氏替换原则
  3. C. 依赖倒置原则
  4. D. 接口隔离原则

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

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

32关于TCP三次握手,客户端收到服务器的SYN+ACK后发送的ACK报文,其序列号应设置为

  1. A. 客户端初始序列号加1
  2. B. 服务器序列号加1
  3. C. 客户端初始序列号
  4. D. 服务器序列号

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

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

34某后端服务用 Java 编写,方法内先声明了局部变量 List<String> buf 并赋值为 new ArrayList<>(),随后在 try 块中向 buf 添加元素、在 catch 块中打印日志,若要在 catch 块中安全读取 buf 中已添加的元素并保证方法任何异常路径下 buf 都非 null,下列做法中正确的有?(多选)

  1. A. 把 buf 的声明与 new ArrayList<>() 赋值放在 try 块之前,catch 块直接遍历 buf
  2. B. 在 try 块内声明并初始化 buf,catch 块中通过重新 new ArrayList<>() 后遍历
  3. C. 把 buf 声明为方法参数传入并初始化为 new ArrayList<>(),catch 块直接遍历
  4. D. 在 try 块内声明 buf 但不初始化,catch 块中判断 buf 是否为 null 后再遍历

35对栈执行依次入栈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

36在编写递归函数时,下列哪些做法有助于避免栈溢出(多选)

  1. A. 确保每次递归调用都向基准情形靠近
  2. B. 将可尾递归的结构改写为尾递归或迭代
  3. C. 为递归函数增加全局变量缓存中间结果
  4. D. 把递归深度上限调大以容纳更多层调用
  5. E. 在递归前先复制一份完整调用栈

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

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

38在Java中,以下关于String、StringBuilder和StringBuffer的说法,正确的是

  1. A. String对象的字符内容可被修改方法直接改变
  2. B. StringBuilder的方法均为线程安全同步方法
  3. C. StringBuffer的方法均为线程安全同步方法
  4. D. 三者都可直接用作HashMap的键并保证内容相等

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

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

40在 Java 中,接口里定义的成员变量默认具有的修饰符组合是

  1. A. public static final
  2. B. private static final
  3. C. protected final
  4. D. public transient

41在 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

42在 Python 中,若函数参数使用可变对象作为默认值,例如 def f(x=[]),可能引发的问题是

  1. A. 多次调用共享同一个默认列表
  2. B. 每次调用自动复制默认列表
  3. C. 默认参数无法被修改
  4. D. 函数定义时立即报语法错误

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

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

44用二分查找在含1024个有序元素的数组中查找某元素,最多需要比较的次数是

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

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

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

46某前端页面在移动端点击按钮后出现 300ms 延迟,最合理的优化方案是

  1. A. 在 viewport 中设置 width=device-width
  2. B. 把点击事件改为 mouseover 事件
  3. C. 给按钮增加 CSS 的 transition 动画
  4. D. 使用 setTimeout 包裹点击回调

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

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

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

  1. A. 提交该文件的所有修改
  2. B. 提交为空或提示无暂存内容
  3. C. 自动暂存并提交该文件
  4. D. 丢弃该文件的修改

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

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

50在编写涉及共享变量的多线程程序时,下列哪些做法有助于避免数据竞争(多选)

  1. A. 对共享数据的读写使用同一把互斥锁保护
  2. B. 使用原子操作对共享计数器做自增
  3. C. 用局部变量缓存共享数据后再写回且不加同步
  4. D. 使用线程安全的无锁队列传递数据
  5. E. 为每个线程分配独立的只读数据副本

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

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

52在JavaScript中,使用 var 声明的变量与使用 let 声明的变量在作用域上的关键区别是

  1. A. var 声明的变量属于函数作用域,let 声明的变量属于块作用域
  2. B. var 声明的变量不能重新赋值,let 声明的变量可以重新赋值
  3. C. var 声明的变量会被提升到全局,let 声明的变量不会被提升
  4. D. var 声明的变量只能在严格模式下使用,let 声明的变量无此限制

53在二叉搜索树中依次插入 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

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

  1. A. 同一进程内的线程共享该进程的地址空间
  2. B. 线程切换通常比进程切换开销小
  3. C. 进程之间通信必须通过操作系统提供的机制
  4. D. 每个线程拥有独立的堆内存区域
  5. E. 多线程程序一定比单线程程序执行更快

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

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

56在快速排序中,若每次选取的基准元素都是当前子序列的最大值,则递归树退化的形态是

  1. A. 完全二叉树
  2. B. 单支链
  3. C. 平衡二叉树
  4. D. 满二叉树

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

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

58下列排序算法中,对包含大量重复元素的数组通常表现较好且平均时间复杂度为 O(n log n) 的是

  1. A. 三路快速排序
  2. B. 冒泡排序
  3. C. 直接插入排序
  4. D. 选择排序

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

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

60对单链表进行头插法建表时,若头指针为 head,新结点为 p,正确的操作顺序是

  1. A. p->next=head; head=p;
  2. B. head=p; p->next=head;
  3. C. p->next=head->next; head->next=p;
  4. D. head->next=p; p->next=head;

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

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

62前端页面在移动端出现横向滚动条,最可能的原因是

  1. A. 某个元素宽度超出视口或存在固定宽度
  2. B. 图片未设置 alt 属性
  3. C. CSS 选择器优先级过低
  4. D. JavaScript 未使用严格模式

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

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

64Java 中 String s = "a"; s = s + "b"; 执行后关于对象的说法正确的是

  1. A. 原对象被修改为 "ab"
  2. B. 创建了新对象,s 指向新对象
  3. C. 字符串常量池中的 "a" 被替换
  4. D. 编译报错,String 不可拼接

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

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

66HTML中要让一个块级元素在父容器内水平居中且自身宽度为父容器的一半,较合适的是

  1. A. 设置 width:50%; margin:0 auto;
  2. B. 设置 width:50%; float:left;
  3. C. 设置 width:50%; position:absolute; left:0;
  4. D. 设置 width:50%; display:inline;

67函数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

68关于程序调试,下列做法中有助于定位偶发缺陷的有(多选)

  1. A. 在关键分支增加带时间戳的日志记录
  2. B. 用版本控制对比引入缺陷前后的代码差异
  3. C. 复现时记录输入数据、环境版本和操作步骤
  4. D. 把疑似出错语句注释掉后直接发布上线
  5. E. 将异常捕获后统一忽略以避免程序中断

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

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

70Java 中父类引用指向子类对象后调用被重写的方法,实际执行的是

  1. A. 父类中定义的方法
  2. B. 子类中重写的方法
  3. C. 编译时随机决定
  4. D. 子类中新增的普通方法

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

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

72下列排序算法中,若要求排序稳定且时间复杂度为O(nlogn),应选择

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

73在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

74在 Python 中执行表达式 3 * 1 ** 2 的结果是

  1. A. 9
  2. B. 6
  3. C. 3
  4. D. 1

75前后端分离项目中,浏览器发起跨域请求被拦截,服务端已设置 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

76在 SQL 中,对分组结果进行筛选应使用的子句是

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

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

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

78Java 中 String 与 StringBuilder 都能拼接字符串,循环内大量拼接时应优先选用 StringBuilder,主要原因是?

  1. A. StringBuilder 拼接结果更准确
  2. B. String 是不可变对象,每次拼接产生新对象
  3. C. StringBuilder 支持更多字符编码
  4. D. String 无法在循环中使用

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

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

80对有序数组使用二分查找时,循环条件写成 while (low < high) 且更新为 low = mid + 1、high = mid,这种写法对区间含义的约定是

  1. A. 左闭右闭区间
  2. B. 左闭右开区间
  3. C. 左开右闭区间
  4. D. 双开区间

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

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

82TCP三次握手中,客户端收到服务器SYN+ACK后发送的报文段其ACK标志与序号含义是

  1. A. 确认服务器SYN,序号为客户端初始序号加1
  2. B. 确认服务器SYN,序号为服务器初始序号加1
  3. C. 请求建立连接,序号为服务器初始序号
  4. D. 请求建立连接,序号为客户端初始序号

83对数组 [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]

84TCP 三次握手中,客户端收到服务器对 SYN 的确认后发送的报文段中,ACK 标志与序号的关系是

  1. A. ACK 置 1,确认号为服务器初始序号加 1
  2. B. ACK 置 0,序号为客户端初始序号加 1
  3. C. ACK 置 1,确认号为客户端初始序号加 1
  4. D. ACK 置 1,序号为服务器初始序号加 1

85Java中 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个被回收

86对链表和数组在头部插入元素的效率进行比较,通常更优的是

  1. A. 数组,因为支持随机访问
  2. B. 链表,因为只需修改指针
  3. C. 数组,因为内存连续
  4. D. 链表,因为需要遍历到尾部

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

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

88在 SQL 中,若要查询 employees 表中每个部门人数且只显示人数大于 5 的部门,正确写法是

  1. A. SELECT dept, COUNT(*) FROM employees WHERE COUNT(*) > 5 GROUP BY dept
  2. B. SELECT dept, COUNT(*) FROM employees GROUP BY dept HAVING COUNT(*) > 5
  3. C. SELECT dept, COUNT(*) FROM employees GROUP BY dept WHERE COUNT(*) > 5
  4. D. SELECT dept, COUNT(*) FROM employees HAVING COUNT(*) > 5 GROUP BY dept

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

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

90在HTTP协议中,状态码401与403的区别是

  1. A. 401表示未认证,403表示已认证但无权限
  2. B. 401表示无权限,403表示未认证
  3. C. 401表示服务器错误,403表示客户端错误
  4. D. 401表示资源不存在,403表示请求方法不允许

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

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

92在编写健壮的后端接口时,下列做法中能有效提升异常可观测性的有(多选)

  1. A. 记录异常堆栈并附带请求标识
  2. B. 对可预期业务异常返回统一错误码
  3. C. 捕获异常后仅打印“出错了”
  4. D. 用空catch块忽略异常
  5. E. 将异常信息直接透传给前端

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

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

94在关系数据库中,若表R有外键引用表S的主键,则向R插入元组时数据库通常

  1. A. 不检查S中是否存在对应值
  2. B. 检查S中是否存在被引用的值
  3. C. 自动删除S中的对应行
  4. D. 自动把R的主键改为外键值

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

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

96某后端服务上线后出现 CPU 持续接近 100% 且接口响应变慢,日志显示同一查询被高频重复执行,作为程序员首先应排查的环节是

  1. A. 数据库连接池最大连接数是否设置过小
  2. B. 该查询是否缺少缓存或存在循环内查询
  3. C. 前端是否开启了浏览器缓存
  4. D. 服务器磁盘剩余空间是否不足

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

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

98在一个电商下单接口中,若扣减库存成功但创建订单记录时抛异常,为保证数据一致,正确的处置步骤是哪一项

  1. A. 捕获异常后回滚库存并向上返回失败
  2. B. 忽略异常让库存保持扣减状态
  3. C. 先返回成功再异步补建订单记录
  4. D. 重新扣减一次库存以覆盖异常

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

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

100在编写涉及共享可变状态的并发程序时,下列做法中能降低数据竞争风险的有(多选)

  1. A. 对共享变量的读改写使用原子操作或加锁保护
  2. B. 把共享状态改为线程内局部变量后再汇总
  3. C. 使用不可变对象在多个线程间传递数据
  4. D. 依靠调整线程优先级来避免同时访问
  5. E. 在循环中反复读写共享变量以减少锁次数

参考答案

  1. B 知识点是自增运算符与序列点。a++先取5再加1使a=6,随后++a使a=7并取7,故b=5+7=12。选项11错在把两次…
  2. A 知识点是Git提交修补。git commit --amend可把暂存区改动并入上一次提交并重写该提交。git rever…
  3. A 知识点是自增运算符与序列点。a++ 先取值 5,a 变为 6;++a 使 a 变为 7 再取值 7,两者相加为 12。选…
  4. A 知识点是冒泡排序单趟过程。3 与 1 交换得 1,3,4,1,5;3 与 4 不换;4 与 1 交换得 1,3,1,4,…
  5. A 知识点是 HTTP 版本特性。HTTP/2 帧机制支持同一连接多路复用。HTTP/1.1 持久连接仍需按序响应;HTTP…
  6. A 知识点:指针算术与数组下标。p 指向 a[0],p+3 指向 a[3],解引用即 a[3]。B 错,a[4] 对应 p+…
  7. A 知识点:SQL 注入防御。参数化查询将 SQL 结构与数据分离,是根本手段。B 错,删除单引号会破坏数据且可被绕过;C …
  8. A 知识点:内存泄漏与缓存策略排查。缓存无淘汰会导致对象堆积,应补 TTL 与容量上限。B 错,重启掩盖问题且关闭告警危险;…
  9. A 知识点是DDL中ALTER TABLE的列操作。增加新列用ADD COLUMN。选项B的MODIFY用于修改已存在列定义…
  10. A 知识点是TCP连接建立。第三次握手客户端发送ACK确认服务器序号。选项SYN用于发起连接;选项FIN用于关闭连接;选项R…
  11. C 知识点:MySQL 加非空无默认值列的行为。严格模式下会报错,需指定默认值或允许 NULL。A 项把严格模式下的隐式转换…
  12. A 知识点:Git 提交信息修正。--amend 可修改最近一次提交。B 项会丢弃提交内容;C 项生成反向提交而非改信息;D…
  13. A 知识点是 HTTP 重定向状态码的语义区别。301 为永久移动,客户端和搜索引擎可缓存并更新引用;302 为临时移动,后…
  14. A 知识点是连接池耗尽的常见根因。连接未归还或长事务长期占用连接会直接导致池耗尽。选项二与连接获取阻塞无直接因果;选项三只影…
  15. A 知识点为列表推导式的过滤条件与映射顺序。range(3) 产生 0、1、2,先筛选 x%2==0 得到 0 和 2,再分…
  16. B 知识点为 Git rebase 的提交重写机制。rebase 把 feature 的提交依次应用到 main 的新基点上…
  17. A、B、C 知识点为 JavaScript 变量声明与作用域。let 具有块级作用域,var 具有函数作用域,故第一项正确;同一块内…
  18. A 知识点:数组名在表达式中退化为首元素指针,*(a+i) 等价于 a[i]。故 *(a+2) 等价 a[2]。选项 a[1…
  19. A 知识点:事务 ACID 特性。隔离性指并发事务之间互不干扰,未提交的修改对其他事务不可见。原子性指要么全做要么全不做;一…
  20. A 情境案例:空指针异常通常源于引用为 null。优先检查调用前引用是否已正确赋值。返回类型、访问修饰符、可变参数与空指针成…
  21. A 知识点:排序稳定性。稳定性指相等元素的相对次序是否保持,冒泡排序在相等时不交换即可保持稳定。选项B误以为交换相邻元素必然…
  22. A 知识点:Git 变基与合并策略。rebase 可把 feature 的提交移到 main 最新提交之后,形成线性历史。选…
  23. A 知识点:读写分离与复制延迟。写主读从时,从库同步有延迟,短时间内读会拿到旧值。选项B把延迟原因归为磁盘速度,不能解释偶发…
  24. A 知识点为进程与线程。同进程线程共享地址空间。线程独立地址空间说法反了;进程切换通常开销更大;一个进程可含多线程。
  25. B 知识点:字典键的可哈希性。元组 (1,2) 不可变可哈希,能作键;列表 [1,2] 可变不可哈希,作键时抛 TypeEr…
  26. C 知识点:递归调用树与重复子问题。展开 f(6) 的调用树,f(3) 分别在 f(5) 左支、f(4) 左支、f(3) 自…
  27. B 知识点:性能问题定位。CPU 不高而响应变慢,常见于等待型瓶颈如连接池耗尽,B 最符合;A 会体现为队列但通常伴随 CP…
  28. C 知识点是 Python 运算符优先级,** 的优先级高于 *。正确项:先算 1**2 得 1,再算 3*1 得 3。错误…
  29. A 知识点是关系数据库范式的包含关系。正确项:3NF 蕴含 2NF 和 1NF。错误项 BCNF 比 3NF 更严格,满足 …
  30. B 里氏替换原则要求子类对象能替换父类对象且不破坏行为契约,缩小访问权限会破坏可替换性。单一职责讲类的职责划分;依赖倒置讲依…
  31. B HTTP/1.1默认持久连接,未带Connection头时连接保持,直到超时或收到close。关闭连接、升级HTTP/2…
  32. B 第三次握手的ACK确认号应为服务器序列号加1,表示确认收到SYN。客户端初始序列号加1是第二次握手可能的确认号方向;直接…
  33. B 知识点是性能瓶颈定位。CPU饱和且频繁Full GC指向堆内存不足或对象分配过快,应优先查堆与分配。连接池过小通常表现为…
  34. A、C 本题考查 Java 局部变量作用域与异常处理中资源可见性。选项0正确:在 try 之前初始化可保证 buf 在 try …
  35. D 知识点是栈的合法出栈序列判定。D中先出3需1、2压底,出3后栈顶为2,不可能在2之前先出1,故D不可能;A全入再出合法;…
  36. A、B 知识点是递归终止与优化。A保证收敛,B减少栈帧,二者对;C缓存不减少递归深度;D只是延后溢出;E复制调用栈不解决深度问题…
  37. B 知识点是git暂存区与提交的关系。commit只提交已暂存内容,未add的修改不在暂存区,故无变更可提交。选修改被提交者…
  38. C 知识点是Java字符串类的可变性与线程安全。StringBuffer对方法加了synchronized,是线程安全的,所…
  39. B 知识点是性能瓶颈定位。CPU不高而响应时间陡增,常见于线程阻塞在I/O等待,如数据库连接池耗尽,B最符合。A会表现为线程…
  40. A 知识点是 Java 接口成员变量的隐式修饰。接口变量默认 public static final,即公开的静态常量。pr…
  41. A 知识点是 Git reset 三种模式的区别。--soft 只移动 HEAD 保留暂存区和工作区改动。--hard 会丢…
  42. A 知识点是 Python 默认参数的求值时机。默认值在函数定义时求值一次,故多次调用共享同一列表对象。认为会自动复制是对求…
  43. D 知识点是事务ACID含义。持久性D指提交后修改永久保存,D对。原子性指全做或全不做;一致性指约束不被破坏;隔离性指并发事…
  44. B 知识点是二分查找的复杂度与次数计算。每次折半,2^10=1024,但比较次数按向下取整加1为11次。选10是忽略最后一次…
  45. B 知识点是Java字符串常量折叠。字面量之间的+在编译期就被合并成"abc"常量,不产生多次拼接。选一是把变量拼接的情况套…
  46. A 知识点是移动端300ms延迟成因与消除。设置width=device-width可让浏览器取消双击缩放等待。改mouse…
  47. B 知识点是C语言字符常量的类型。sizeof(char)恒为1字节;字符常量'a'在C中类型为int,故sizeof('a…
  48. B 知识点是Git暂存区机制。commit只提交已暂存内容,未add的修改不会进入本次提交,通常提示无暂存内容。选A把工作区…
  49. B 知识点是 git reset 三种模式差异。--hard 会同时重置 HEAD、暂存区和工作区到目标提交;选保留改动是 …
  50. A、B、D 知识点是数据竞争的常见规避手段。互斥锁、原子操作、线程安全无锁结构都能保证共享访问的同步;选先缓存再写回且不加同步属于典…
  51. A 知识点是链表栈的操作位置与复杂度。头部插入和头部删除都只需改动头指针和常数个指针域,都是O(1),故A正确。B误以为出栈…
  52. A 知识点是var与let的作用域差异。var是函数作用域,let是块作用域,故A正确。B混淆了const与let的重新赋值…
  53. B 二叉搜索树中序遍历得到升序序列,插入元素集合为{1,3,4,5,8},故为1 3 4 5 8;其余选项均非升序或顺序错误…
  54. A、B、C 同进程线程共享地址空间正确;线程切换不需切换页表等,开销通常更小;进程间通信需借助管道、共享内存等OS机制;线程共享堆,…
  55. A 知识点是CSS后代选择器与子选择器。空格表示所有后代,>表示仅直接子元素。选项1把两者说反;选项2相邻同级是+选择器;选…
  56. B 知识点是快速排序最坏情况。基准总为最大或最小值时划分极不平衡,递归深度为n,退化成单支链。选项0、2、3都表示较平衡的递…
  57. A、B、C 知识点是进程与线程区别。线程共享进程地址空间,切换开销较小,跨进程通信需OS机制。选项3错误,线程崩溃可能影响整个进程;…
  58. A 知识点为排序算法对重复元素的适应性。三路快排将数组分为小于、等于、大于三部分,重复元素集中处理,平均 O(n log n…
  59. A 情境案例,考查连接池耗尽时的排查思路。优先定位慢查询或未释放连接,并设置获取连接超时避免雪崩。'调到最大' 可能压垮数据…
  60. A 知识点是单链表头插法指针操作。应先让新结点指向原首结点,再更新头指针。选项先改 head 再让 p 指向 head 会形…
  61. A 知识点:整数除法与隐式类型转换。5/2 先按整数除法得 2,再与 2.0 相乘时 2 被提升为 double,结果为 4…
  62. A 知识点:移动端布局溢出的常见原因。超出视口的元素或固定宽度是横向滚动的主因。选项B影响可访问性而非布局;选项C影响样式覆…
  63. A 知识点是HTTP重定向状态码:301为永久移动,302为临时移动。B项把两者语义颠倒;C项混淆了200和404;D项混淆…
  64. B 知识点:String 不可变性。String 对象不可变,拼接会生成新对象并让引用指向它。错误项分析:原对象被修改违反不…
  65. A 知识点:哈希表扩容机制。负载因子过高会扩容并 rehash 以降低冲突。错误项分析:删除冲突元素会丢数据;线性查找不是哈…
  66. A 知识点是块级元素水平居中的常用方案。定宽块级元素用 margin:0 auto 可水平居中,A对。B使用float会左浮…
  67. A 知识点是递归与阶乘。f(5)=5×4×3×2×1=120,A对。B是4的阶乘;C错算为5×4×3;D是6的阶乘。
  68. A、B、C 知识点是调试与缺陷定位方法。A的日志可还原执行路径;B的差异对比能定位变更引入点;C的记录便于稳定复现,三者均对。D注释…
  69. B 知识点是GROUP BY与HAVING的配合。分组用GROUP BY,对分组结果过滤用HAVING。ORDER BY只排…
  70. B 知识点是动态绑定。运行时根据对象实际类型调用被重写的方法,故 B 对;A 是静态绑定才会发生的情况;C 方法调用不会随机…
  71. A 知识点是块级元素水平居中。设置左右外边距为 auto 且元素有确定宽度即可居中,故 A 对;B 是行内内容居中,对块级元…
  72. A 知识点是排序稳定性与复杂度。归并排序稳定且为 O(nlogn),故 A 对;B 快排不稳定;C 堆排序不稳定;D 希尔排…
  73. B 知识点是Git索引与工作区区分。git rm --cached只从版本控制移除、保留本地文件。选0的git rm会同时删…
  74. C 知识点是运算符优先级:** 的优先级高于 *,先算 1 ** 2 = 1,再算 3 * 1 = 3。选项 9 错在把乘法…
  75. A 知识点是 CORS 携带凭证:当请求带 Cookie 时,服务端必须返回 Access-Control-Allow-Cr…
  76. A 知识点是 SQL 子句执行顺序。正确项 HAVING 用于对 GROUP BY 之后的分组结果过滤。WHERE 在分组前…
  77. A 知识点是 git reset 三种模式区别。正确项 --soft 只移动 HEAD,最近提交的改动仍在暂存区。--mix…
  78. B 知识点:Java 字符串不可变性。正确项对,String 不可变,每次 + 拼接都会新建对象,循环中开销大。String…
  79. A 知识点:索引失效场景。正确项对,对索引列施加函数会使索引无法按原值匹配,通常改为范围条件。DATE 函数执行开销不是主因…
  80. B 知识点是二分查找边界约定。正确项:high取mid且不包含high,说明区间为[low, high)。错误项:左闭右闭需…
  81. B 知识点是Go多返回值惯例。正确项:Go原生支持多返回值,可具名返回。错误项:切片丢失类型信息;全局变量破坏封装;字符串需…
  82. A 知识点是三次握手报文语义:第三次握手确认服务器SYN,序号为客户端的初始序号加1;说序号为服务器初始序号加1是把确认号与…
  83. A 知识点是冒泡排序单趟过程:依次比较(3,1)交换、(3,4)不换、(4,1)交换、(4,5)不换,得[1,3,1,4,5…
  84. A 知识点是 TCP 连接建立流程。第三次握手客户端确认服务器 SYN,确认号应为服务器初始序号加 1,ACK 置 1;选项…
  85. B 字符串不可变,拼接会生成新对象,s重新指向新对象,故共2个对象,B正确;A忽略不可变性;C说s指旧对象;D凭空多算对象数…
  86. B 链表头部插入只需调整指针,O(1),B正确;A随机访问与插入效率无关;C连续内存不提升头部插入;D描述的是尾部插入的缺点…
  87. B 知识点是HTTP状态码语义。401表示未认证,需提供凭证。选项0是永久重定向;选项2表示已认证但无权限;选项3表示资源不…
  88. B 知识点是 WHERE 与 HAVING 的区别。聚合结果过滤须用 HAVING 且置于 GROUP BY 之后。选项 A…
  89. B 知识点是复合操作的原子性。count++ 含读改写三步,须用锁或原子类保证原子。选项 A 的 volatile 只保证可…
  90. A 401 Unauthorized表示请求缺少有效身份凭证;403 Forbidden表示身份已识别但被拒绝访问。选项B把…
  91. A 知识点为事务隔离级别。读已提交保证只能读到已提交数据,未提交修改不可见,故a项正确。读未提交会读到未提交数据;可重复读主…
  92. A、B 知识点为异常处理与日志可观测性。记录堆栈与请求标识便于定位,统一错误码便于前端处理,a、b正确。c项信息量不足无法排障;…
  93. A、B、C 知识点是传输层协议特性。TCP面向连接、可靠、三次握手、保证顺序;UDP头部小、无连接、不保证可靠与顺序,拥塞控制由应用…
  94. B 知识点是外键的参照完整性约束。插入R时须保证外键值在S中存在或为NULL,否则违反约束。选项不检查违反外键定义,自动删除…
  95. C 知识点:排序算法复杂度与稳定性。归并排序平均 O(n log n) 且相等元素相对次序不变,是稳定排序。快速排序与堆排序…
  96. B 知识点:性能问题定位与常见 N+1/重复查询。日志显示同一查询高频重复,优先怀疑缺少缓存或在循环中反复查库。连接池过小通…
  97. A 知识点是二分查找的区间收缩方向。正确项:中间元素小于目标说明目标只可能在右半区,故左边界取 mid+1。错误项:右边界减…
  98. A 知识点是事务边界与失败补偿。正确项:两步骤须在同一事务中,创建订单失败时回滚库存并返回失败,避免少卖。错误项:保持扣减会…
  99. A 知识点是快速排序在重复元素与劣质基准下的退化。等于基准的元素全挤到一侧会使子问题规模每次只减一,递归深度接近 n,退化为…
  100. A、B、C 知识点是并发编程中避免数据竞争的手段。原子操作或加锁可保证读改写的整体性,降低竞争。把共享状态局部化后汇总,减少了共享访…