BATJ高频面试249道题:微服务+多线程+分布式+MyBatis +Spring

简介: 本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。

前言:

本文收集整理了各大厂常见面试题N道,你想要的这里都有内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈,希望大家都能找到适合自己的公司,开开心心的撸代码。

目录:

由于题量较多,篇幅的限制,文章中的面试题分享没有全部附上详细的解析,但是整理成了一份详细的PDF文档可分享给大家,文末获取免费领取方式

看面试题可以是为了面试,也可以是对自己学到的东西的一种查漏补缺,更加深刻的去了解一些核心知识点

MyBatis 面试题

  1. 什么是Mybatis?
  2. Mybatis的优点:
  3. Mybatis框架的缺点:
  4. Mybatis框架适用场合:
  5. MyBatis与Hibernate有哪些不同?
  6. #{}和${}的区别是什么?
  7. 当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
  8. 模糊查询like语句该怎么写?
  9. 通常一个Xml映射文件,都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理
  10. 是什么?Dao接口里的方法,参数不同时,方法能重载吗?
  11. Mybatis是如何进行分页的?分页插件的原理是什么?
  12. Mybatis是如何将sql执行结果封装为目标对象并返回的?都有哪些映射形式?
  13. 如何执行批量插入?
  14. 如何获取自动生成的(主)键值?
  15. Mybatis动态sql有什么用?执行原理?有哪些动态sql?
  16. Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
  17. Mybatis的Xml映射文件中,不同的Xml映射文件,id是否可以重复?
  18. 为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
  19. MyBatis实现一对一有几种方式?具体怎么操作的?
  20. MyBatis实现一对多有几种方式,怎么操作的?
  21. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
  22. Mybatis的一级、二级缓存:
  23. 什么是MyBatis的接口绑定?有哪些实现方式?
  24. 使用MyBatis的mapper接口调用时有哪些要求?
  25. 简述Mybatis的插件运行原理,以及如何编写一个插件。

ZooKeeper 面试题

ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。

  • zookeeper 负载均衡和 nginx 负载均衡区别
  • Zookeeper Watcher 机制--数据变更通知
  • 客户端注册 Watcher 实现
  • zookeeper 是如何保证事务的顺序一致性的?
  • Zookeeper 对节点的 watch监听通知是永久的吗?为什么不是永久的?
  • zk 节点宕机如何处理?

Dubbo 面试题

Spring Eureka 从开源转变为闭源,Consul 正在崛起,而 Dubbo 又开始重新更新。目前市场上仍有不少公司使用dubbo我们也需要继续学习。

  • 为什么要用 Dubbo?
  • 默认使用的是什么通信框架,还有别的选择吗?
  • 服务调用是阻塞的吗?
  • 一般使用什么注册中心?还有别的选择吗?
  • 默认使用什么序列化框架,你知道的还有哪些?
  • Dubbo 的整体架构设计有哪些分层?

Elasticsearch 面试题

  • elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。
  • elasticsearch 索引数据多了怎么办,如何调优,部署
  • elasticsearch 是如何实现 master 选举的
  • Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法
  • 详细描述一下 Elasticsearch 更新和删除文档的过程。
  • Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Redis面试题

随着应用研发技术的不断成熟,Redis 缓存技术已经成为后台研发同学必备的能力之一。在很多公司面试的过程中,都必不可少地考察 Redis 知识点的掌握。

  • 使用 Redis 有哪些好处?
  • Redis 是单进程单线程的?
  • Redis 的持久化机制是什么?各自的优缺点?
  • Redis 常见异常问题和解决方案(雪崩,穿透...)
  • redis 过期键的删除策略?
  • 为什么 redis 需要把所有数据放到内存中?
  • Redis 集群的主从复制模型是怎样的?
  • Redis key 的过期时间和永久有效分别怎么设置?

MySQL 面试题

如今互联网行业用的最多就是 MySQL,然而对于高级 Web 面试者,尤其对于寻找 30k 下工作的求职者,很多 MySQL 相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基本大多稍好公司的面试官,基本也不会对你有兴趣,毕竟稍微量大的项目,最终都会让你去深入数据库,而且最终的大多瓶颈首先也会出现在数据库。

  1. L 相关存储引擎。
  2. MySQL 索引实现原理。
  3. MySQL 数据库锁。
  4. MySQL 的 SQL 调优。
  5. MySQL 分表分库全局 ID。
  6. Mysql的技术特点是什么?
  7. Heap表是什么?
  8. Mysql服务器默认端口是什么?
  9. 如何区分FLOAT和DOUBLE?
  10. 区分CHAR_LENGTH和LENGTH?
  11. 请简洁描述Mysql中InnoDB支持的四种事务隔离级别名称,以及逐级之间的区别?
  12. 在Mysql中ENUM的用法是什么?
  13. 如何定义REGEXP?
  14. CHAR和VARCHAR的区别?
  15. Mysql查询是否区分大小写?
  16. Mysql中有哪些不同的表格?
  17. 什么样的对象可以使用CREATE语句创建?
  18. 什么是通用SQL函数?
  19. MYSQL支持事务吗?
  20. mysql里记录货币用什么字段类型好
  21. Mysql中有哪几种锁?
  22. MYSQL数据库服务器性能分析的方法命令有哪些?

Java 并发编程面试题

  1. 在 java 中守护线程和本地线程区别?
  2. 什么是多线程中的上下文切换?
  3. Java 中用到的线程调度算法是什么?
  4. 什么是线程组,为什么在 Java 中不推荐使用?
  5. 在 Java 中 Executor 和 Executors 的区别?
  6. 并发编程三要素?
  7. 什么是线程池?有哪几种创建方式?

Spring 面试题

  1. 谈谈你对spring IOC 和 DI 的理解,它们有什么区别?
  2. BeanFactory接口和 ApplicationContext 接口有什么区
  3. Spring配置 bean 实例化有哪些方式?
  4. 简单的说一下 spring 的生命周期?
  5. 请介绍一下 Spring 框架中 Bean 的生命周期和作用域
  6. Bean 注入属性有哪几种方式?
  7. 什么是 AOP,AOP 的作用是什么?
  8. Spring的核心类有哪些,各有什么作用?
  9. Spring里面如何配置数据库驱动?
  10. Spring里面 applicationContext.xml 文件能不能改成其他 文件名?
  11. Spring里面如何定义 hibernate mapping?
  12. Spring如何处理线程并发问题?
  13. 为什么要有事物传播行为?
  14. 介 绍 一 下Spring的 事物管理
  15. 解释一下Spring AOP里面的几个名词
  16. 通知有哪些类型?

面试答案汇总

Kafka面试题

  • Kafka 与传统 MQ 消息系统之间有三个关键区别?
  • 讲一讲 kafka 的 ack 的三种机制?
  • 消费者故障,出现活锁问题如何解决?
  • kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
  • kafka 如何不消费重复数据?比如扣款,我们不能重复的扣。

面试答案汇总

看完上面的内容,相信大家已经有了清晰的目标与方向,接下来就是查找学习资料了,我们为大家准备了一套体系化的架构师学习资料包,供大家参考,学习资料包内容及领取方法如下:

资料免费领取方式:可以点击此处来获取就可以了!

资料免费领取方式:可以点击此处来获取就可以了!

作为Java开发者而已应当合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

相关文章
|
9月前
|
人工智能 Java Nacos
基于 Spring AI Alibaba + Nacos 的分布式 Multi-Agent 构建指南
本文将针对 Spring AI Alibaba + Nacos 的分布式多智能体构建方案展开介绍,同时结合 Demo 说明快速开发方法与实际效果。
5403 105
|
11月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
1487 3
|
10月前
|
存储 安全 Java
管理 Spring 微服务中的分布式会话
在微服务架构中,管理分布式会话是确保用户体验一致性和系统可扩展性的关键挑战。本文探讨了在 Spring 框架下实现分布式会话管理的多种方法,包括集中式会话存储和客户端会话存储(如 Cookie),并分析了它们的优缺点。同时,文章还涵盖了与分布式会话相关的安全考虑,如数据加密、令牌验证、安全 Cookie 政策以及服务间身份验证。此外,文中强调了分布式会话在提升系统可扩展性、增强可用性、实现数据一致性及优化资源利用方面的显著优势。通过合理选择会话管理策略,结合 Spring 提供的强大工具,开发人员可以在保证系统鲁棒性的同时,提供无缝的用户体验。
222 0
|
9月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。
|
10月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
863 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
SQL 缓存 Java
MyBatis场景面试题
MyBatis与MyBatisPlus均属ORM框架,前者擅长复杂SQL及动态查询,后者封装API简化单表操作。常用XML标签如if、foreach提升SQL灵活性。MyBatis支持一级(SqlSession级)与二级(NameSpace级)缓存,提升查询效率。#{}防SQL注入,${}用于动态表名等场景。
514 62
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于 xml 的整合
本教程介绍了基于XML的MyBatis整合方式。首先在`application.yml`中配置XML路径,如`classpath:mapper/*.xml`,然后创建`UserMapper.xml`文件定义SQL映射,包括`resultMap`和查询语句。通过设置`namespace`关联Mapper接口,实现如`getUserByName`的方法。Controller层调用Service完成测试,访问`/getUserByName/{name}`即可返回用户信息。为简化Mapper扫描,推荐在Spring Boot启动类用`@MapperScan`注解指定包路径避免逐个添加`@Mapper`
1104 0
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
1695 1
Spring boot 使用mybatis generator 自动生成代码插件
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
512 1
|
人工智能 负载均衡 Java
Spring AI Alibaba 发布企业级 MCP 分布式部署方案
本文介绍了Spring AI Alibaba MCP的开发与应用,旨在解决企业级AI Agent在分布式环境下的部署和动态更新问题。通过集成Nacos,Spring AI Alibaba实现了流量负载均衡及节点变更动态感知等功能。开发者可方便地将企业内部业务系统发布为MCP服务或开发自己的AI Agent。文章详细描述了如何通过代理应用接入存量业务系统,以及全新MCP服务的开发流程,并提供了完整的配置示例和源码链接。未来,Spring AI Alibaba计划结合Nacos3的mcp-registry与mcp-router能力,进一步优化Agent开发体验。
4335 14