锐捷网络Java软件开发工程师实习一面面经

《面试题目》

  1. 介绍一下上一段实习整个项目的背景以及你碰到的一些难点,中间的卡点问题是怎么解决的
  2. 本地生活服务一体化项目中身份认证是怎么做的?具体说一下(用的 JWT 令牌)
  3. 哪些地方用到了自定义注解
  4. JWT 令牌的刷新规则是怎么样的?刷新的整个流程是怎么样的?
  5. 数据权限控制有了解过吗?数据权限控制的整个流程是怎么实现的?
  6. 用 MQ 异步处理订单并解决超时问题,具体是如何处理的?
  7. MQ 是怎么解决重入问题的?如何实现幂等?
  8. 谈谈你对面向对象的理解
  9. 设计模式有了解过吗?
  10. Java 中主要的集合对象类,它们的实现类有哪些?

《参考解析》

  1. JWT 令牌刷新机制:通常采用双 Token 方案——Access Token(短期有效,用于日常接口鉴权)+ Refresh Token(长期有效,专门用于换取新的 Access Token);Access Token 过期后,客户端携带 Refresh Token 向刷新接口请求新令牌,服务端校验 Refresh Token 有效性并签发新的 Access Token,避免用户频繁重新登录,同时降低长期令牌泄露的风险。
  2. MQ 幂等性实现:消费者侧对每条消息生成/携带唯一业务标识(如订单号+消息ID),处理前先查询该标识是否已处理过(可用数据库唯一约束或 Redis 记录已处理 ID),已处理则直接跳过,未处理则执行业务并记录标识,从而保证消息重复投递时业务效果等价于只处理一次。
  3. 数据权限控制的常见实现:一般通过在 SQL 层面自动拼接数据范围条件(如按部门、按用户 ID 过滤)来实现,可以基于 MyBatis 拦截器统一处理,也可以结合注解标记哪些接口/方法需要做数据权限校验,避免业务代码里到处手写权限判断逻辑。