10. 安全 / 测试 / 部署

本章收录 34 道老师常问问题,高频题靠前。回答时尽量结合自己的项目举例。

1. 项目测试类型、测试流程?

  1. 主要进行功能测试、兼容性测试、边界值测试、异常测试。逐模块测试增删改查、跳转、弹窗功能
  2. 测试不同浏览器、设备兼容性
  3. 测试空值、极值、非法数据等边界场景,保证系统全方位稳定。

2. 单元测试的作用与使用场景?

针对核心工具方法、业务接口进行单独测试,提前排查代码逻辑bug,快速定位问题,避免整合开发后大面积报错,提升代码健壮性。

3. 项目部署完整步骤?

  1. 环境搭建:服务器安装JDK、MySQL、运行环境
  2. 数据库导入sql脚本
  3. 项目打包为jar包
  4. 上传服务器、配置数据库连接参数、开放端口
  5. 启动项目、测试访问、配置后台守护进程保证稳定运行。

4. 线上报错排查思路?

  1. 查看服务器日志定位报错位置
  2. 区分前端参数、后端逻辑、数据库三类问题
  3. 断点调试、核对SQL语句、校验参数格式
  4. 修复bug后重新测试,保证功能正常。

5. 如何防止重复提交?

前端禁用重复点击按钮;后端添加接口防抖、请求幂等性处理,拦截短时间内重复相同请求,有效防止数据重复提交、数据冗余问题。

6. 系统做了哪些安全措施?

  1. 认证授权:登录态与角色权限
  2. 密码哈希:不明文存储
  3. 校验与预编译:防注入
  4. 越权校验:服务端校验归属
  5. 上传限制:类型与大小白名单

7. 如何测功能?

简要结论:用例覆盖主流程与异常;准备表格:步骤、期望、实际。

关于「如何测功能」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

8. 如何部署上线?

部署流程:准备 JDK/DB→导 SQL→改配置→打包上传→启动→Nginx 反代→验证。

  1. 防火墙开放端口
  2. 进程守护 systemd
  3. 答辩能口述完整步骤

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

9. 常见上线故障?

跨域是浏览器同源策略限制不同源 AJAX 请求,需服务端 CORS 或 Nginx 反代。

  1. @CrossOrigin、WebMvcConfigurer、Filter 均可配置
  2. 允许 Origin、Methods、Headers 需最小化
  3. 前后端分离联调时高频考点

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

10. 演示失败预案?

简要结论:本地可运行包 + 录屏备份。

关于「演示失败预案」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

11. 弱口令?

简要结论:复杂度提示。

关于「弱口令」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

12. 登录锁定?

登录流程:提交账号密码→后端校验→写 Session/签发 JWT→后续请求带凭证→拦截器鉴权。

  1. 密码 BCrypt 比对,不明文传输存储
  2. 失败次数限制与验证码可选
  3. 答辩建议画简单时序图

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

13. 验证码?

验证码防止暴力破解与刷接口,常见图形码/短信码,服务端校验后一次性失效。

  1. 登录、注册、敏感操作前校验
  2. 可存 Session 或 Redis 并设过期
  3. 答辩说明为何不能仅前端校验

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

14. HTTPS?

HTTPS 加密传输防窃听;CSRF 跨站请求伪造,防护 Token、SameSite Cookie、Referer 校验。

  1. 生产必须 HTTPS
  2. 表单 POST 带 CSRF Token
  3. 答辩说明安全措施

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

15. XSS?

XSS 跨站脚本:恶意脚本注入页面,防护需输出编码、CSP、富文本过滤。

  1. 前端 v-html 谨慎,后端转义用户输入
  2. Cookie 设 HttpOnly 减窃取风险
  3. 答辩结合评论/公告等输入场景说明

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

16. CSRF?

HTTPS 加密传输防窃听;CSRF 跨站请求伪造,防护 Token、SameSite Cookie、Referer 校验。

  1. 生产必须 HTTPS
  2. 表单 POST 带 CSRF Token
  3. 答辩说明安全措施

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

17. 越权测试?

越权:用户访问非本人资源,如改 URL 中 id 查看他人订单。

  1. 服务端校验数据归属 userId
  2. 不只隐藏前端按钮
  3. 答辩举例测试方法

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

18. 上传漏洞?

简要结论:白名单。

关于「上传漏洞」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

19. 敏感日志?

日志用于排错、审计与性能分析,常用 SLF4J + Logback/Log4j2。

  1. 分级别:ERROR/WARN/INFO/DEBUG
  2. 关键业务、异常、慢接口应记录
  3. 生产避免打印敏感信息与过量 DEBUG

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

20. 错误堆栈?

简要结论:不对外。

关于「错误堆栈」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

21. 备份恢复?

简要结论:演练。

关于「备份恢复」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

22. 回滚?

简要结论:保留旧包。

关于「回滚」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

23. 冒烟测试?

冒烟测试:上线前验证主流程可走通;回归测试:改 bug 后重测相关模块。

  1. 测试用例表记录期望/实际
  2. 答辩展示测试截图
  3. 体现质量意识

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

24. 回归测试?

冒烟测试:上线前验证主流程可走通;回归测试:改 bug 后重测相关模块。

  1. 测试用例表记录期望/实际
  2. 答辩展示测试截图
  3. 体现质量意识

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

25. 接口测试?

测试包括功能、边界、异常、权限、兼容性;准备用例表与截图。

  1. 登录失败、非法参数、越权访问
  2. 主流程必须可演示
  3. 答辩诚实说明范围

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

26. 性能压测?

简要结论:概念/如实。

关于「性能压测」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

27. Docker?

Docker 容器化打包环境,镜像一次构建到处运行;毕设可选,了解概念即可。

  1. Dockerfile 构建镜像
  2. docker-compose 多服务
  3. 答辩如实是否使用

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

28. 进程守护?

简要结论:systemd。

关于「进程守护」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

29. 防火墙端口?

简要结论:最小开放。

关于「防火墙端口」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

30. 环境隔离?

配置分 dev/test/prod 环境,application-{profile}.yml 或 properties 切换。

  1. spring.profiles.active 指定环境
  2. 敏感信息用环境变量,不入库
  3. 答辩说明本地与服务器配置差异

结合毕设:结合系统测试与上线部署,可指出具体类名、配置项或表结构,避免只背概念。

31. 密钥外置?

简要结论:环境变量。

关于「密钥外置」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

32. 交付清单?

简要结论:源码文档账号。

关于「交付清单」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

33. 运维文档?

简要结论:安装步骤。

关于「运维文档」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词

34. 最大运维坑?

简要结论:真实案例。

关于「最大运维坑」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 结合系统测试与上线部署,结合自己的代码、配置或表结构举例,避免只背关键词