Skip to content

Performance_Testing 面试专题手册

💡 本章节共收录 512 道面试真题,建议每天复习 10-20 题。


Q1: 使用JMeter进行性能测试时,主要关注哪些指标?如何分析瓶颈?

【核心解析】 TPS/QPS、响应时间、并发用户数、错误率;资源使用率(CPU、内存、IO);通过聚合报告和监听器分析;瓶颈定位:数据库慢查询、代码效率、网络带宽;调优策略:索引优化、缓存、负载均衡


Q2: 如何定位系统的性能瓶颈?请结合具体工具和方法说明。

【核心解析】 监控CPU、内存、磁盘I/O、网络;使用Profiler(如JProfiler、Py-Spy);数据库慢查询分析;APM工具(SkyWalking、Pinpoint);压力测试与逐步增加负载


Q3: 性能测试是怎么做的?你主要关注哪些指标?

【核心解析】 制定性能测试计划;使用JMeter/LoadRunner等工具;关注TPS/QPS、响应时间、并发用户数、错误率、资源利用率;分析瓶颈并调优


Q4: 对于AI响应时间,如何判断好坏?指标是什么?

【核心解析】 响应时间分位数(P50/P95/P99);吞吐量(QPS);错误率;资源消耗;与业务场景结合设定阈值


Q5: 性能测试会细致到每一层对应时间吗?

【核心解析】 分层分析:客户端、网络、服务端、数据库;使用链路追踪工具;定位瓶颈;关注关键路径耗时


Q6: 接口响应过慢,你会如何排查和优化?

【核心解析】 监控CPU、内存、网络IO;查询慢SQL,优化索引或SQL语句;分库分表;异步处理;检查FullGC和递归;优化Redis、队列;限流策略


Q7: 有一个项目TPS过低或者处在一个瓶颈,你会怎样去发现并处理这个问题?

【核心解析】 监控指标(TPS、响应时间、CPU/内存);瓶颈定位(数据库、网络、代码);压力测试与负载模型;优化方案(缓存、异步、SQL调优)


Q8: 你是如何分析哪些场景需要去做性能测试?性能测试时需要注意哪些指标?

【核心解析】 业务关键路径与用户量预估;指标(TPS、QPS、响应时间、错误率、资源利用率);负载模型(峰值、持续、突发);目标(容量、稳定性、瓶颈)


Q9: 从100压测到1000,你找到的最大吞吐量平衡点/转折点在哪里?

【核心解析】 负载递增策略;观察拐点(TPS不再线性增长);资源瓶颈(CPU、内存、IO);系统容量规划


Q10: 是否做过JMeter等接口压测?

【核心解析】 使用JMeter创建线程组、取样器;配置参数化与断言;设置监听器分析结果;监控服务器资源;定位性能瓶颈


Q11: 你使用JMeter做过压测吗?请描述实际使用情况,包括TPS和QPS的区别。

【核心解析】 TPS(事务数/秒)与QPS(查询数/秒)区别;JMeter线程组设置;监听器分析;瓶颈定位;实际项目中的压测场景与结果


Q12: 在项目中同步教务系统数据时遇到网络 IO 瓶颈,你是如何解决的?

【核心解析】 分析瓶颈点(网络延迟、带宽);采用异步处理、批量操作;引入缓存;优化数据压缩;使用连接池


Q13: 如何对一个项目进行性能测试?请描述JMeter参数及关注的指标。

【核心解析】 制定性能测试计划;设计场景(负载、压力、稳定性);JMeter参数:线程数、Ramp-Up、循环次数、监听器;关注指标:TPS、QPS、响应时间、错误率、资源使用率;分析瓶颈并调优;生成报告


Q14: 针对道具购买接口,如何进行并发测试?

【核心解析】 使用JMeter/Locust模拟多用户并发;设置线程数、循环次数;监控服务器资源(CPU、内存、网络);检查数据库锁和事务;验证结果:响应时间、成功率、数据一致性


Q15: 线上服务出现500错误,你的排查步骤是什么?

【核心解析】 查看错误日志(应用日志、系统日志);检查服务器资源(CPU、内存、磁盘);检查网络连接;查看最近变更(代码、配置、环境);使用监控工具(APM、链路追踪);回滚或修复


Q16: 如何测试一个接口的并发场景?

【核心解析】 明确并发场景:抢购、秒杀、批量操作;设计并发用户数、请求频率;验证响应时间、吞吐量是否达标;检查数据一致性:库存不超卖、订单不重复;关注线程安全、死锁、资源竞争;异常处理:部分请求失败时的容错能力


Q17: 用JMeter做压测时主要关注什么指标?

【核心解析】 TPS/QPS;响应时间(平均、95分位、99分位);错误率;吞吐量;资源使用率(CPU、内存、IO);并发用户数


Q18: 做性能测试时,你有没有关注过服务器后台状态?

【核心解析】 关注CPU、内存、磁盘IO、网络IO;数据库连接池、慢查询;应用日志;JVM堆栈;系统负载


Q19: 性能相关的问题:帧率,渲染,以及优化之类的。

【核心解析】 帧率:FPS;渲染:GPU、Draw Call;优化:减少渲染批次、LOD、纹理压缩;测试工具:Profiler


Q20: 如何构造压力测试/并发测试?请结合项目经验说明。

【核心解析】 确定性能指标(TPS、响应时间);设计测试场景(峰值、负载、稳定性);使用JMeter/Locust等工具;监控服务器资源;分析瓶颈(数据库、网络、代码)


Q21: 如何进行性能测试?性能测试的核心流程是什么?

【核心解析】 流程:需求分析、场景设计、脚本开发、执行监控、结果分析、调优;指标:TPS、QPS、响应时间、并发数、资源利用率;工具:JMeter、LoadRunner、Gatling


Q22: 如何进行多线程测试?线程安全如何保证?

【核心解析】 使用synchronized、Lock、ThreadLocal;并发安全集合如ConcurrentHashMap;volatile保证可见性;模拟高并发、重复执行、长时间运行;检查死锁、数据错乱、丢失更新


Q23: 请说说项目的性能测试。

【核心解析】 测试工具(JMeter)、场景设计(负载、压力、稳定性)、监控指标(TPS、响应时间、错误率)、瓶颈分析


Q24: 性能测试中除了错误率,还应关注哪些指标?

【核心解析】 TPS、响应时间(平均、90%、99%)、吞吐量、资源使用率(CPU、内存、IO)、并发用户数


Q25: 性能测试的测试策略是什么?SQL慢查询的优化策略有哪些?

【核心解析】 负载测试;压力测试;稳定性测试;并发测试;TPS/QPS/响应时间指标;SQL优化:索引、查询重写、分库分表、缓存;慢查询日志分析


Q26: 有没有参与过性能测试、安全测试?

【核心解析】 性能测试:JMeter、Grafana监控TPS、响应时间、资源使用;安全测试:OWASP、渗透测试、SQL注入、XSS


Q27: 在JMeter压测过程中,你主要关注哪些指标?除了TPS还关注什么?

【核心解析】 TPS、响应时间、错误率、吞吐量、资源使用(CPU、内存)、并发用户数、网络IO


Q28: 基于大量数据的压力测试时,你说到性能上影响,有考虑过安全性方面的问题吗?

【核心解析】 压力测试可能暴露安全漏洞;如SQL注入、内存泄漏、认证绕过;需结合安全测试;关注数据隐私和加密


Q29: 性能测试要关注哪些具体指标?

【核心解析】 响应时间;吞吐量(TPS/QPS);并发用户数;错误率;资源利用率(CPU、内存、I/O);稳定性


Q30: 性能测试一般测多长时间?

【核心解析】 取决于测试类型:负载测试通常15-30分钟;压力测试可达数小时;稳定性测试需24-72小时;根据业务场景调整


Q31: 如何进行性能测试?

【核心解析】 确定性能指标:TPS、响应时间、并发用户数;设计负载模型:逐步增加并发;使用工具:JMeter/LoadRunner;监控系统资源:CPU、内存、IO;分析瓶颈:数据库慢查询、代码热点;调优后重新测试


Q32: 有没有做过性能相关的测试?JMeter 做接口压测时,如何设置并发用户数和持续时间?

【核心解析】 使用线程组设置并发数;使用Ramp-Up Period逐步增加;设置循环次数或持续时间;使用定时器模拟思考时间;结合聚合报告分析TPS、响应时间


Q33: JMeter 中如何模拟真实用户行为进行阶梯加压?

【核心解析】 使用Ultimate Thread Group插件;设置阶梯参数(初始、增量、持续时间);结合定时器模拟思考时间;使用逻辑控制器模拟用户操作流程


Q34: TPS 下降但 CPU 使用率不高,可能是什么原因?

【核心解析】 IO瓶颈(磁盘、网络);锁竞争(数据库锁、线程锁);内存不足导致GC频繁;外部依赖(第三方API慢);配置不合理(连接池、线程池)


Q35: 如何监控和定位内存泄漏问题?

【核心解析】 使用监控工具(JMX、VisualVM、Prometheus);观察内存使用趋势;分析堆转储(heap dump);检查对象引用链;代码审查(未释放资源、静态集合)


Q36: 你对性能测试有哪些了解?请介绍常见的性能测试类型和指标。

【核心解析】 负载测试、压力测试、稳定性测试、并发测试;指标:TPS、QPS、响应时间、吞吐量、错误率、CPU/内存使用率;工具:JMeter、LoadRunner、Gatling


Q37: 项目性能测试关注哪些指标?

【核心解析】 响应时间;吞吐量(TPS/QPS);并发用户数;资源利用率(CPU、内存、IO);错误率;稳定性与可扩展性


Q38: 讲一下用JMeter做性能测试,多接口怎么实现场景用例?

【核心解析】 使用线程组模拟并发;添加多个HTTP请求;使用逻辑控制器(如循环、条件);参数化数据;关联提取token;使用监听器收集结果;设置集合点


Q39: JMeter有哪些指标?

【核心解析】 响应时间、吞吐量(TPS/QPS)、错误率、并发用户数、CPU/内存使用率、网络IO、90%响应时间


Q40: JMeter要对被测系统做压测,但测试机性能有限,怎么解决?

【核心解析】 分布式压测:多台测试机协同;减少监控指标;优化脚本:减少断言、使用CSV参数化;调整线程数;使用云压测服务


Q41: 性能测试与接口测试有什么区别?

【核心解析】 性能测试关注系统响应时间、吞吐量、资源消耗等;接口测试关注功能正确性、参数校验、异常处理;性能测试通常使用工具模拟高并发;接口测试可手动或自动化


Q42: 接口性能测试中关注哪些指标,JMeter做性能测试流程?

【核心解析】 指标:TPS、QPS、响应时间、并发数、错误率、资源使用率;流程:制定计划、编写脚本、设置参数、运行测试、监控、分析结果、调优


Q43: 性能测试中,如何判断系统瓶颈在应用服务器、数据库还是网络?

【核心解析】 监控各层指标:CPU、内存、磁盘I/O、网络延迟;逐步增加负载观察拐点;使用工具(如top、iostat、Wireshark);分析慢查询与连接池;进行隔离测试


Q44: 如何通过日志排查偶发的接口超时bug?

【核心解析】 分析超时时间点;查看上下游服务日志;检查网络延迟;数据库慢查询;线程池/连接池耗尽;使用链路追踪工具


Q45: 是否使用过JMeter等压测工具?请描述一次压测实践。

【核心解析】 工具选择(JMeter/LoadRunner);脚本录制/编写;参数化;监听器分析结果;瓶颈定位(CPU/内存/IO);调优建议


Q46: 如何提高前端地图渲染效率?

【核心解析】 使用瓦片地图;懒加载;缓存;减少DOM操作;使用Canvas/WebGL;数据聚合


Q47: HTTP状态码中4xx和5xx的区别是什么?请举例说明。

【核心解析】 4xx客户端错误(400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found);5xx服务端错误(500 Internal Server Error、502 Bad Gateway、503 Service Unavailable);排查方向不同


Q48: 当MySQL数据特别多,只有一条请求打到MySQL,出现慢查询,怎么处理?

【核心解析】 分析慢查询日志;使用explain分析执行计划;优化索引;改写SQL;分库分表;缓存


Q49: 假如一个用户用1秒,那么10000个用户响应时间都是1秒吗?

【核心解析】 不是,并发用户数增加会导致资源竞争;响应时间受系统架构、资源瓶颈影响;需要性能测试验证


Q50: 实习中性能测试脚本如何实现的?

【核心解析】 使用JMeter或Locust;设计场景(并发数、持续时间);参数化数据;监控服务器资源;分析结果


Q51: 如何测试秒杀优惠券的性能?

【核心解析】 负载测试模拟高并发;压力测试确定系统瓶颈;稳定性测试长时间运行;监控TPS、响应时间、错误率;分析数据库锁、缓存、队列


Q52: 对前端App性能测试的了解。

【核心解析】 启动时间、页面加载时间;内存占用、CPU使用率;帧率(FPS);网络请求耗时;耗电量;工具:PerfDog、Instruments


Q53: 性能测试关注哪些指标?在游戏测试中,客户端和服务器分别关注什么?

【核心解析】 客户端:FPS、帧时间、内存占用、CPU使用率、加载时间;服务器:TPS、每秒逻辑帧数、响应时间(RT)、并发用户数、错误率;其他:网络延迟、带宽、数据库连接数


Q54: 如何测试自己实现的STL库(如容器、内存池)的性能?请说明测试指标和方法。

【核心解析】 测试指标:吞吐量、延迟、内存占用;使用基准测试框架(如Google Benchmark);对比标准库;内存池测试:分配/释放速度、碎片率、并发性能


Q55: 一台客户端有300个客户与300个客户端有300个客户对服务器施压,有什么区别?

【核心解析】 前者模拟单点并发,后者模拟分布式并发;前者可能受客户端资源限制,后者更接近真实场景;前者网络瓶颈在单点,后者网络分布;前者测试服务器单连接处理能力,后者测试整体负载均衡


Q56: 如何用LoadRunner测试搜索引擎输入汉字解析到域名?

【核心解析】 录制脚本模拟输入汉字;参数化汉字数据;设置并发用户;监控响应时间、吞吐量;分析结果


Q57: 如何对Redis进行性能测试?遇到过哪些性能瓶颈?如何解决?

【核心解析】 使用redis-benchmark;监控内存、CPU、网络;瓶颈:内存不足、慢查询、持久化;解决:优化数据结构、集群、调整配置


Q58: 你用Fiddler抓包优化页面响应时间,怎么分析性能瓶颈的?

【核心解析】 查看请求耗时分布;识别慢请求;分析资源大小和缓存策略;检查DNS、TCP连接时间;对比不同网络环境


Q59: 您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

【核心解析】 目的:评估系统性能、发现瓶颈、验证是否满足性能需求;关键:明确性能指标(TPS、响应时间等)、设计合理的负载模型、监控系统资源、分析结果并定位瓶颈


Q60: JMeter怎么用?用它怎么做压力测试?

【核心解析】 创建测试计划、添加线程组、配置取样器(HTTP请求等)、添加监听器;压力测试:设置并发用户数、循环次数、ramp-up时间;分析聚合报告、图形结果


Q61: LoadRunner分为哪三个模块?请简述各模块的主要功能。

【核心解析】 Virtual User Generator(VUG):录制和编辑脚本;Controller:设计场景、监控运行;Analysis:分析结果、生成报告。


Q62: 对某软件进行测试,发现在WIN98上运行得很慢,怎么判别是该软件存在问题还是其软硬件运行环境存在问题?

【核心解析】 检查系统资源使用情况;对比其他软件运行速度;在相同硬件上测试其他操作系统;分析软件代码效率;确认是否为兼容性问题。


Q63: 性能测试的流程是什么?

【核心解析】 需求分析→计划设计→脚本开发→场景执行→监控分析→调优→报告。


Q64: 性能测试曲线是什么?

【核心解析】 负载曲线:随着并发用户增加,TPS先升后降;响应时间曲线:随负载增加而上升;拐点识别;资源利用率曲线


Q65: 性能测试关注哪些参数?

【核心解析】 CPU使用率;内存占用;响应时间;吞吐量(TPS/QPS);设备温度;网络延迟


Q66: 使用JMeter进行性能测试时,主要关注哪些性能指标?

【核心解析】 TPS/QPS;响应时间;并发用户数;错误率;资源利用率(CPU/内存/IO)


Q67: 请描述JMeter的测试过程。

【核心解析】 创建测试计划;配置线程组;添加取样器(HTTP请求等);配置监听器;运行测试;分析结果


Q68: 并发测试时,如何构建测试数据?

【核心解析】 使用参数化(CSV/函数);预置数据库数据;利用线程组变量;确保数据隔离;考虑数据唯一性


Q69: 查询接口的QPS是多少?你是如何关注的?

【核心解析】 通过压测获取;监控线上QPS;关注峰值和均值;与预期对比;分析瓶颈


Q70: 你测试出来的最大QPS是多少?

【核心解析】 根据项目实际;压测结果;瓶颈分析;优化前后对比


Q71: 性能测试主要关注哪些参数?

【核心解析】 TPS/QPS;响应时间;并发数;错误率;资源利用率;吞吐量


Q72: 如何对接口进行打点,统计请求耗时以衡量系统性能?分布式系统下如何考虑?

【核心解析】 在请求入口和出口记录时间戳;使用中间件(如Spring拦截器);考虑分布式追踪(如Jaeger、Zipkin);注意时钟同步;分析耗时分布(TP99、TP999);区分CPU、内存、IO瓶颈


Q73: Redis处理请求时可能出现哪些性能瓶颈?

【核心解析】 内存不足导致OOM;单线程模型阻塞;大key操作;网络延迟;持久化(RDB/AOF)影响;CPU高负载;使用慢查询日志分析


Q74: Redis处理请求时可能出现哪些性能瓶颈?

【核心解析】 内存不足;CPU单线程瓶颈;网络延迟;持久化开销;慢查询;大key;连接数过多


Q75: 性能测试工具有哪些?如何设计性能测试?

【核心解析】 JMeter、LoadRunner、Gatling;负载/压力/稳定性测试;指标:TPS、响应时间、并发用户;场景设计;监控与分析


Q76: 性能测试主要测哪些方面?

【核心解析】 负载测试(正常负载下的表现);压力测试(极限负载下的表现);稳定性测试(长时间运行);并发测试(多用户同时操作);容量测试(系统最大容量);指标:TPS、响应时间、资源利用率


Q77: 考量一个系统负载能力需要哪些指标?

【核心解析】 TPS/QPS;响应时间;并发用户数;CPU使用率;内存使用率;磁盘I/O;网络带宽;错误率


Q78: 平时会关注一些客户端的性能测试吗?

【核心解析】 关注启动时间、内存占用、CPU使用、流畅度、耗电量、网络流量


Q79: 性能测试是怎么做的?

【核心解析】 确定性能指标;设计场景;选择工具(JMeter等);执行测试;监控资源;分析瓶颈;调优后复测


Q80: 如何测试接口的响应时间?

【核心解析】 使用JMeter/LoadRunner设置线程组与循环;聚合报告查看平均/90%/最大响应时间;监控服务器资源(CPU/内存/IO);分析慢查询与网络延迟;设置阈值与告警


Q81: MySQL大数据量测试关注什么?

【核心解析】 查询性能(索引/慢查询);数据插入/更新效率;分库分表策略;数据一致性;备份与恢复;监控指标(QPS/IO)


Q82: 测试过程中多线程测试是如何实现的?

【核心解析】 并发用户模拟(JMeter/代码);线程安全测试;资源竞争;死锁检测;性能监控;测试工具(LoadRunner/Gatling)


Q83: 假如有一个订单比如淘宝或者12306,让你测试,针对数据库表格你会对什么进行测试?

【核心解析】 字段完整性(非空/默认值);字段长度限制;索引性能;数据一致性(事务/锁);并发控制(乐观锁/悲观锁);数据准确性


Q84: 假如12306就剩一张票,但是有三个人同时下单怎么分配?

【核心解析】 数据库锁机制(行锁/表锁);事务隔离级别;乐观锁(版本号);队列处理;最终一致性;测试方法(并发模拟)


Q85: 压测是怎么做的?全链路压测是在线上做的还是测试环境做的?怎么确保线上数据和测试环境隔离开来?

【核心解析】 压测工具JMeter/LoadRunner;全链路压测通常在线上做,需隔离数据;使用影子表、标记请求;监控资源


Q86: 怎么用测试环境的监测值预测线上环境?

【核心解析】 建立模型;比例换算;考虑硬件差异;历史数据对比


Q87: MySQL查询速度比较慢你知道怎么优化么?

【核心解析】 加索引;优化SQL语句;避免全表扫描;分库分表;缓存


Q88: 压力测试如何做?发压参数如何设置?

【核心解析】 确定测试目标:TPS、响应时间;选择工具:JMeter、LoadRunner;场景设计:并发用户数、 ramp-up、持续时间;参数设置:线程数、循环次数、定时器;监控指标:CPU、内存、网络;结果分析:瓶颈定位


Q89: 在线上大促的时候遇到了性能问题怎么解决?

【核心解析】 监控:CPU、内存、IO、网络;定位瓶颈:慢SQL、代码热点;扩容:水平扩展、垂直扩展;缓存:Redis、CDN;限流降级;优化代码:算法、并发;压测验证


Q90: 性能测试中需要关注哪些指标?当RPS很高且CPU满载时,如何优化代码?

【核心解析】 指标:TPS/QPS、响应时间、CPU/内存使用率、并发用户数;CPU满载优化:减少计算复杂度、使用缓存、异步处理、优化数据库查询、水平扩展


Q91: 测试Web接口时,接口响应时间特别长,你会从哪些方面排查?

【核心解析】 网络延迟;服务器负载;数据库查询慢;代码逻辑效率低;外部依赖慢;资源竞争;使用性能分析工具(如JProfiler、Arthas)


Q92: CPU负载特别高时,有哪些排查方法?

【核心解析】 top命令查看进程;strace跟踪系统调用;jstack查看线程堆栈;分析代码热点;检查死循环或频繁GC


Q93: IO、网络IO、磁盘IO引起的并发问题导致CPU变慢,具体因素有哪些?

【核心解析】 大量线程阻塞;频繁上下文切换;磁盘读写慢;网络延迟;锁竞争;使用异步IO或优化IO模型


Q94: 系统的QPS是多少?如何理解QPS?

【核心解析】 QPS定义;QPS与并发用户数关系;toB与toC系统QPS差异;性能指标如TPS、响应时间


Q95: 如何进行SQL优化?

【核心解析】 使用EXPLAIN分析执行计划;合理创建索引,避免全表扫描;优化查询语句,减少JOIN和子查询;分库分表;读写分离;缓存热点数据


Q96: MySQL死锁和慢查询是如何发生的?如何从外部判断?

【核心解析】 死锁:多个事务互相等待资源;慢查询:SQL执行时间长;外部判断:show processlist查看状态;使用EXPLAIN分析慢查询;查看performance_schema.data_locks表


Q97: MySQL慢查询如何定位?

【核心解析】 开启慢查询日志;使用EXPLAIN分析;查看索引使用情况;优化SQL语句


Q98: IO密集和计算密集任务,给定CPU如何分配线程数?

【核心解析】 IO密集:线程数可大于CPU核心数,减少等待;计算密集:线程数接近CPU核心数,避免上下文切换;公式:IO密集线程数=CPU核心数*2;实际需压测调整


Q99: 什么是QPS?如何感知线上项目出现问题?如何排查线上无法复现的Bug?

【核心解析】 QPS:每秒查询数;感知:监控指标(响应时间、错误率、CPU/内存)、告警、用户反馈;排查:日志分析、链路追踪、模拟环境复现、增加日志、灰度发布


Q100: 性能测试的指标有哪些?如何保证测试覆盖率?

【核心解析】 指标:TPS、QPS、响应时间、并发用户数、资源利用率;覆盖率:需求覆盖、场景覆盖、代码覆盖;工具:JMeter、LoadRunner