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 返前端,避免暴露密码等敏感列。
- Controller 接 DTO,Service 转 Entity
- 返回 VO 控制字段可见性
- 答辩体现规范分层意识
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
6. Django 与 Flask / FastAPI 如何选?
Django 全家桶适合管理后台与快速CRUD;Flask 轻量灵活、按需扩展;FastAPI 适合现代 API、类型注解与自动文档。按毕设规模与团队熟悉度选型并说清理由。
- Django:内置 Admin/ORM,规范强
- Flask:自由度高,适合小中型
- FastAPI:高性能异步 API 友好
结合毕设说明最终选择及放弃其他方案的原因。
7. MVC / MTV 在项目中如何体现?
序列化对象转字节流传输或持久化,实现 Serializable;注意 serialVersionUID。
- Redis 存对象、RPC 传参
- 敏感字段 transient
- 答辩了解用途
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
8. ORM 是什么?优缺点?
N+1 问题:查 N 条主记录后又逐条查关联,产生大量 SQL。
- 解决:JOIN 一次查出、批量 IN 查询、MyBatis 嵌套/延迟加载谨慎使用
- ORM 项目常见性能坑
- 答辩可结合列表页关联展示说明优化
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
9. 如何做登录鉴权?
依赖注入(DI)由容器装配依赖,替代手动 new,实现解耦。
- 构造器注入更推荐:依赖明确、便于测试、避免空指针
- @Autowired/@Resource 可用于字段或 setter
- 项目中 Controller 注入 Service,Service 注入 Mapper
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
10. 虚拟环境与依赖管理?
循环依赖指 Bean 相互注入;Spring 对单例 setter/字段注入可用三级缓存解决。
- 构造器循环依赖无法启动,应重构
- 设计时避免 Service 互相调用形成环
- 答辩强调良好分层可规避
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
11. GIL 是什么?对你项目影响?
GIL 全局解释器锁使同一进程同一时刻只执行一线程字节码,CPU 密集多线程无法并行。
- IO 密集多线程仍有效
- CPU 密集用 multiprocessing
- 答辩如实说明项目类型
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
12. 如何防 SQL 注入?
SQL 注入通过拼接恶意 SQL 篡改语句,防护核心是 预编译 #{} 与参数校验。
- MyBatis #{} 使用 PreparedStatement
- ${} 仅用于表名/排序等不可预编译场景
- 永不拼接用户输入到 SQL
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
13. 前后端如何交互?
前后端通过 HTTP/HTTPS 传 JSON,鉴权用 Session Cookie 或 Authorization Bearer JWT。
- RESTful 风格接口
- 统一返回格式
- 答辩画请求响应流程
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
14. 如何部署?
部署流程:准备 JDK/DB→导 SQL→改配置→打包上传→启动→Nginx 反代→验证。
- 防火墙开放端口
- 进程守护 systemd
- 答辩能口述完整步骤
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
15. 列表、元组、字典的区别与使用场景?
- 列表可变、适合频繁修改数据
- 元组不可变、适合固定数据、安全性高
- 字典键值对存储、查询速度快,适合存储关联映射数据,项目中大量用于数据存储与封装。
16. 深浅拷贝?
浅拷贝共享引用对象;深拷贝递归复制引用对象,互不影响。
- Cloneable、序列化、工具类实现
- 集合拷贝注意层级
- 答辩了解概念即可
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
17. *args **kwargs?
SSM 传统打 war 部署外置 Tomcat;Spring Boot 打 jar 内嵌容器 java -jar 运行。
- Maven package 生成可部署包
- 注意 profile 与环境配置分离
- 答辩能说出部署命令与端口配置
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
18. 装饰器?
Python 装饰器 @decorator 在不改原函数下增强:日志、权限、计时。
- 本质是闭包包装
- Flask 路由 @app.route 也是装饰器
- 答辩展示一个自定义装饰器
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
19. 生成器?
生成器 yield 惰性产出元素,省内存,适合大文件逐行读取。
- 生成器表达式 (x for x in ...)
- 迭代器协议 __iter__/__next__
- 答辩了解即可
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
20. 迭代器协议?
简要结论:__iter__ __next__。
关于「迭代器协议」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
21. with 语句?
with 语句上下文管理器自动 __enter__/__exit__,确保文件/连接关闭。
- open() 常用 with
- 自定义 __enter__/__exit__
- 答辩说明资源管理
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
22. 异常处理?
统一异常处理避免把堆栈直接返回前端,提升体验与安全。
- @ControllerAdvice + @ExceptionHandler 捕获业务/系统异常
- 封装统一 Result(code/msg/data)
- 记录日志便于排错,答辩可展示全局异常类
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
23. 模块与包?
简要结论:组织代码。
关于「模块与包」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
24. 类型注解?
注解是元数据,@Override/@Transactional 等由编译器或框架处理。
- 自定义注解+ AOP 实现
- 运行时 RetentionPolicy.RUNTIME
- 答辩指出项目中常用注解
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
25. dataclass?
static 属于类而非实例,静态方法/变量随类加载,无 this。
- 工具方法常用 static
- 静态变量注意线程安全
- 答辩对比实例成员
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
26. 异步 asyncio?
@Async 将方法放线程池异步执行,适合发邮件、写日志等非主路径任务。
- 需 @EnableAsync 与自定义 Executor
- 异步方法同类调用不生效
- 答辩说明是否使用及线程池参数
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
27. 多线程多进程?
IO 阻塞流式读写;NIO Channel/Buffer 非阻塞,适合高并发网络(了解即可)。
- 文件读写用 BufferedReader
- 用完 close 或 try-with-resources
- 答辩说明上传下载用过哪些类
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
28. 请求库?
简要结论:requests / httpx。
关于「请求库」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
29. 爬虫注意?
简要结论:合规与频率。
关于「爬虫注意」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
30. BeautifulSoup?
@ConfigurationProperties 将配置前缀批量绑定到 Java 对象,类型安全可读。
- 比 scattered @Value 更易维护
- 配合 @EnableConfigurationProperties 注册
- 答辩可展示自定义配置类
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
31. pandas 用途?
XSS 跨站脚本:恶意脚本注入页面,防护需输出编码、CSP、富文本过滤。
- 前端 v-html 谨慎,后端转义用户输入
- Cookie 设 HttpOnly 减窃取风险
- 答辩结合评论/公告等输入场景说明
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
32. matplotlib?
applicationContext.xml 是 Spring 核心配置文件,声明 Bean、扫描、数据源等。
- 与 spring-mvc.xml 分工:根容器 vs Web 容器
- Boot 项目多用 JavaConfig + yml 替代 XML
- 答辩对比 SSM 手工装配与 Boot 自动配置差异
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
33. 机器学习用了吗?
简要结论:如实;讲清特征与评估。
关于「机器学习用了吗」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
34. 模型如何落库?
简要结论:结果表或文件。
关于「模型如何落库」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
35. Celery?
Excel 导入导出常用 EasyExcel/POI,注意大数据量流式读写防 OOM。
- 导出列表、模板导入批量数据
- 校验格式与事务回滚
- 答辩演示导出按钮
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
36. Redis 缓存?
Redis 可用于缓存热点数据、验证码、Session 共享、分布式锁等。
- 减轻数据库压力
- 注意过期策略与一致性
- 答辩说明项目中具体缓存了哪些数据
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
37. 迁移 migrate?
SpringMVC 参数绑定自动将请求参数封装为方法入参。
- 简单类型、POJO 对象按名称或 @RequestParam 绑定
- @PathVariable 绑定 REST 路径变量
- 答辩强调服务端仍需校验,不能只依赖前端
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
38. 序列化?
序列化对象转字节流传输或持久化,实现 Serializable;注意 serialVersionUID。
- Redis 存对象、RPC 传参
- 敏感字段 transient
- 答辩了解用途
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
39. 分页过滤排序?
分页限制单次查询数据量,常用 PageHelper 或 LIMIT offset,size。
- 前端传 pageNum/pageSize,后端封装 PageInfo
- 深分页 offset 过大性能差,可延迟关联优化
- 答辩演示列表页分页接口与 SQL
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
40. 权限类?
权限设计常用 RBAC:用户—角色—权限,菜单与接口双重校验。
- 前端隐藏按钮不等于安全,后端必须鉴权
- 拦截器/过滤器校验登录态与角色
- 答辩演示管理员与普通用户差异
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
41. 中间件?
简要结论:横切逻辑。
关于「中间件」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
42. 信号 signal?
Session 在服务端保存登录态,Cookie 携带 JSESSIONID,拦截器校验是否登录。
- 登录成功写入 userId/role 等信息
- 集群需 Redis 共享 Session 或改 JWT
- 答辩能口述登录→访问受保护接口流程
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
43. 静态媒体文件?
简要结论:Nginx 托管。
关于「静态媒体文件」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
44. CSRF?
HTTPS 加密传输防窃听;CSRF 跨站请求伪造,防护 Token、SameSite Cookie、Referer 校验。
- 生产必须 HTTPS
- 表单 POST 带 CSRF Token
- 答辩说明安全措施
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
45. XSS?
XSS 跨站脚本:恶意脚本注入页面,防护需输出编码、CSP、富文本过滤。
- 前端 v-html 谨慎,后端转义用户输入
- Cookie 设 HttpOnly 减窃取风险
- 答辩结合评论/公告等输入场景说明
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
46. 文件上传?
文件上传通过 MultipartResolver 解析 multipart 表单,Controller 接收 MultipartFile。
- 限制大小、后缀白名单,防止恶意文件
- 存储本地目录或 OSS,数据库只存访问 URL
- 答辩可演示上传头像/附件的完整流程
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
47. 日志?
日志用于排错、审计与性能分析,常用 SLF4J + Logback/Log4j2。
- 分级别:ERROR/WARN/INFO/DEBUG
- 关键业务、异常、慢接口应记录
- 生产避免打印敏感信息与过量 DEBUG
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
48. 配置分环境?
配置分 dev/test/prod 环境,application-{profile}.yml 或 properties 切换。
- spring.profiles.active 指定环境
- 敏感信息用环境变量,不入库
- 答辩说明本地与服务器配置差异
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
49. 单元测试?
单元测试验证模块逻辑,SpringTest + JUnit/Mockito 可 Mock 依赖测 Service。
- 覆盖核心工具方法与关键分支
- 集成测试 @SpringBootTest 启动容器测接口
- 答辩如实说明测试范围与用例数
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
50. 接口测试?
测试包括功能、边界、异常、权限、兼容性;准备用例表与截图。
- 登录失败、非法参数、越权访问
- 主流程必须可演示
- 答辩诚实说明范围
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
51. 代码规范?
PEP8 是 Python 代码风格规范:缩进 4 空格、命名 snake_case、行宽限制等。
- flake8/black 检查格式
- 统一风格便于协作
- 答辩体现代码规范意识
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
52. Python优势劣势,对比Java的差异?
Python解释型、语法简洁、开发速度快、生态丰富,适合爬虫、数据分析、轻量化Web;缺点是运行速度慢、强类型约束弱。Java编译型、运行快、规范性强,适合大型企业项目,两者适配不同开发场景。
53. 为何适合毕设?
简要结论:快速落地。
关于「为何适合毕设」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
54. 不足?
不足与展望:准备 2~3 条真实不足(如无大屏、缺压测)及改进计划,勿说完美。
- 体现反思能力
- 改进要具体可行
- 答辩态度诚恳
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
55. 扩展计划?
简要结论:缓存队列监控。
关于「扩展计划」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
56. N+1?
N+1 问题:查 N 条主记录后又逐条查关联,产生大量 SQL。
- 解决:JOIN 一次查出、批量 IN 查询、MyBatis 嵌套/延迟加载谨慎使用
- ORM 项目常见性能坑
- 答辩可结合列表页关联展示说明优化
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
57. 事务?
事务保证一组 SQL 同成功同失败,Spring @Transactional 或数据库 BEGIN/COMMIT。
- 下单扣库存典型场景
- 隔离级别影响并发问题
- 答辩指出哪些 Service 加了事务
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
58. 软删除?
逻辑删除用 deleted/is_deleted 标志位标记删除,查询默认带 deleted=0 条件。
- 数据可恢复,满足审计需求
- MyBatis-Plus 可用 @TableLogic 自动过滤
- 注意唯一索引与业务查询都要带删除条件
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
59. 时区?
简要结论:USE_TZ。
关于「时区」,答辩建议按「概念解释 → 原理要点 → 项目应用」三步展开:
- 先用一句话说清定义或结论(如上)
- 补充 2~3 个技术要点或注意事项,体现理解深度
- 在 Python Web/数据分析项目中,结合自己的代码、配置或表结构举例,避免只背关键词
60. 字符编码?
统一 UTF-8 编码避免中文乱码:CharacterEncodingFilter、数据库 utf8mb4、JSON UTF-8。
- 请求/响应/页面/库表字符集一致
- SSM 在 web.xml 配置过滤器
- 答辩可说明曾遇到的乱码排查过程
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
61. 密码哈希?
密码存储用 BCrypt/Scrypt 单向哈希+盐,绝不明文;传输 HTTPS。
- 登录比对 hash
- 重置密码重新 hash
- 答辩指出加密代码
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
62. JWT 失效?
JWT 无状态令牌,Header.Payload.Signature,服务端验签即可,适合前后端分离。
- 过期时间与刷新策略
- 失效黑名单或短 TTL
- 答辩对比 Session 优劣
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
63. 最大难点?
答辩「最大难点」应讲 真实问题:现象→定位→方案→验证。
- 如联表同步、权限越权、分页性能、跨域联调等
- 体现日志、断点、SQL 优化等排错过程
- 避免空泛说「技术难」,要有故事线
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。
64. 答辩重点?
总体架构分层:表现层→接口层 Controller→业务 Service→持久 Mapper→数据库。
- 前后端分离则加 API 与静态部署
- 画架构图辅助讲解
- 答辩强调职责分离
结合毕设:在 Python Web/数据分析项目中,可指出具体类名、配置项或表结构,避免只背概念。