互联网Java工程师面试必备:涵盖全方位技术栈
需积分: 9 35 浏览量
更新于2024-07-09
收藏 4.77MB PDF 举报
"这份文档是2021年的互联网Java工程师面试题目集合,全面覆盖了Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux等多个技术领域的常见问题。"
这篇文档主要针对Java工程师的面试准备,包含了多个技术栈的重要知识点。以下是一些关键内容的详细解释:
1. **MyBatis** 是一个轻量级的持久层框架,它简化了Java与数据库之间的交互,通过XML或注解的方式将SQL语句与Java代码分离。
2. **MyBatis优点** 包括灵活的SQL编写,减少了模板代码,易于维护,支持动态SQL等。
3. **MyBatis缺点** 包括可能的SQL注入风险,不如ORM框架自动化程度高,对数据库依赖较大。
4. **适用场合** MyBatis适合于需要对SQL有高度控制的项目,例如复杂查询或性能优化。
5. **MyBatis与Hibernate区别** Hibernate是全自动ORM框架,提供了一种对象-关系映射的解决方案,而MyBatis是半自动的,需要手动编写SQL。
6. **#{}与${}的区别** #{}用于预编译处理,防止SQL注入;${}则是简单的字符串替换,可能导致SQL注入。
7. **属性名与字段名不一致** 可以通过@XmlElement或@DatabaseField注解指定映射关系。
8. **模糊查询like** 在XML映射文件中,可以使用`<if>`标签配合`like`关键字完成模糊查询。
9. **Dao接口工作原理** Dao接口的方法被代理,MyBatis根据方法名生成对应的SQL语句,通过反射执行。
10. **MyBatis分页** 通常通过自定义分页插件实现,拦截Executor执行过程,修改SQL语句添加LIMIT和OFFSET。
11. **对象封装** MyBatis通过ResultMap机制,将查询结果映射到Java对象。
12. **批量插入** 使用`<insert>`标签的`useGeneratedKeys="true"`和`keyProperty="id"`属性,配合`<foreach>`标签。
13. **获取自动生成键值** 使用`useGeneratedKeys="true"`和`keyProperty="id"`,在插入后通过`int id = sqlSession.insert(...);`获取。
14. **传递多个参数** 可以通过Map、注解`@Param`或使用`<foreach>`标签。
15. **动态SQL** 动态SQL允许在XML映射文件中根据条件动态生成SQL,如`<if>`, `<choose>`, `<when>`, `<otherwise>`, `<where>`, `<set>`等标签。
16. **其他标签** 还有`<resultMap>`, `<association>`, `<collection>`, `<discriminator>`等,用于更复杂的对象映射和关联。
17. **半自动ORM** MyBatis需要开发者手动编写SQL,而全自动ORM如Hibernate则自动映射Java对象与数据库记录。
18. **一对一、一对多关联查询** 通过`<association>`和`<collection>`标签实现,配置对应的外键和关联对象。
19. **实现方式** 一对一可以通过主键关联,一对多可以通过List或Set进行映射。
20. **延迟加载** MyBatis不直接支持,但可以通过二级缓存或自定义实现。
21. **一级、二级缓存** 一级缓存是SqlSession级别的,二级缓存是Mapper级别的,可跨SqlSession共享数据。
22. **接口绑定** MyBatis通过Mapper接口与XML映射文件结合,实现SQL执行。实现方式包括注解方式和XML配置。
23. **Mapper接口调用要求** 需要有对应的SQL映射文件,方法名与SQL的id匹配。
24. **Mapper编写方式** 包括XML配置、注解方式,或者结合注解和XML。
25. **插件运行原理** MyBatis插件通过拦截器链模式工作,自定义插件需要继承`Interceptor`接口,并实现`intercept`方法。
以上内容只是文档中的一部分,完整的面试题涵盖了更广泛的Java技术栈,包括Spring全家桶、分布式服务框架、消息队列、搜索引擎、内存缓存、数据库等,对于准备Java工程师面试的人员来说,这是一个非常有价值的资源。
2020-07-28 上传
2021-06-30 上传
2021-10-30 上传
2021-10-01 上传
139 浏览量
2021-11-07 上传
2023-08-05 上传
2020-03-22 上传
2012-09-25 上传
weixin_37186675
- 粉丝: 0
- 资源: 5
最新资源
- JHU荣誉单变量微积分课程教案介绍
- Naruto爱好者必备CLI测试应用
- Android应用显示Ignaz-Taschner-Gymnasium取消课程概览
- ASP学生信息档案管理系统毕业设计及完整源码
- Java商城源码解析:酒店管理系统快速开发指南
- 构建可解析文本框:.NET 3.5中实现文本解析与验证
- Java语言打造任天堂红白机模拟器—nes4j解析
- 基于Hadoop和Hive的网络流量分析工具介绍
- Unity实现帝国象棋:从游戏到复刻
- WordPress文档嵌入插件:无需浏览器插件即可上传和显示文档
- Android开源项目精选:优秀项目篇
- 黑色设计商务酷站模板 - 网站构建新选择
- Rollup插件去除JS文件横幅:横扫许可证头
- AngularDart中Hammock服务的使用与REST API集成
- 开源AVR编程器:高效、低成本的微控制器编程解决方案
- Anya Keller 图片组合的开发部署记录