面灵AI

金证股份长沙线下Java开发一面面经

轮次
一面
时间
2026-09
来源
牛客网

《面试题目》

  1. 数据权限重构前后的方案是什么,为什么要重构?
  2. 部门 ID 很多导致 IN 查询变慢时如何处理?
  3. 模板模式解决了什么问题?
  4. OAuth2 授权码模式和 JWT 的校验流程是什么?
  5. Java 包装类缓存、String 常量池和异常体系如何理解?
  6. JVM 内存区域和线程安全三大特性是什么?
  7. inner join、left join、right join 与 having、where 有什么区别?
  8. 慢 SQL 如何用 EXPLAIN 排查?
  9. 前端出现 500 时如何定位后端问题?

《参考解析》

  1. 重构应先明确旧方案的耦合和性能瓶颈,再以规则化配置和统一拦截器实现数据过滤;权限条件要在服务端强制生效。
  2. 可改为临时表或批量表关联,按部门树预计算范围,或采用分页和分批查询;避免把超长列表直接拼进 SQL。
  3. 模板模式由父类固定流程骨架,子类实现差异步骤,适合多个同步任务共享流程但处理细节不同的场景。
  4. 授权码换取令牌后,资源服务校验 JWT 签名、过期时间、发行方和权限声明;刷新和吊销策略需配合服务端状态管理。
  5. 包装类可能缓存常用值,String 字面量进入常量池;Error 通常不可恢复,Exception 需按受检与运行时异常分类处理。
  6. JVM 主要包含堆、虚拟机栈、方法区等区域。原子性、可见性、有序性是并发安全基础,volatile 只能覆盖后两者。
  7. JOIN 决定表的连接保留范围,WHERE 在分组前过滤,HAVING 在分组后过滤;应优先缩小参与连接的数据集。
  8. 关注 type、key、rows 和 Extra,确认是否走预期索引、扫描行数是否过大以及是否发生临时表或文件排序。
  9. 先在浏览器网络面板确认请求和响应,再按 traceId 查服务日志与堆栈,最后定位参数校验、业务逻辑或依赖调用的异常。