华玉通软测试实习面:死锁、Mock与CI流水线

  • 日期:未公开
  • 企业与岗位:北京华玉通软|软件测试工程师(实习)
  • 适用层级:初级
    本篇为社区对用户分享面经的整理汇编,旨在帮助求职者了解面试考察方向。问题部分力求忠实还原原帖问答脉络;「参考答案 / 复盘思路」为整理方结合工程实践原创补充,仅供交流参考,不代表官方标准答案。
  1. 自我介绍。
    参考答案 / 复盘思路:
    围绕一段真实项目说清业务对象、个人测试职责、使用的工具和定位过的具体问题。应届实习面试不必堆技术名词,重点是能说明用例为何这样设计、Bug如何复现、结果如何验证。
  2. AI如何辅助过往工作?
    参考答案 / 复盘思路:
    可以举需求风险点提取、生成候选用例、脚本补全或日志聚类等真实用途。必须说明人工如何核对需求、如何运行断言以及发现过什么错误。对代码和业务数据先做权限与脱敏检查,内网限制下优先使用合规的本地工具或传统脚本。
  3. 注册成功但登录失败,如何排查?
    参考答案 / 复盘思路:
    先确认注册写库与登录读库是否同一环境,核对账号状态、密码哈希、验证码、会话Token及风控策略。按前端请求、网关、鉴权服务、数据库和缓存逐层查看traceId与错误码;区分401、403、429和5xx。构造刚注册、重复注册、禁用账户等数据复现,并检查主从延迟。
  4. 什么是死锁?
    参考答案 / 复盘思路:
    死锁指多个执行单元互相等待对方持有的资源,形成无法自行推进的循环。常见条件包括互斥、持有并等待、不可抢占和循环等待。工程上可统一加锁顺序、缩短事务、使用超时或避免嵌套锁;数据库死锁通常需捕获并对幂等操作有限重试。
  5. 如何确认问题确实由死锁引起?
    参考答案 / 复盘思路:
    先看线程堆栈和锁等待图:Java可用jstack或jcmd Thread.print,数据库看死锁日志与锁等待视图。区分死锁、普通长时间阻塞和CPU繁忙;死锁应存在等待环。复现时记录线程ID、资源和加锁顺序,修复后跑并发回归与超时告警验证。
  6. 学过C++吗?
    参考答案 / 复盘思路:
    如实说明掌握范围,最好举一个能编译运行的类、指针或RAII示例。若岗位涉及底层测试,可补充智能指针、对象生命周期、动态库链接和线程同步等基础;不熟悉时说明学习计划和验证方式,不要把“了解语法”包装成生产经验。
  7. Mock主要解决什么问题?
    参考答案 / 复盘思路:
    Mock用于替代不可控、昂贵或尚未就绪的依赖,使被测模块的输入和异常可重复。适合模拟第三方接口超时、返回错误、限流与特定状态;但Mock与真实服务契约可能漂移,因此仍需契约测试和少量真实集成测试,不能用Mock通过率代替端到端质量。
  8. 什么是单元测试?
    参考答案 / 复盘思路:
    单元测试针对可独立验证的最小行为单元,重点检查输入、输出、状态变化与异常分支。通过依赖注入隔离外部资源,保证快速、确定性和可重复。好的单测不仅覆盖正常返回,还应覆盖边界、非法输入和失败后的副作用;覆盖率高不等于断言有效。
  9. 给一个接口,如何做单元测试?
    参考答案 / 复盘思路:
    先确认接口属于函数级方法还是HTTP接口。函数级用例隔离数据库和网络依赖,测试正常、边界、非法参数、异常路径;HTTP层可用测试客户端检查状态码、Schema和鉴权。对写操作验证数据库或消息副作用,使用固定种子数据和自动清理保证用例可重复。
  10. 怎样达到分支覆盖率?
    参考答案 / 复盘思路:
    根据条件判断画控制流,设计让每个判定的真、假分支至少执行一次;可用coverage.py、JaCoCo等收集覆盖报告。对复合条件还要考虑短路求值和边界组合,必要时引入MC/DC或变异测试。覆盖率报告只反映执行过的路径,必须结合业务断言验证正确性。
  11. 动态库和静态库有何区别?
    参考答案 / 复盘思路:
    静态库在链接时把所需目标代码并入可执行文件,部署简单但体积可能增加;动态库运行时由加载器解析和共享,便于独立升级但存在ABI、版本与路径问题。Linux可用ldd、readelf检查依赖,测试应覆盖缺库、版本不兼容和符号解析失败。
  12. Linux程序因缺少依赖无法启动,如何处理?
    参考答案 / 复盘思路:
    先保存报错,使用file、ldd、readelf -d检查二进制架构、解释器和共享库依赖;用ldconfig -p查库位置。确认包版本与ABI后通过正规包管理或部署镜像补齐依赖,避免随意复制陌生so文件。修复后在干净环境重放启动与回归,记录依赖锁定版本。
  13. 如何设计Git代码变更触发、手动执行并回传Jira的流水线?
    参考答案 / 复盘思路:
    按提交/合并请求触发lint、单测、构建、集成与报告上传,另外提供带环境、分支、测试集参数的受控手动入口。流水线用服务账号最小权限调用Jira API回填构建号、用例结果与日志链接,失败不覆盖历史证据。密钥存CI密钥库,生产执行增加审批和并发互斥。
  14. 内网产品不能使用AI工具能否接受?
    参考答案 / 复盘思路:
    可以强调遵守数据分级、源代码和客户隐私约束。受限环境仍能通过脚本、静态分析、规则检查、传统自动化和可审计的内网服务提高效率;任何引入模型的方案先做安全评审,不应把个人外部账号当成替代通道。
    延伸思考(社区补充)
    如果把这类面试考察落到真实项目中,你会怎样准备可重复的数据、保留失败证据,并在CI里区分环境问题和产品缺陷?建议选自己做过的项目,画出依赖链路,给出可验证的指标和边界。