Java面试深度解析:MyBatis、SpringBoot与MySQL重点梳理

需积分: 5 0 下载量 91 浏览量 更新于2024-06-14 1 收藏 5.66MB DOCX 举报
"Java面试八股文十万字总结.docx" 这篇文档是针对Java程序员求职面试准备的一份详细资料,涵盖了Java基础知识、MyBatis框架、SpringBoot框架以及MySQL数据库等多个方面的重要知识点。 在Java部分,面试题涉及到XML映射文件的其他标签,例如resultMap、parameterMap、association、collection等,这些都是MyBatis用于对象映射和关系处理的关键元素。MyBatis的一对一映射可以通过一对一关联和嵌入式一对一两种方式实现,前者通过resultMap定义关联关系,后者则是在主表中直接包含子表的对象。关于延迟加载,MyBatis确实支持,它通过代理机制在实际需要数据时才执行查询,减少了不必要的数据库交互。MyBatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的,二级缓存则是Mapper级别的,可以跨SqlSession共享数据。 JDBC编程通常包括加载驱动、建立连接、创建Statement或PreparedStatement、执行SQL、处理结果集、关闭资源等步骤。而在MyBatis中,这些繁琐的步骤被简化,通过Mapper接口和XML配置实现。提到设计模式,MyBatis中的工厂模式、代理模式和装饰者模式都十分常见。接口没有实现类但能调用是因为MyBatis使用了动态代理,如Java的CGlib或JDK的动态代理技术。 SpringBoot篇中,其核心注解是@SpringBootApplication,由@ComponentScan、@EnableAutoConfiguration和@SpringBootApplicationConfiguration组成,主要用于自动配置和启动Spring应用。SpringBoot的运行方式包括命令行、IDE内运行、jar包启动等。Starters是SpringBoot简化依赖管理的工具,如spring-boot-starter-web、spring-boot-starter-data-jpa等。SpringBoot启动时的初始化代码可以通过CommandLineRunner或ApplicationRunner接口实现。SpringBoot不需要独立容器,因为它内置了Tomcat或其他服务器。SpringBoot的Actuator提供了监控和健康检查功能。异常处理可以通过@ControllerAdvice和@ExceptionHandler注解全局处理。SpringBoot的Starters帮助开发者快速构建项目,减少了配置工作。热部署可以通过DevTools实现。配置加载顺序遵循应用属性、配置文件、命令行参数的优先级。SpringBoot的核心配置文件有application.properties和application.yml,区别在于格式,properties是键值对,yml是层级结构。集成ActiveMQ则涉及SpringBoot的JMS支持。 MySQL部分,面试题覆盖了数据库的三大范式,保证数据的规范性和无冗余。常见的存储引擎有InnoDB和MyISAM,InnoDB支持事务,而MyISAM不支持。事务是数据库操作的原子单元,涉及ACID属性。索引可加速查询,优化手段包括选择合适的数据类型、避免全表扫描、合理创建索引等。drop删除表,delete删除表中数据但保留表结构,truncate清空表数据且不记录日志。视图是虚拟表,根据查询语句动态生成。联接类型包括内联接(只返回匹配行)、左外联接(返回左表所有行及右表匹配行)和右外联接(返回右表所有行及左表匹配行)。并发事务可能导致的问题有脏读、不可重复读和幻读,对应不同的事务隔离级别,MySQL默认是Repeatable Read。大表优化策略包括范围限定、读写分离、垂直分区(按列划分)和水平分区(按行划分)。分库分表后,主键处理需要考虑全局唯一ID生成策略,如雪花算法或UUID。 这份文档全面地梳理了Java开发中重要的面试知识点,对于求职者准备面试极具参考价值。