职位题库

Java 后端开发工程师面试题库

面向Java 后端开发工程师相关面试,围绕Java、集合、HashMap、项目、AOP等主题展开练习,结合题目考察点、回答思路、参考答案和常见误区,梳理知识要点并练习清晰表达。

8 道题目建议用时 24 分钟专项面试练习

全部题目 8 道题

01

请口述 Java 8 HashMap.put() 的完整流程,并解释为什么链表长度达到 8 且数组容量小于 64 时优先扩容而不是直接树化。

考察对 HashMap 底层数据结构、扩容与树化条件的理解,以及能否解释设计权衡。
02

请解释 Spring Boot 自动配置原理,并说明 @ConditionalOnClass、@ConditionalOnMissingBean、@ConditionalOnProperty 的作用及典型使用场景。

考察对 Spring Boot 自动配置机制和条件装配的理解,能否结合实际场景说明。
03

请解释 Spring AOP 的本质,JDK 动态代理和 CGLIB 的区别,并说明同类调用为什么会导致 AOP 失效,以及 final/static/非 Spring Bean 等情况下为什么可能无法代理。

考察对 Spring AOP 实现机制、代理方式差异及失效场景的深入理解。
04

请介绍你实习中数据权限重构的项目:原来的问题是什么,为什么要自己做 @CrmDataScope,AOP 如何生成并注入权限 SQL,以及多角色用户的数据权限怎么处理?

考察候选人对数据权限设计的理解,包括问题背景、技术方案、多角色处理、缓存结合及服务间传递。
05

请介绍你项目中的数据同步框架:为什么要用模板方法模式,水位线、分页拉取、数据转换、批量写入的流程是怎样的,以及如何保证不漏数据?

考察对数据同步框架设计、模板方法模式应用、水位线推进时机及数据一致性保证的理解。
06

请口述 HashMap 的 put 过程,并说明何时触发扩容以及为什么负载因子是 0.75。

考察候选人对 HashMap 底层数据结构、哈希计算、冲突处理、扩容机制和负载因子设计权衡的理解深度。
07

请说明线程池的核心参数、任务提交后的执行流程,以及 serialVersionUID 的作用。

考察候选人对线程池参数、执行流程和 Java 序列化版本控制机制的掌握程度。
08

请说明 MySQL 常见索引失效场景、隔离级别,以及 redo log、undo log、binlog 的作用。

考察候选人对 MySQL 索引优化、事务隔离和日志系统的理解,以及对比 Oracle 默认隔离级别的知识广度。
返回面试题库