快手日常后端一面

1.redis的持久化,AOF重写,数据结构,使用方式
2.数据库的锁
3.零拷贝
4.Java常用包及其设计模式
5.RocketMQ的机制
#快手#
全部评论
没有算法题吗,我觉得这纯粹八股文了😂。Redis的持久化 Redis提供两种持久化方式:RDB和AOF。 RDB是一种快照方式,它能够在指定时间间隔内,将当前内存中的数据生成一份快照保存到磁盘上。RDB的优势是它可以在备份时非常快速,但是它的数据很可能会丢失,因为如果Redis在进行持久化时出现故障,那么所有未被保存的数据都会丢失。 AOF以日志的形式记录服务器接收到的每个写操作。可以在Redis启动时重新执行这些操作来重建原始数据。Redis还提供了一种AOF重写功能,可以将日志文件重写为新的紧凑格式,以减小磁盘消耗。 Redis支持五种数据结构:字符串、列表、哈希表、集合和有序集合。 使用方式: 在命令行中使用redis-cli工具与Redis进行交互 使用Redis的Java客户端Jedis或者Lettuce进行访问 使用Spring Data Redis在Spring应用程序中与Redis集成 数据库的锁 数据库锁机制是指在对数据库中的数据进行读写操作时会自动或者人为的对数据进行加锁,以保证数据的一致性和完整性。主要分为悲观锁和乐观锁。 悲观锁:在操作每一条数据时、先对其进行加锁,以防止其他线程同时对同一条数据进行操作。悲观锁机制适用于对数据的并发请求比较频繁的场合下。 乐观锁:在操作数据时、不进行加锁,在提交更新操作的时候,判断该数据是否被其他线程修改过。如果没有被修改、则更新成功、否则回滚。乐观锁适用于并发较少的场合。 零拷贝 零拷贝机制是指在数据处理过程中,将数据从一个存储区域传递到另外一个存储区域,而不需要经过CPU和内存的拷贝过程。这样的好处是可以减轻系统的开销、提高系统效率。 Java中的零拷贝技术有两种: NIO中的传输通道:可以使用transferFrom和transferTo方法,将数据在通道之间进行传递。 MappedByteBuffer:可以将整个文件或者文件的一部分映射到一个Buffer中,在通过该Buffer进行读写操作,从而达到零拷贝的效果。 Java常用包及其设计模式 Java常用的核心包有:java.lang、java.util、java.io、java.net等。其中,java.lang包包含了Java语言的基本类和接口,java.util包提供了一些实用的工具类,java.io包包含了一系列用于操作输入输出流的类和接口,java.net包为网络编程提供支持。 Java中常用的设计模式有:单例模式、工厂模式、抽象工厂模式、装饰者模式、观察者模式、适配器模式等。这些设计模式的应用可以提高代码的复用性、降低代码的复杂度、提高代码的可读性。 RocketMQ的机制 RocketMQ是一个基于Java开发的分布式消息队列系统,具有高可用、高性能、可伸缩性等特点。其主要机制包括: Producer:生产者角色,负责产生并发送消息到Broker。 Broker:消息服务器,专门负责接收发送的消息,存储消息,以及转发消息到相应的Consumer。 Consumer:消费者角色,负责订阅消息并从Broker端拉取消息并消费。 RocketMQ采用Topic和Tag来进行消息的分类和过滤,支持集群和广播消息模式。RocketMQ还支持消息的顺序性和事务消息功能,用于满足不同的业务需求。
30 回复 分享
发布于 2023-05-20 00:41 陕西
就这么几道题吗……快手我记得挺难的
1 回复 分享
发布于 2023-06-18 20:34 上海
m
1 回复 分享
发布于 2023-05-27 11:49 浙江
什么部门
1 回复 分享
发布于 2023-05-25 17:07 北京

相关推荐

2025-12-06 20:32
北京理工大学 Java
一面 202512021.MySQL索引2.MVCC3.Redis缓存击穿、缓存穿透、缓存雪崩4.使用Redis分布式锁需要考虑哪些问题(1)互斥,保证同一时间(2)防止死锁:过期时间+自动续期(3)防止锁被误删:先校验再删除(4)释放锁是原子操作(5)锁的续期5.Redis持久化:RDB+AOF(1)RDB:(2)AOF(3)混合6.kafka消息持久化7.RocketMQ和kafka的区别8.项目:分布式会话鉴权、RPC为什么使用TCP协议、RPC这个项目主要实现了什么?9.实习10.TCP和UDP区别11.UDP如何保证数据是正确的?在哪一层实现的?12,手撕:输入:l1 =[7,2,4,3],l2_[5,6,4]输出:[7,8,0,7]解释:7243+564=7807二面 202512051.介绍实习中比较有挑战性的工作2.Redis分布式锁是自己实现的还是第三方封装好的接口?--项目里其他人实现的?3.那你知道是怎么做的吗?--不知道4.自己想实习分布式锁,有什么思路?--首先要保证加锁和释放锁都是原子性的,锁的key,超时时间,支持重入5.微信支付的话,有个微信授权,这个微信授权过程是什么样的?比如说淘宝,支付可以选择支付方式,我怎么授权给淘宝??--其实这个我根本没听懂问什么?6.点评项目里缓存技术,使用了布隆过滤器的目的,为什么能解决缓存穿透的问题?7.前提是不是全部数据加载到布隆过滤器??如果数据量很多,全部加载到布隆过滤器??误判率增高,会不会影响效果??布隆过滤器里存数据,数据有删除的话,怎么解决??项目里用布隆过滤器内存多大??自己实现的还是第三方已有的?自己实现的内存有多大??误判率有多大??---给我问懵了😭8.为什么做RPC框架项目?为什么不采用已有的RPC?这个项目是怎么做的?有没有调研已有的RPC框架是怎么做的?和已有的RPC框架有什么区别?DUDDO底层协议是??有没有做过性能比对?你怎么知道你这个协议性能比较高?9.用到了很多中间件,了解程度,会不会更深层次的去了解这些组件?用的最多的哪个?Redis的底层机制,他的优势?10.Redis有持久化,能不能存储核心数据?能不能直接使用Redis当db,这样就没有缓存一致性问题了?--Redis的持久化都有数据丢失的风险11.什么情况下会丢失??-RDB:在上次持久化之后到下次持久化之前,如果宕机,会丢失数据;AOF:持久化的是写命令,AOF文件可能会损坏12.那mysql临时断电,会不会也有内存到数据库的时候数据丢失的风险?像redo undo这种日志也是在内存里,没刷到磁盘之前,数据库重启了,会不会有数据丢失的风险?13.你还有什么你的某些优势我没有了解到的?--尬住了。。
查看24道真题和解析
点赞 评论 收藏
分享
评论
8
72
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务