6. Python 答辩

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

1. Flask和Django详细区别与选型原因?

Flask轻量微型、无内置功能、自由度高、按需扩展,适合小型项目、毕业设计,灵活轻便;Django重型框架,内置后台、权限、ORM、表单验证,功能齐全但笨重,适合大型项目,本项目选用Flask更适配轻量化需求。

2. 爬虫常见反爬措施与解决方案?

常见反爬:UA检测、IP封禁、Cookie校验、频率限制、验证码。解决方案:伪装User-Agent、设置随机休眠间隔、携带Cookie会话、使用代理IP、模拟浏览器请求,保障爬虫稳定采集数据。

3. 数据分析完整流程与核心步骤?

完整流程:数据采集→数据清洗→数据预处理→数据分析→可视化展示→结果总结。核心是数据清洗,完成去重、去空、剔除异常值、格式统一,保证数据质量,是数据分析准确的前提。

4. Python装饰器的作用?

装饰器可以在不修改原有函数代码的前提下,对函数进行增强,项目中用于接口权限校验、日志记录、请求拦截,实现代码解耦。

5. 为什么选 Python?

DTO/VO/Entity 分层:Entity 映射表,DTO 传参,VO 返前端,避免暴露密码等敏感列。

  1. Controller 接 DTO,Service 转 Entity
  2. 返回 VO 控制字段可见性
  3. 答辩体现规范分层意识

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

6. Django 与 Flask / FastAPI 如何选?

Django 全家桶适合管理后台与快速CRUD;Flask 轻量灵活、按需扩展;FastAPI 适合现代 API、类型注解与自动文档。按毕设规模与团队熟悉度选型并说清理由。

  1. Django:内置 Admin/ORM,规范强
  2. Flask:自由度高,适合小中型
  3. FastAPI:高性能异步 API 友好

结合毕设说明最终选择及放弃其他方案的原因。

7. MVC / MTV 在项目中如何体现?

序列化对象转字节流传输或持久化,实现 Serializable;注意 serialVersionUID。

  1. Redis 存对象、RPC 传参
  2. 敏感字段 transient
  3. 答辩了解用途

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

8. ORM 是什么?优缺点?

N+1 问题:查 N 条主记录后又逐条查关联,产生大量 SQL。

  1. 解决:JOIN 一次查出、批量 IN 查询、MyBatis 嵌套/延迟加载谨慎使用
  2. ORM 项目常见性能坑
  3. 答辩可结合列表页关联展示说明优化

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

9. 如何做登录鉴权?

依赖注入(DI)由容器装配依赖,替代手动 new,实现解耦。

  1. 构造器注入更推荐:依赖明确、便于测试、避免空指针
  2. @Autowired/@Resource 可用于字段或 setter
  3. 项目中 Controller 注入 Service,Service 注入 Mapper

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

10. 虚拟环境与依赖管理?

循环依赖指 Bean 相互注入;Spring 对单例 setter/字段注入可用三级缓存解决。

  1. 构造器循环依赖无法启动,应重构
  2. 设计时避免 Service 互相调用形成环
  3. 答辩强调良好分层可规避

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

11. GIL 是什么?对你项目影响?

GIL 全局解释器锁使同一进程同一时刻只执行一线程字节码,CPU 密集多线程无法并行。

  1. IO 密集多线程仍有效
  2. CPU 密集用 multiprocessing
  3. 答辩如实说明项目类型

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

12. 如何防 SQL 注入?

SQL 注入通过拼接恶意 SQL 篡改语句,防护核心是 预编译 #{} 与参数校验。

  1. MyBatis #{} 使用 PreparedStatement
  2. ${} 仅用于表名/排序等不可预编译场景
  3. 永不拼接用户输入到 SQL

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

13. 前后端如何交互?

前后端通过 HTTP/HTTPS 传 JSON,鉴权用 Session Cookie 或 Authorization Bearer JWT。

  1. RESTful 风格接口
  2. 统一返回格式
  3. 答辩画请求响应流程

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

14. 如何部署?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

15. 列表、元组、字典的区别与使用场景?

  1. 列表可变、适合频繁修改数据
  2. 元组不可变、适合固定数据、安全性高
  3. 字典键值对存储、查询速度快,适合存储关联映射数据,项目中大量用于数据存储与封装。

16. 深浅拷贝?

浅拷贝共享引用对象;深拷贝递归复制引用对象,互不影响。

  1. Cloneable、序列化、工具类实现
  2. 集合拷贝注意层级
  3. 答辩了解概念即可

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

17. *args **kwargs?

SSM 传统打 war 部署外置 Tomcat;Spring Boot 打 jar 内嵌容器 java -jar 运行。

  1. Maven package 生成可部署包
  2. 注意 profile 与环境配置分离
  3. 答辩能说出部署命令与端口配置

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

18. 装饰器?

Python 装饰器 @decorator 在不改原函数下增强:日志、权限、计时。

  1. 本质是闭包包装
  2. Flask 路由 @app.route 也是装饰器
  3. 答辩展示一个自定义装饰器

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

19. 生成器?

生成器 yield 惰性产出元素,省内存,适合大文件逐行读取。

  1. 生成器表达式 (x for x in ...)
  2. 迭代器协议 __iter__/__next__
  3. 答辩了解即可

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

20. 迭代器协议?

简要结论:__iter__ __next__。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

21. with 语句?

with 语句上下文管理器自动 __enter__/__exit__,确保文件/连接关闭。

  1. open() 常用 with
  2. 自定义 __enter__/__exit__
  3. 答辩说明资源管理

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

22. 异常处理?

统一异常处理避免把堆栈直接返回前端,提升体验与安全。

  1. @ControllerAdvice + @ExceptionHandler 捕获业务/系统异常
  2. 封装统一 Result(code/msg/data)
  3. 记录日志便于排错,答辩可展示全局异常类

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

23. 模块与包?

简要结论:组织代码。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

24. 类型注解?

注解是元数据,@Override/@Transactional 等由编译器或框架处理。

  1. 自定义注解+ AOP 实现
  2. 运行时 RetentionPolicy.RUNTIME
  3. 答辩指出项目中常用注解

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

25. dataclass?

static 属于类而非实例,静态方法/变量随类加载,无 this。

  1. 工具方法常用 static
  2. 静态变量注意线程安全
  3. 答辩对比实例成员

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

26. 异步 asyncio?

@Async 将方法放线程池异步执行,适合发邮件、写日志等非主路径任务。

  1. 需 @EnableAsync 与自定义 Executor
  2. 异步方法同类调用不生效
  3. 答辩说明是否使用及线程池参数

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

27. 多线程多进程?

IO 阻塞流式读写;NIO Channel/Buffer 非阻塞,适合高并发网络(了解即可)。

  1. 文件读写用 BufferedReader
  2. 用完 close 或 try-with-resources
  3. 答辩说明上传下载用过哪些类

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

28. 请求库?

简要结论:requests / httpx。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

29. 爬虫注意?

简要结论:合规与频率。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

30. BeautifulSoup?

@ConfigurationProperties 将配置前缀批量绑定到 Java 对象,类型安全可读。

  1. 比 scattered @Value 更易维护
  2. 配合 @EnableConfigurationProperties 注册
  3. 答辩可展示自定义配置类

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

31. pandas 用途?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

32. matplotlib?

applicationContext.xml 是 Spring 核心配置文件,声明 Bean、扫描、数据源等。

  1. 与 spring-mvc.xml 分工:根容器 vs Web 容器
  2. Boot 项目多用 JavaConfig + yml 替代 XML
  3. 答辩对比 SSM 手工装配与 Boot 自动配置差异

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

33. 机器学习用了吗?

简要结论:如实;讲清特征与评估。

关于「机器学习用了吗」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

34. 模型如何落库?

简要结论:结果表或文件。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

35. Celery?

Excel 导入导出常用 EasyExcel/POI,注意大数据量流式读写防 OOM。

  1. 导出列表、模板导入批量数据
  2. 校验格式与事务回滚
  3. 答辩演示导出按钮

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

36. Redis 缓存?

Redis 可用于缓存热点数据、验证码、Session 共享、分布式锁等。

  1. 减轻数据库压力
  2. 注意过期策略与一致性
  3. 答辩说明项目中具体缓存了哪些数据

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

37. 迁移 migrate?

SpringMVC 参数绑定自动将请求参数封装为方法入参。

  1. 简单类型、POJO 对象按名称或 @RequestParam 绑定
  2. @PathVariable 绑定 REST 路径变量
  3. 答辩强调服务端仍需校验,不能只依赖前端

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

38. 序列化?

序列化对象转字节流传输或持久化,实现 Serializable;注意 serialVersionUID。

  1. Redis 存对象、RPC 传参
  2. 敏感字段 transient
  3. 答辩了解用途

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

39. 分页过滤排序?

分页限制单次查询数据量,常用 PageHelper 或 LIMIT offset,size。

  1. 前端传 pageNum/pageSize,后端封装 PageInfo
  2. 深分页 offset 过大性能差,可延迟关联优化
  3. 答辩演示列表页分页接口与 SQL

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

40. 权限类?

权限设计常用 RBAC:用户—角色—权限,菜单与接口双重校验。

  1. 前端隐藏按钮不等于安全,后端必须鉴权
  2. 拦截器/过滤器校验登录态与角色
  3. 答辩演示管理员与普通用户差异

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

41. 中间件?

简要结论:横切逻辑。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

42. 信号 signal?

Session 在服务端保存登录态,Cookie 携带 JSESSIONID,拦截器校验是否登录。

  1. 登录成功写入 userId/role 等信息
  2. 集群需 Redis 共享 Session 或改 JWT
  3. 答辩能口述登录→访问受保护接口流程

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

43. 静态媒体文件?

简要结论:Nginx 托管。

关于「静态媒体文件」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

44. CSRF?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

45. XSS?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

46. 文件上传?

文件上传通过 MultipartResolver 解析 multipart 表单,Controller 接收 MultipartFile。

  1. 限制大小、后缀白名单,防止恶意文件
  2. 存储本地目录或 OSS,数据库只存访问 URL
  3. 答辩可演示上传头像/附件的完整流程

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

47. 日志?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

48. 配置分环境?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

49. 单元测试?

单元测试验证模块逻辑,SpringTest + JUnit/Mockito 可 Mock 依赖测 Service。

  1. 覆盖核心工具方法与关键分支
  2. 集成测试 @SpringBootTest 启动容器测接口
  3. 答辩如实说明测试范围与用例数

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

50. 接口测试?

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

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

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

51. 代码规范?

PEP8 是 Python 代码风格规范:缩进 4 空格、命名 snake_case、行宽限制等。

  1. flake8/black 检查格式
  2. 统一风格便于协作
  3. 答辩体现代码规范意识

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

52. Python优势劣势,对比Java的差异?

Python解释型、语法简洁、开发速度快、生态丰富,适合爬虫、数据分析、轻量化Web;缺点是运行速度慢、强类型约束弱。Java编译型、运行快、规范性强,适合大型企业项目,两者适配不同开发场景。

53. 为何适合毕设?

简要结论:快速落地。

关于「为何适合毕设」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

54. 不足?

不足与展望:准备 2~3 条真实不足(如无大屏、缺压测)及改进计划,勿说完美。

  1. 体现反思能力
  2. 改进要具体可行
  3. 答辩态度诚恳

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

55. 扩展计划?

简要结论:缓存队列监控。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

56. N+1?

N+1 问题:查 N 条主记录后又逐条查关联,产生大量 SQL。

  1. 解决:JOIN 一次查出、批量 IN 查询、MyBatis 嵌套/延迟加载谨慎使用
  2. ORM 项目常见性能坑
  3. 答辩可结合列表页关联展示说明优化

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

57. 事务?

事务保证一组 SQL 同成功同失败,Spring @Transactional 或数据库 BEGIN/COMMIT。

  1. 下单扣库存典型场景
  2. 隔离级别影响并发问题
  3. 答辩指出哪些 Service 加了事务

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

58. 软删除?

逻辑删除用 deleted/is_deleted 标志位标记删除,查询默认带 deleted=0 条件。

  1. 数据可恢复,满足审计需求
  2. MyBatis-Plus 可用 @TableLogic 自动过滤
  3. 注意唯一索引与业务查询都要带删除条件

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

59. 时区?

简要结论:USE_TZ。

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

  1. 先用一句话说清定义或结论(如上)
  2. 补充 2~3 个技术要点或注意事项,体现理解深度
  3. 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词

60. 字符编码?

统一 UTF-8 编码避免中文乱码:CharacterEncodingFilter、数据库 utf8mb4、JSON UTF-8。

  1. 请求/响应/页面/库表字符集一致
  2. SSM 在 web.xml 配置过滤器
  3. 答辩可说明曾遇到的乱码排查过程

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

61. 密码哈希?

密码存储用 BCrypt/Scrypt 单向哈希+盐,绝不明文;传输 HTTPS。

  1. 登录比对 hash
  2. 重置密码重新 hash
  3. 答辩指出加密代码

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

62. JWT 失效?

JWT 无状态令牌,Header.Payload.Signature,服务端验签即可,适合前后端分离。

  1. 过期时间与刷新策略
  2. 失效黑名单或短 TTL
  3. 答辩对比 Session 优劣

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

63. 最大难点?

答辩「最大难点」应讲 真实问题:现象→定位→方案→验证。

  1. 如联表同步、权限越权、分页性能、跨域联调等
  2. 体现日志、断点、SQL 优化等排错过程
  3. 避免空泛说「技术难」,要有故事线

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。

64. 答辩重点?

总体架构分层:表现层→接口层 Controller→业务 Service→持久 Mapper→数据库。

  1. 前后端分离则加 API 与静态部署
  2. 画架构图辅助讲解
  3. 答辩强调职责分离

结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。