1.自我介绍
姓名等基本情况,学历,想要投递的岗位,做的项目
2.java抽象类与接口的区别
抽象类不能被实例化,只能被继承,主要目的时为其他类提供一个通用的接口和部分实现,它可以包含抽象方法和普通具体方法,
3.抽象类能否实例化
不能被实例化,被子类继承后是由实现所有的抽象方法才能实例化
4.在项目中用的抽象类偏多还是接口偏多、
接口的使用要多于抽象类,因为类只能单继承,接口可以多实现,因为springboot中所有的业务服务都是通过接口定义,再通过实现类注入
5.抽象类用的场景介绍一下
- 业务层抽象:如健身卡秒杀、用户鉴权模块,通过接口定义服务(如
SeckillService
、AuthService
),便于实现类切换与单元测试。 - 与 LangChain4j 对接:定义大语言模型服务接口(如
LLMService
),实现与不同模型(GPT、DeepSeek、Qwen)的解耦适配。 - WebSocket 聊天模块:使用消息处理接口(如
MessageHandler
)统一定义群聊与私聊逻辑,方便扩展新类型。 - 缓存策略封装:如热点缓存设计中,定义缓存接口
CacheService
,实现 Redis 操作细节与业务逻辑分离。
6.java中数据结构有哪些
7.数据的基本类型
8.引用类型,包装类型
9.是一个场景题,在查询数据库中的数据时,用的什么数据结构,一直没听懂
在查询数据库数据时,主要使用以下数据结构:
-
实体类(POJO):查询结果通过 MyBatis 映射为 Java 实体类(如
User
、Venue
、Order
),便于业务逻辑处理。 -
List<T>:用于接收多条记录,如分页查询健身场馆列表、旅游行程推荐结果等。
-
Map<String, Object>:用于处理动态查询结果或多表联合查询,字段不固定时便于存取。
这些结构配合 MyBatis 进行数据封装和传递,提升了开发效率与代码可读性。
在项目中主要使用了以下数据结构:
-
HashMap / ConcurrentHashMap:用于存储用户会话、缓存热点数据等,支持高效的键值对查找。
-
Set / Redis Set:在健身交流网中用于实现点赞去重、附近健身馆的地理位置检索。
-
List / ArrayList:用于存储用户的打卡记录、消息列表等有序集合。
-
队列(Redis Stream):用于异步处理秒杀下单请求,提升系统吞吐量。
-
HyperLogLog:用于健身交流网中的 UV 去重统计,节省内存。
-
向量数据结构(Embedding 向量):在旅游问答中结合向量检索用于语义搜索与RAG知识匹配。
这些数据结构根据业务场景选择,兼顾了性能和资源效率。
是的,项目中广泛使用了 MySQL 数据库,主要用于以下场景:
-
用户与权限管理:存储用户信息、登录凭证、角色权限等核心数据。
-
健身场馆与课程信息管理:健身交流网中,场馆、教练、器材等实体均存储于 MySQL,支持分页查询与多条件检索。
-
订单与秒杀记录:秒杀模块中,秒杀成功后的订单信息落库,确保事务一致性。
-
旅游行程与用户行为数据:驴友旅游网中用于存储用户生成的行程、酒店预订记录等结构化数据。
MySQL 作为主数据库,负责结构化数据的可靠存储与事务管理
10.将一个表更新到另外一张表,怎么写sql语句,用update
可以使用 UPDATE ... JOIN
语句将一个表的数据更新到另一个表中。SQL 示例:
UPDATE target_table t JOIN source_table s ON t.id = s.id SET t.column1 = s.column1, t.column2 = s.column2;
11.问了ORM框架,也就是mybatis
12.问在mybatis中实现分页查询的逻辑是怎么样的
13.动态查询的逻辑是怎么样的
14.如何解决应用层面多节点session共享问题
15。JWT的组成部分
16.JWT如何保障用户登录的一致性问题,逻辑是怎么样的
17.对kafka有哪些了解
18。redis中还用过哪些数据结构
19.如何读取一个xml文件
20.说一些springboot和ssm
21.用过set集合吗,为什么要用set集合,以及那些场景中用了set集合,
22.除了set集合还是用过哪些数据结构?
23.数据库操作事务的逻辑
24.了解数据库索引吗,相应的实现原理
25.说一下捕捉异常