99% 必问必考大厂面试题
-
Eureka 和 Zookeeper 的区别是什么
参考答案 Eureka 和 Zookeeper 都能提供服务注册与发现的功能,Eureka和zookeeper的区别: 1. Zookeeper保证了CP(C:一致性,P:分区容错性) 当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但Zookeeper会出现这样一种情况,当master节点因为…... -
Mybatis 的一级缓存、二级缓存是什么,以及工作模式
参考答案 1. 一级缓存的概念、工作模式 1.1 一级缓存的概念 基于 PerpetualCache 的 HashMap 本地缓存。 其存储作用域为 Session,当 Session flush 或 close 之后,该 Session 中的所有 Cache 就将清空,默认打开一级缓存。 1.2 一级缓存的工作模式 Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,…... -
MySQL分库分表怎么操作
参考答案 一、MySQL分库分表的原因 随着用户的增多,当数据量大到一定程度,仅一张表的数据可能就超过千万时,执行查询或修改等操作就比较耗时,这时就需要进行数据库切分的操作。 二、MySQL分库分表的方式 1. MyBatis实现分表最简单步骤 1)模拟用户表数据量已超过千万。 2)用户表原来的名字叫做user_tab,我们切分为user_tab_0和user_tab_1,这样就能把原来千万的数…... -
MQ 的缺陷是什么
参考答案 系统可用性降低:以前只要担心系统的问题,现在还要考虑 MQ 挂掉的问题,MQ 挂掉,所关联的系统都会无法提供服务。 系统复杂性变高:要考虑消息丢失、消息重复消费等问题。 一致性问题:多个 MQ 消费系统,部分成功,部分失败,要考虑事务问题。 以上,是MQ面试题【MQ的缺陷是什么】的参考答案。 输出,是最好的学习方法。 欢迎在评论区留下你的问题、笔记或知识点补充~ ---end---... -
Redis如何实现分布式锁
参考答案 Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。 Redis中可以使用SETNX命令实现分布式锁: 当且仅当 key 不存在,将 key 的值设为 value。 若给定的 key 已经存在,则 SETNX 不做任何动作。 SETNX (SET if Not eXists)如果不存在,则 SET。 返回值:设置成功,返回1;设…... -
MySQL的高可用方案有哪些
参考答案 本篇详解:MySQL的高可用方案选型,MySQL的5个常见高可用方案、以及其各自的优缺点。 一、 MySQL的高可用方案选型 在考虑MySQL数据库的高可用的架构时,主要参考如下几个方面: 如果数据库发生了宕机或者意外中断等故障,能尽快恢复数据库的可用性,尽可能的减少停机时间,保证业务不会因为数据库的故障而中断。 用作备份、只读副本等功能的非主节点的数据应该和主节点的数据实时或者最终保持…... -
如何保证缓存与数据库双写时的数据一致性
参考答案 只要用缓存,就可能会涉及到缓存与数据库双存储双写。只要是双写,就一定会有数据一致性的问题。 如何解决数据一致性的问题呢?有两个方案供参考: 解决方案一:读请求和写请求串行化,串到一个内存队列里去。 这种方式可以保证一定不会出现不一致的情况。 串行化之后,会导致系统的吞吐量会大幅度的降低,用比正常情况下多几倍的机器去支撑线上的一个请求。 一般来说,如果系统不是严格要求缓存+数据库必须一致性…... -
Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id是否可以重复
参考答案 不同的Xml映射文件: 如果配置了namespace,id可以重复。 如果没有配置namespace,id不能重复。 原因: namespace+id是作为Map的key使用的,如果没有namespace,就剩下id,那么,id重复会导致数据互相覆盖。 有了namespace,自然id就可以重复,namespace不同,namespace+id自然也就不同。 备注: 在旧版本的Mybat…...