5-6年面试(上海清美1)

读未提交(Read Uncommitted)

这是最低的事务隔离级别。
一个事务可以读取另一个尚未提交的事务的修改。
可能导致脏读、不可重复读和幻读。
效率高,但并发控制能力最弱。

读已提交(Read Committed)
一个事务只能读取另一个已经提交的事务的修改。
可以防止脏读,但可能出现不可重复读和幻读。
大多数数据库系统的默认隔离级别。

可重复读(Repeatable Read)
在同一事务内,多次读取同一数据返回的结果是一样的。
可以防止脏读和不可重复读,但可能出现幻读。
MySQL的InnoDB存储引擎在默认设置下使用此隔离级别。

串行化(Serializable)
这是最高的隔离级别。
通过对事务进行排序,使得事务完全串行执行,从而解决脏读、不可重复读和幻读问题。
但性能开销最大,因为事务需要等待其他事务完成才能继续执行。

2.怎么写更新sql ?

1、start TRANSACTION;
BEGIN;
update a set …
commit;
2、update table set column = 1 where id = 2 for update

3.可重复读解决什么问题?

可重复读主要解决的是数据库并发控制中的一致性问题。在数据库事务处理中,当多个事务同时访问和修改同一数据时,可能会出现数据不一致的情况。可重复读隔离级别通过确保在一个事务内多次读取同一数据返回的结果相同,从而避免了“不可重复读”和“幻读”的问题。

具体来说,可重复读隔离级别通过一系列的控制机制,如行级锁、多版本并发控制(MVCC.MySQl中只有InnoDB支持MVCC,其他存储引擎不支持)等,实现了以下目标:

在一个事务内,无论其他事务如何修改数据,该事务看到的数据始终是一致的,即多次读取同一数据的结果相同。
防止了“脏读”,即一个事务读取到另一个未提交事务的修改。
降低了“幻读”的可能性,即在一个事务内执行相同的查询操作,结果集不会因其他事务的插入或删除操作而改变。
通过实现这些目标,可重复读隔离级别有效提高了数据库并发控制的性能和可靠性,特别是在高并发场景下,能够确保数据的一致性和完整性。需要注意的是,不同的数据库管理系统(DBMS)可能采用不同的实现方式和技术来支持可重复读隔离级别,因此在具体使用时需要参考相应的DBMS文档和规范。

4.Redis 的数据类型以及底层数据结构?

Redis支持多种数据类型,每种类型都有不同的特点和用途。以下是Redis的数据类型及其底层数据结构:

  1. 字符串(String):
    • 字符串类型是最基本的数据类型,可以存储任何类型的数据,如文本、整数或二进制数据。
    • 底层数据结构是简单动态字符串(SDS),它是一个可变长度的字节数组。
  2. 列表(List):
    • 列表类型是一个按插入顺序排序的字符串元素集合。
    • 底层数据结构使用双向链表实现,使得在两端进行快速插入和删除操作。
  3. 集合(Set):
    • 集合类型是一个无序且唯一的字符串元素集合。
    • 底层数据结构使用哈希表实现,保证高效的元素查找和去重。
  4. 有序集合(Sorted Set):
    • 有序集合类型是一个有序的字符串元素集合,每个元素关联了一个分数,用于排序。
    • 底层数据结构采用跳跃表和哈希表的组合实现,使得元素的添加、删除和范围查询等操作都具有较高的性能。
  5. 哈希表(Hash):
    • 哈希表类型是一个键值对的无序散列集合。
    • 底层数据结构使用哈希表实现,可以快速地通过键进行查找、插入和删除操作。
  6. Bitmap:
    • Bitmap类型是位数组,用于对大量位的设置、清除或查询操作。
    • 底层数据结构使用字节数组实现,每个比特位代表一个状态。
  7. HyperLogLog:
    • HyperLogLog类型用于进行基数估计,即统计集合中不重复元素的个数。
    • 底层数据结构使用原位指令实现,占用固定的空间,但可能会有一定的误差。

4.你用过Zset吗?

ZSet的应用场景非常广泛,例如排行榜、时间轴、朋友圈点赞等。通过将每个用户的分数存储在ZSet中,可以方便地进行排名、排序、取前几名等操作。同时,ZSet还可以用来实现时间轴功能,将每个用户的发布时间作为分数存储在ZSet中,然后按时间排序获取最新的信息。

5.kafka 分区分组有什么区别?

分区(Partition):

目的:Kafka的分区主要是为了扩展性。当Kafka集群需要处理大量的消息时,通过将一个大的topic分布到多个服务器上,可以有效地分散负载,提高系统的吞吐量和可靠性。
特点:在Kafka中,一个topic可以分成多个partition,每个partition是一个有序的队列。所有的消息在partition内部是有序的,但是Kafka不保证跨partition的消息顺序。每个partition只会被一个消费者组内的消费者消费,这样可以实现消息的负载均衡。
分组(Group):

目的:Kafka的消费者组的主要作用是消息负载均衡和消息广播。通过将多个消费者组织成一个消费者组,Kafka可以实现消息的并行消费,从而提高消息的处理效率。
特点:同一个消费者组中的多个消费者可以并行消费消息,以实现负载均衡。同时,消费者组也支持将消息广播给组内的所有消费者。此外,消费者组还保证了同一个消费者组中的消费者只会消费一次同一条消息,从而避免了消息的重复消费。

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化资料的朋友,可以戳这里获取

含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化资料的朋友,可以戳这里获取

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值