99% 必问必考大厂面试题
-
MySQL有哪些事务隔离级别
参考答案 MySQL的4个事务隔离级别: 1. READ-UNCOMMITTED(读取未提交) 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读。 2. READ-COMMITTED(读取已提交) 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。 3. REPEATABLE-READ(可重复读) 对同一字段的多次读取结果都是一致的,…... -
Dubbo 和 Spring Cloud 的区别
参考答案 定位:Dubbo 专注 RPC 和服务治理;Spirng Cloud 是一个微服务架构生态。 性能:Dubbo 强于 SpringCloud(主要是通信协议的影响)。 功能范围:Dubbo 诞生于面向服务架构时代,是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案;Spring Cloud 诞生于微服务架构时代,基于 Spring、Spring…... -
分布式Redis是前期做,还是后期规模大了再做
参考答案 Redis是轻量的(单实例只使用1M内存),为防止以后扩容,最好的办法就是一开始就启动较多实例。 即便只有一台服务器,也可以一开始就让Redis以分布式的方式运行,使用分区,在同一台服务器上启动多个实例。 一开始就多设置几个Redis实例,例如32或者64个实例,对大多数用户来说,操作可能比较麻烦,但是长远来看是值得的。 如果前期就这样做,当后期数据不断增长,要用到更多的Redis服务器…... -
MyBatis 实现一对多有几种方式,具体怎么操作
参考答案 MyBatis实现一对多有两种方式: 联合查询 嵌套查询 MyBatis实现一对多的操作: 联合查询是几个表联合查询,只查询一次,通过在resultMap里面配置collection节点配置一对多的类就可以完成。 嵌套查询是先查一个表,根据这个表里面的结果的外键id,去再另外一个表里面查询数据,也是通过配置collection,但另外一个表的查询通过select节点配置。 …... -
Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么区别
参考答案 Kafka、ActiveMQ、RabbitMQ、RocketMQ 的区别: 1. kafka 开发语言: Scala开发。 性能、吞吐量: 吞吐量所有MQ里最优秀,QPS十万级、性能毫秒级、支持集群部署。 功能: 功能单一。 缺点: 丢数据, 因为数据先写入磁盘缓冲区,未直接落盘。机器故障会造成数据丢失。 应用场景: 适当丢失数据没有关系、吞吐量要求高、不需要太多的高级功能的场景,比如…... -
如何实现 MyBatis 与 Spring 的集成
参考答案 MyBatis 创建了 MyBatis-Spring 项目与 Spring 进行无缝整合,让 MyBatis 参与到 Spring 的事务管理之中,创建映射器 mapper 和 SqlSession 并注入到 Spring 的 bean 中。 核心配置就是 dataSource、SqlSessionFactoryBean、MapperScannerConfigurer。 1. data…... -
MQ 有哪些使用场景
参考答案 MQ 的使用场景: 异步处理:用户注册后,发送注册邮件和注册短信。用户注册完成后,提交任务到 MQ,发送模块并行获取 MQ 中的任务。 系统解耦:比如用注册完成,再加一个发送微信通知。只需要新增发送微信消息模块,从 MQ 中读取任务,发送消息即可。无需改动注册模块的代码,这样注册模块与发送模块通过 MQ 解耦。 流量削峰:秒杀和抢购等场景经常使用 MQ 进行流量削峰。活动开始时流量暴增,…... -
Mybatis 是如何进行分页的?分页插件的原理是什么?
参考答案 1. Mybatis如何分页 Mybatis使用RowBounds对象进行分页。 它是针对ResultSet结果集执行的内存分页,而非物理分页,可以在sql内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。 2. 分页插件的基本原理 分页插件的原理是使用Mybatis提供的插件接口,实现自定义插件。 在插件的拦截方法内拦截待执行的sql,然后重写sql,根…...