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 底层数据结构、哈希计算、冲突处理、扩容机制和负载因子设计权衡的理解深度。 查看学习思路
08 请说明 MySQL 常见索引失效场景、隔离级别,以及 redo log、undo log、binlog 的作用。考察候选人对 MySQL 索引优化、事务隔离和日志系统的理解,以及对比 Oracle 默认隔离级别的知识广度。 查看学习思路