岗位题目
测开相关面试题
为什么 TCP 建立连接需要三次握手?
TCP 三次握手的目的不是单纯通知双方在线,而是让双方确认彼此的发送和接收能力、同步初始序列号、协商连接参数,并避免历史重复连接请求造成错误连接。两次握手无法可靠完成这些目标。
同题还出现在 2 个公司岗位
一个 HTTP 请求的全过程
这题考察从 URL 到响应处理的完整链路,回答要按缓存、DNS、连接、TLS、HTTP 报文、服务端处理和客户端渲染顺序展开。
同题还出现在 2 个公司岗位
XSS 和 CSRF 的区别、原理和防御方式是什么?
XSS 和 CSRF 都属于 Web 安全问题,但攻击面不同。XSS 是让恶意脚本在可信页面里执行,CSRF 是诱导已登录浏览器向可信站点发起非预期请求。防御要分别围绕脚本执行边界和请求意图校验来设计。
Java 程序从编译到运行经历了哪些过程?
Java 程序从编译到运行通常经历源码编译、字节码生成、类加载、链接、初始化和执行几个阶段。执行阶段由 JVM 解释执行和 JIT 编译共同完成,并由运行时系统负责内存管理、线程调度和异常处理。
Java 为什么可以跨平台?
Java 能跨平台的核心原因是源码先编译成平台无关的字节码,再由不同操作系统和 CPU 上的 JVM 负责解释、编译和调用本地能力。跨平台成立的前提是运行环境、依赖和本地资源使用也保持兼容。
TCP 如何保证可靠传输?
TCP 可靠传输依赖一组机制共同保证:序列号和确认号负责定位数据,重传机制处理丢包,滑动窗口控制发送节奏,校验和发现损坏,按序交付与去重处理乱序和重复,拥塞控制保护网络稳定。
同题还出现在 1 个公司岗位
DNS 解析过程是什么?
DNS 解析是把域名转换为 IP 地址的过程。通常会先查浏览器、系统、hosts 和本地递归解析器缓存;未命中时,递归解析器依次查询根域、顶级域和权威域名服务器,拿到 A 或 AAAA 等记录后按 TTL 缓存并返回。
如何设计微信语音发送功能的测试用例?
微信语音发送功能的测试用例要覆盖录音、取消、时长边界、权限、编码上传、发送状态、接收播放、弱网、后台切换、兼容性和隐私安全。核心是把用户手势、媒体采集、网络传输和消息状态作为一条端到端链路验证。
如何设计微信发红包功能的测试用例?
微信发红包测试用例要覆盖创建、支付、扣款、发送、领取、并发、过期退款、通知、多端同步、账务对账、安全风控和异常恢复。重点是金额状态机、资金一致性和高并发领取的正确性。
并发怎么控制?
并发控制的核心不是简单加锁,而是在正确性、吞吐量、延迟和资源保护之间做取舍。高质量回答应先说明控制目标,再识别共享资源和一致性边界,最后按单机内存、线程调度、数据库、分布式协调、入口限流和异步削峰等层次选择手段。
死锁产生的条件和排查方式是什么?
死锁本质上是多个执行单元在持有部分资源的同时继续等待对方释放资源,导致所有相关线程都无法向前推进。面试回答要先讲清四个必要条件,再说明排查时如何从现象、线程状态、锁拥有关系、业务调用链和复现路径逐层定位,最后补充预防策略,例如统一加锁顺序、缩短锁范围、使用超时锁和减少共享可变状态。
进程、线程和协程有什么区别?
这道题本质是在考操作系统并发模型的分层理解:进程是资源隔离和资源分配的基本单位,线程是内核调度和 CPU 执行的基本单位,协程是用户态组织异步流程的轻量执行单元。面试时不能只背“进程重、线程轻、协程更轻”,要讲清地址空间、调度权、上下文切换成本、通信方式,以及在 I/O 密集、高并发服务中的取舍。
同题还出现在 1 个公司岗位
一个游戏场景题,多线程下更新分数排行榜?
这题核心不是选一个线程安全容器就结束,而是把排行榜拆成两个一致性问题:玩家当前分数的唯一真值,以及按分数排序的索引。多线程更新时,必须保证这两个结构的复合更新具备原子性,否则会出现丢分、重复排行项、旧分数残留、TopN 短暂错误等问题。一个成熟答案应先定义分数语义,再给出单机强一致方案,随后讨论 TopN、锁粒度、读写分离、分片、最终一致和测试验证。
TCP 和 UDP 有什么区别?
TCP 和 UDP 的核心区别在于是否提供面向连接、可靠传输、有序交付、流量控制和拥塞控制。TCP 更像一条可靠的字节流通道,适合对完整性和顺序要求高的场景;UDP 更像一次次独立投递的数据报,协议本身不保证到达、不保证顺序,但开销小、时延低、应用层可自由定制可靠性策略。
游戏用 UDP 传输,丢包了怎么办?
UDP 本身不保证可靠、有序和不重复,游戏选择 UDP 是为了把实时性放在第一位,而不是简单地追求不丢包。丢包后的处理要先区分消息类型:位置、朝向、动画等高频状态通常不重传,靠序号、快照、插值、预测和纠偏恢复体验;开火、受击、结算、道具、匹配等关键事件则需要在应用层实现可靠通道,配合 ACK/NACK、选择性重传、冗余或 FEC,在带宽和时延之间做权衡。
讲一下研发流程?
研发流程本质上是把不确定的业务目标,经过需求澄清、方案设计、开发实现、联调验证、测试准入、灰度发布、线上回归和复盘改进,逐步转化为稳定可交付能力的过程。测试开发视角不能只讲测试阶段,而要强调质量左移、自动化保障、风险识别、环境数据建设、发布门禁和线上质量闭环。
哈希冲突怎么解决?
哈希冲突是指不同 key 经过哈希函数计算后落到同一个桶或同一数组位置。回答时不能只背方法名,要先说明冲突不可完全避免,再按数据结构设计思路展开:优化哈希函数、选择冲突处理策略、控制负载因子、必要时扩容,并结合 Java HashMap 的链表转红黑树说明工程实践。
CPU 负载很高但利用率很低,可能是什么原因?
CPU 负载很高但利用率很低,核心原因通常是:load average 统计的是正在运行或等待运行的任务,以及处于不可中断睡眠状态的任务;而 CPU utilization 只反映 CPU 真正在执行用户态、内核态等计算工作的时间占比。因此,很多进程卡在 D 状态、IO wait、磁盘或网络阻塞、锁等待、容器 CPU 配额限制等场景下,系统会表现为 load average 很高,但 CPU 使用率并不高。
针对登录界面设计case?
登录界面测试用例设计不能只停留在用户名密码正确或错误。一个测试开发视角的完整答案,应从业务入口、账号体系、认证链路、安全风控、状态保持、跳转权限、兼容性、性能、可用性、可观测性和自动化回归等维度展开。核心目标是验证用户能正确、安全、稳定地完成登录,同时防止越权、撞库、会话泄露、验证码绕过、弱交互导致误操作,以及高并发下认证服务不可用等问题。
Thread.start() 和 run() 有什么区别?
Thread.start() 的本质是请求 JVM 创建并启动一个新的操作系统线程,使线程对象从 NEW 进入 RUNNABLE,就绪后由调度器安排执行,最终在新线程中回调 run()。run() 本身只是 Thread 类上的普通实例方法,直接调用不会创建新线程,不会改变线程生命周期,只会在当前调用线程里同步执行方法体。
手游一般多少帧率比较合适?
手游合适帧率没有唯一答案,核心判断不是越高越好,而是在游戏类型、目标设备、输入响应、功耗发热和长时间稳定性之间取平衡。轻度休闲、棋牌、放置类游戏稳定 30 FPS 或 45 FPS 往往可以接受;大多数主流手游以稳定 60 FPS 作为推荐目标;射击、竞速、动作、音游等强操作品类可以在高端设备上提供 90 FPS 或 120 FPS,但必须验证温升、电量和帧时间稳定性。
给定数组指针,如何访问第 50 个元素?
这道题考察的是数组下标、指针运算和数组指针类型的边界理解。核心回答应先澄清“第50位”通常指第50个元素,因此数组从 0 开始计数时应访问 arr[49],若给的是首元素指针则写成 *(p + 49)。如果题目说的是下标 50,则对应 arr[50],也就是第 51 个元素。
为什么要做测试?
测试的核心价值不是简单找 bug,而是用系统化方法识别、评估和控制质量风险。它贯穿需求、设计、开发、发布和线上运行全过程,帮助团队更早发现问题、更低成本修复问题、更稳定地交付产品。对于测试开发角色来说,测试还意味着建设自动化、质量门禁、监控告警、回归体系和质量度量,让发布从依赖个人经验变成依赖可验证的数据和机制。
怎么排查性能问题?
排查性能问题不能从单点经验出发,而要先把问题定义清楚:慢在哪里、影响谁、从什么时候开始、哪个指标异常、是否可复现。标准思路是先量化现象,再按调用链从客户端、网关、应用、缓存、数据库、网络和机器资源逐层缩小范围,结合压测、监控、日志、链路追踪、慢查询、线程栈、GC 日志、火焰图以及 CPU、内存、IO、网络等指标定位根因,最后通过修复验证和回归压测证明问题真正解决。
自动化测试流程和工具底层原理是什么?
自动化测试不是把手工步骤录制成脚本,而是围绕需求风险、用例分层、框架能力、工具协议、稳定性治理和持续集成建立一套可重复验证体系。工具底层通常通过浏览器调试协议、WebDriver 协议、移动端自动化驱动或操作系统辅助能力来发现元素、计算可操作状态、注入事件、采集结果并回传执行状态。
指针函数和函数指针的区别?
指针函数和函数指针的核心区别在于“谁是指针”。指针函数本质仍然是函数,只是返回值类型是指针;函数指针本质是指针变量,只是它保存的是某个函数的入口地址。区分它们时,重点看括号优先级、标识符先和谁结合,以及后续是被调用还是被赋值保存函数地址。
大模型输出准确度测试应该覆盖哪些测试点和评估口径?
这题考测试开发视角下的大模型输出准确度测试,答案要覆盖测试 oracle、评测集、规则断言、人工标注、LLM-as-judge 校准、回归测试和非确定性处理。
AI 用例分析工具调用大模型时,如何选择模型并评估识别准确率?
这题考测试开发场景下 LLM 用例分析工具的模型选择和准确率评估,答案要覆盖任务定义、模型取舍、标注基准、识别指标、阈值和错误分析。
抖音点赞功能如何设计测试用例,并在弱网、重试和状态一致性下验证结果?
这题考测试开发能否把一个看似简单的点赞按钮拆成状态机、一致性、弱网、并发和观测问题。好的答案要覆盖正常路径、边界路径、异常网络、重复操作、最终状态校验、自动化与监控,而不是只列点击前后图标变化。
Selenium WebDriver 的工作原理是什么,自动化脚本如何通过 WebDriver 协议驱动浏览器并定位元素?
这题考测试开发对 Selenium WebDriver 的机制理解。高质量回答要说明客户端脚本、WebDriver 协议、浏览器驱动、浏览器会话、元素引用、定位器、交互命令和等待同步之间的关系,并指出 Selenium 能做什么、不能保证什么。
有一个状态机模型时,如何设计状态、转移、异常路径和覆盖率测试?
这题考状态机测试的建模能力。高质量答案要先把状态机拆成状态、事件、转移、守卫条件和动作,再说明如何覆盖正常路径、非法转移、异常恢复、并发和持久化一致性,最后用覆盖矩阵和运行证据证明测试有效。
热搜应展示 10 条但页面只展示 9 条时,测试开发应如何定位前端、接口、排序和过滤链路问题?
这题考端到端定位能力。答案不能停留在“前端或后端都有可能”,而要说明如何固定复现条件,逐层核对接口响应、过滤去重、排序补位、客户端解析、渲染和日志,最终把缺失的一条定位到具体链路和可验证证据。
视频播放页面播放不出来时,如何从资源、播放器、网络、权限和兼容性角度设计排查测试?
这题考媒体播放链路的排查能力。答案要从资源是否可访问、媒体格式是否支持、播放器生命周期是否正确、网络和缓存是否异常、权限和设备策略是否阻断几层逐步定位,并说明每层可采集的断言和回归用例。
微信转账功能如何设计安全测试用例,并验证转账过程中密码不泄露?
这题考安全测试深度。答案要从转账资产和威胁模型出发,覆盖认证、授权、参数完整性、支付密码保护、传输存储脱敏、重放幂等、风控和审计,并说明如何用抓包、日志扫描、测试桩和服务端审计证明密码没有泄露。
抖音上下滑动视频流如何设计测试用例,覆盖加载、预取、播放状态、手势和弱网?
这题考短视频信息流的综合测试设计。回答要覆盖数据加载和预取、播放器状态切换、手势识别、缓存与资源回收、弱网和性能指标,并给出可观测断言,例如当前 item、播放事件、首帧时间、曝光、卡顿和内存。
Agent 的 think-execute 循环如何控制规划路径,避免偏离业务预期或无限循环?
这题考 Agent 循环规划的可控性,重点是说明为什么需要 think-execute,以及如何用目标约束、状态机、校验器、评估器、停止条件和测试回放确保路径不跑偏。
同题还出现在 1 个公司岗位
RAG 外部知识库分片过大时,如何重新切分、保留语义边界并控制召回噪声?
这题考 RAG 知识库切分的工程细节,重点是说明分片过大会稀释 embedding、挤占上下文、引入噪声,并给出递归切分、层级索引、元数据继承、召回重排和回归评测方案。
同题还出现在 1 个公司岗位
如何判断一个机器学习任务已经训练充分,可以从离线指标、泛化能力、过拟合、线上验证和业务门槛验收?
这题考察的是候选人是否能从测试和工程视角判断机器学习模型“训练好了”。好的回答不能只说 loss 收敛,而要覆盖目标指标、训练/验证曲线、泛化能力、过拟合排查、基线对比、鲁棒性测试、线上验证和业务验收门槛。
Agent 或 LLM 应用的评估数据集规模如何确定,bad case 应按任务类型、工具链路、检索、生成、成本和风险哪些维度分析?
这题考察 Agent 或 LLM 应用评估体系。数据集规模不应拍脑袋,而要按任务复杂度、风险等级、链路覆盖、指标置信度和迭代阶段确定;bad case 分析要覆盖任务类型、工具调用、检索、生成、成本和风险。