自我介绍
面试官好,我是杭州师范大学软件工程专业的洪杰,期待能加入贵公司成为Java后端开发工程师。
在技术上,我熟练掌握 SpringBoot 和 MyBatis,有一定的前端经验,熟悉MySQL、Redis等常见数据库和缓存技术,并且能熟练使用多种工具进行开发。
我曾开发基于 SpringBoot 和 Vue 的校园点餐系统,负责订单管理、库存控制和权限管理,并使用 Redis 缓存、WebSocket 通知、SpringSecurity 认证 等技术优化系统性能。
在我的上一段实习经历中,我参与开发了一款医疗教育系统,主要负责组卷和考试功能的开发。期间,我通过Redis 缓存考试内容,避免数据丢失,并基于 ClosedXML 进行 Excel 批量导入/导出,同时使用 JWT + OAuth 2.0 进行权限控制,提高系统安全性。
一、技能特长
mysql索引
事务
锁
二、校园点餐系统
1.Redis缓存菜品内容,减少重复查询
按店铺ID和分类ID缓存菜品内容,查询时先判断redis是否存在菜品信息,没有查数据库
2.使⽤WebSocket实时通知商家,提醒处理订单
用户下单后通过WebSocket将订单号发送到商家端,前端监听 onmessage,在 UI 上显示消息
3.SpringSecurity实现登陆认证和权限控制
用户登录后生成JWT,发送请求后后端解析JWT,通过@PreAuthorize按角色信息限制访问的 API
4.使⽤Nginx实现静态资源部署
Nginx 在项目中主要用于 前端静态资源部署
5.使用SpringAop实现记录登录和操作日志
Spring AOP 通过 @Aspect 切面 + @Pointcut 切点 拦截指定的方法,定义了 @Log 注解,用它标记需要记录日志的方法,Spring AOP 会拦截所有带 @Log 的方法,在执行前后自动记录操作日志,不需要每个方法都手写 logger.info()。
6.使用SpringTask实现定时任务,管理订单和库存内容
使用@Scheduled(cron = “0 * * * * ? “),每1分钟检查未完成订单是否超时,超时取消订单
7.使用Nacos实现负载均衡
Nacos 用于服务注册和发现,目前我们的项目是单体架构,所以启动多个不同端口的后端实例,使用RestTemplate访问其他实例
三、艾地医教
艾地医教是一款集合了题库管理,考试等功能的医疗教育项目,我主要负责的是组卷系统和考试系统的开发。
艾地医教是一个 在线考试系统,支持 题库管理、考试、在线监考 等功能,后端基于 ASP.NET,数据库用 SQL Server,Redis 用于缓存考试数据,WebSocket 负责在线监考的实时视频传输。
1.Redis缓存考试内容,避免学生考试数据意外遗失
按学生ID缓存考试内容,将考试题目,学生答案等信息存入Redis
2.ClosedXML批量导入/导出Excel格式的题库
用ClosedXML读取上传的Excel表格,逐行读取,按表头名字存储对应数据并存入数据库
3.JWT + OAuth 2.0实现权限控制
OAuth 2.0 负责什么? |
✅ 负责 Token 生成、验证、刷新和撤销 |
用户登录后生成JWT,请求时带上JWT,后端根据jwt里的角色信息检查用户是否有权限
[Authorize(Roles = “admin”)]
4.WebSocket用于在线监考的视频流数据传输以及发送考试指令
视频流数据传输是用在实操考试上的,老师可以通过摄像头监控学生考试。这个没写过。
考试指令是什么
5.Nginx实现负载均衡
在多个服务器上部署后端,用户端请求通过Nginx轮询请求不同的服务器