腾讯云智面试1.0

devtools/2025/3/29 7:46:34/

以下是针对腾讯云智系统测试岗位校招面试问题的详细解答,结合测试开发所需的技术理解与实践经验:


1. Selenium底层原理

回答要点

  • 架构模式:基于Client-Server模型,通过WebDriver协议(JSON Wire Protocol)与浏览器驱动(如ChromeDriver)通信。
  • 核心流程
    1. 测试脚本(Python/Java)调用Selenium API生成HTTP请求。
    2. 浏览器驱动解析请求并调用浏览器原生API(如DevTools Protocol)操作页面。
    3. 浏览器返回执行结果,驱动转发给测试脚本。
  • 关键组件
    • 浏览器驱动:桥接脚本与浏览器,实现跨浏览器兼容。
    • 元素定位:通过XPath/CSS选择器转换为浏览器可执行的DOM查询。

2. Airtest底层原理

回答要点

  • 图像识别:基于OpenCV模板匹配,通过截图与预设图片对比定位元素(适合游戏控件)。
  • UI树解析:借助Poco框架,解析Android/iOS的UI控件层次结构(类似Appium)。
  • 多端支持:通过ADB连接设备,注入Minicap/Minitouch实现跨平台操作。

3. Airtest元素定位失败原因与解决

常见原因

  • 图像变化:控件UI改版、分辨率适配问题。
  • UI延迟:页面未加载完成,立即执行操作。
  • 权限限制:未开启辅助功能或悬浮窗权限。
    解决方案
  • 多模匹配:结合图像识别 + UI树结构双保险定位。
  • 动态等待:添加wait()或轮询检测元素出现。
  • 设备适配:统一测试设备分辨率与系统版本。

4. 如何解决项目中的问题

回答框架(STAR法则)

“在X项目中,遇到Y问题(如接口偶发超时)。

  • 分析:通过日志定位到数据库连接池泄漏,高并发时连接耗尽。
  • 解决:引入连接池监控工具,优化连接释放逻辑,增加重试机制。
  • 结果:超时率从15%降至0.3%,并通过压力测试验证。”

5. 测试环境与主环境的区别

维度测试环境生产环境
配置低配硬件、调试日志全开高可用集群、日志级别优化
数据模拟数据或生产数据脱敏真实用户数据
网络内网隔离,可能使用Mock服务公网访问,严格防火墙规则
稳定性允许短暂中断,用于验证新功能要求7x24小时高可用

6. 对CI/CD的理解

核心价值

  • 持续集成(CI):代码提交后自动触发构建、单元测试,快速反馈问题。
  • 持续交付(CD):自动化部署到测试/生产环境,减少人工干预。
    腾讯云实践:CODING DevOps平台集成代码扫描、流水线编排、K8s部署。

7. 对接口的理解

  • 定义:系统间数据交互的契约,包含URL、请求方法、参数、响应格式。
  • 测试重点
    • 功能:参数校验、业务逻辑正确性。
    • 性能:响应时间、吞吐量、并发能力。
    • 安全:鉴权、加密、防重放攻击。

8. 黑盒测试方法

  • 等价类划分:有效/无效输入分类(如年龄:0-150有效,其他无效)。
  • 边界值分析:测试边界及附近值(如输入框最大长度100,测试99/100/101)。
  • 场景法:模拟用户操作流程(如电商下单:登录→选商品→支付)。
  • 因果图/判定表:处理多条件组合逻辑(见问题9)。

9. 因果图与判定表方法

  • 因果图:图形化表示输入条件(因)与输出结果(果)的逻辑关系。
  • 判定表:将因果图转化为表格,列出所有条件组合及对应动作。
    示例:登录功能(条件:用户名是否合法、密码是否正确 → 结果:成功/失败)。

10. 微信群发红包测试用例设计

功能点覆盖

  • 基础功能
    • 红包金额范围(0.01-200元)、人数限制(1-100人)。
    • 拼手气 vs 普通红包,余额不足提示。
  • 安全与权限
    • 非群成员无法抢红包,24小时未领自动退回。
    • 同一用户多次领取拦截。
  • 异常场景
    • 网络中断后重发红包,金额小数位校验(如0.001元报错)。

11. 元组与列表的区别

维度元组(Tuple)列表(List)
可变性不可变(immutable)可变(mutable)
语法(1, "a")[1, "a"]
性能内存占用小,访问速度快增删元素方便但性能略低
使用场景固定数据(如数据库查询结果)动态数据集合(如待办事项列表)

12. Python装饰器

作用:在不修改原函数代码的前提下,为函数添加额外功能(日志、鉴权、计时)。
示例

def log_time(func):def wrapper(*args, **kwargs):start = time.time()result = func(*args, **kwargs)print(f"{func.__name__}耗时: {time.time() - start}s")return resultreturn wrapper@log_time
def calculate():time.sleep(1)calculate()  # 输出:calculate耗时: 1.001s

13. HTTP请求方法

  • GET:获取资源(参数在URL中,可缓存)。
  • POST:提交数据(参数在请求体,非幂等)。
  • PUT:更新资源(全量替换)。
  • DELETE:删除资源。
  • PATCH:部分更新资源。
  • HEAD:获取响应头(无Body)。

14. GET与POST区别

维度GETPOST
数据位置URL查询参数请求体(Body)
安全性参数暴露,不适合敏感数据相对安全(HTTPS下)
幂等性幂等(多次执行结果相同)非幂等(如提交订单)
缓存可被浏览器缓存默认不缓存

15. Cookies与Session区别

维度CookiesSession
存储位置客户端(浏览器)服务端(内存/数据库)
安全性较低(可能被篡改)较高(仅存Session ID)
生命周期可设置过期时间通常随会话结束失效
适用场景跟踪用户行为(如购物车)存储敏感信息(如登录状态)

16. MySQL查找重复元素

场景:查找users表中重复的email字段。
SQL

-- 方法1:GROUP BY + HAVING
SELECT email, COUNT(*) 
FROM users 
GROUP BY email 
HAVING COUNT(*) > 1;-- 方法2:窗口函数(MySQL 8.0+)
SELECT * FROM (SELECT email, ROW_NUMBER() OVER(PARTITION BY email) AS rn FROM users
) t WHERE t.rn > 1;

17. 算法:找到字符串中仅出现一次的字符

题目:字符串中有且仅有一个字符出现一次,找出该字符(如输入"abaccdeff",输出'b')。
解法

def find_unique_char(s: str) -> str:count = {}for c in s:count[c] = count.get(c, 0) + 1for c in s:if count[c] == 1:return creturn ''

时间复杂度:O(n),空间复杂度:O(n)。


18. 为什么选择测试而非开发

回答建议

“我享受通过技术手段保障产品质量的成就感。测试不仅是找Bug,更需要深入理解系统设计、用户场景,并推动全流程优化。
X项目中,我通过自动化测试发现并发场景下的数据竞争问题,协助开发修复并设计重试机制,最终将故障率降低90%。
测试岗位对技术广度(开发、运维、安全)和沟通能力的要求,与我的职业规划高度契合。”


回答策略总结

  1. 技术问题:结构化回答(原理→应用→示例),避免笼统。
  2. 场景题:先列大纲再展开,体现逻辑性。
  3. 项目/行为题:用STAR法则 + 数据量化成果。
  4. 职业选择:结合实例展示热情与长期规划。

掌握以上要点,可系统化应对腾讯云智系统测试岗位的校招面试


http://www.ppmy.cn/devtools/171282.html

相关文章

Java学习总结-Map集合的实现类

HashMap集合的底层原理 实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据。 哈希表: JDK8之前,哈希表 数组 链表; JDK8开始,哈希表 数组 …

第30周Java分布式入门 ThreadLocal

ThreadLocal 课程笔记 一、章节结构概述 本章主要学习重要的工具类 ThreadLocal。章节分为六大模块: ThreadLocal 的两大使用场景ThreadLocal 所带来的好处ThreadLocal 的主要方法及使用顺序ThreadLocal 原理源码分析使用 ThreadLocal 的注意点和使用规范 从下一…

Linux学习笔记(应用篇二)

基于I.MX6ULL.MINI开发板 开发板与电脑相互通信电脑与开发板互传文件 开发板与电脑相互通信 用网线将电脑与开发板连接 本人使用的是Ubuntu系统,不是虚拟机 一般来说刚开始电脑和开发板是ping不通的 首先查看电脑的 IP WinR,cmd调出终端 我使用的是…

centos 7 部署FTP 服务用shell 搭建脚本,使用时稍微修改自己所需需求

#!/bin/bash # 检查是否为 root 用户 if [ "$(id -u)" ! "0" ]; then echo "此脚本需要以 root 用户身份运行。" exit 1 fi # 安装 vsftpd yum install vsftpd -y # 备份原始配置文件 cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd…

ngx_http_core_location

定义在 src\http\ngx_http_core_module.c static char * ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy) {char *rv;u_char *mod;size_t len;ngx_str_t *value, *n…

DeepSeek 协程API 调用与 vllm推理,llamafactory本地vllm部署

文章目录 简介代码实战调用官方API协程异步调用异步协程 方法二 vllm_infer 简介 使用协程调用DeepSeek的API,发现效果并不明显,没有加速的效果。 但如是本地部署DeepSeek,本地部署需要支持异步调用,我使用 llamafactory 部署&am…

leetcode 之(移除元素)

给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素。元素的顺序可能发生改变。然后返回 nums 中与 val 不同的元素的数量。 假设 nums 中不等于 val 的元素数量为 k,要通过此题,您需要执行以下操作: 更改…

【python】OpenCV—Hand Landmarks Detection

文章目录 1、功能描述2、代码实现3、效果展示4、完整代码5、涉及到的库函数6、参考 更多有趣的代码示例,可参考【Programming】 1、功能描述 基于 opencv-python 和 mediapipe 实现手部关键点的检测(无法检测出手,不过可以根据关键点的信息外…