快手日常一面

1、介绍一下项目的架构,各个模块之间是怎么穿起来的?比如说让你做一个点评项目,你要怎么设计,要采用哪些中间件,

2、你这里用了redis作缓存,为什么要引入redis呢,直接用数据库不行吗?redis相比于直接操作数据库有哪些好处?为什么本项目用redis做缓存?还有其他的缓存吗?为什么不用其他的缓存?

3.Redis有哪些数据丢失问题呢,什么情况下会丢失数据,怎么处理?

回答时提到了集群脑裂问题,那么请详细解释一下为什么发生集群 脑裂问题,应该怎么解决这个问题?

4.我看你使用的是redis分布式锁,为什么要引入分布式锁呢,分布式锁有什么问题呢?比如目前你拿到了个锁,但是redis服务宕机了,该怎么办(可以设置超时释放,那超时释放又有什么问题,怎么解决)

5.为什么用redis分布式锁呢?其他分布式锁不可以吗

6.数据库和缓存怎么保持一致性,说了很多,面试官说其实大多数情况下先更新数据库,再操作缓存就能解决问题,那如果要求强一致性,那就不能用redis吧,要不然这编码太麻烦了,那该怎么办呢?

7、算法题是最长递增子序列

全部评论
有后续吗?
点赞 回复 分享
发布于 09-30 14:18 北京

相关推荐

10-12 20:39
已编辑
虎牙_后端(实习员工)
9.30 一面:自我介绍Long \ long 的区别、默认值,int 和 long 的区别String \ StringBuilder \ StringBuffer 有什么区别?进程和线程有什么区别?索引的作用是什么?手写几个简单 SQL ,有用到索引吗,什么时候会索引失效?LEFT JOIN 和 INNER JOIN 有什么区别?Linux 如何查看一个 log 文件的内容?如何搜索文件里的内容?通过 uid 搜索 log 文件打印出来下面的堆栈信息?黑盒测试和白盒测试是什么?黑盒测试和白盒测试有什么测试方法?朋友圈点赞功能有哪些测试用例?还知道其他哪些测试方法?什么是缓存穿透、缓存雪崩、...
一笑而过2222:一、Java 相关 -  String 不可变,适合少量操作。 -  StringBuilder 可变、非线程安全,适用于单线程大量操作。 -  StringBuffer 可变、线程安全,适用于多线程环境。 二、操作系统相关 - 查看 log 文件内容可用 cat 、 more 、 less 命令。 - 搜索文件内容: grep "text" logfile.log 。 - 搜索 UID 并打印堆栈信息: grep "uid_value" logfile.log | awk '{print $NF}' 。 三、数据库相关 - 索引提升检索速度、保证唯一性,如 SELECT * FROM table WHERE id = 1; 可能用索引。 - 索引失效情况:索引列函数操作、 LIKE 以通配符开头。 -  INNER JOIN 返回匹配行, LEFT JOIN 返回左表所有行及匹配右表行,无匹配用 NULL 填充。 四、测试相关 - 黑盒测试关注输入输出,白盒测试关注内部逻辑。 - 朋友圈点赞测试包括点赞、取消点赞、并发点赞、刷新显示、网络异常等。 - 其他测试方法有灰盒测试、性能测试、安全测试等。 五、缓存相关 - 缓存穿透:查询不存在数据,解决方法有缓存空结果、用布隆过滤器。 - 缓存雪崩:大量缓存同时失效,解决方法是分散过期时间、用锁机制。 - 缓存击穿:热点数据过期时高并发请求,解决方案为加锁、设置永不过期。 六、算法相关 - 比较版本号按点分割成数组,逐位比较数字大小区分版本高低。
点赞 评论 收藏
分享
5 20 评论
分享
牛客网
牛客企业服务