快手日常一面
1、介绍一下项目的架构,各个模块之间是怎么穿起来的?比如说让你做一个点评项目,你要怎么设计,要采用哪些中间件,
2、你这里用了redis作缓存,为什么要引入redis呢,直接用数据库不行吗?redis相比于直接操作数据库有哪些好处?为什么本项目用redis做缓存?还有其他的缓存吗?为什么不用其他的缓存?
3.Redis有哪些数据丢失问题呢,什么情况下会丢失数据,怎么处理?
回答时提到了集群脑裂问题,那么请详细解释一下为什么发生集群 脑裂问题,应该怎么解决这个问题?
4.我看你使用的是redis分布式锁,为什么要引入分布式锁呢,分布式锁有什么问题呢?比如目前你拿到了个锁,但是redis服务宕机了,该怎么办(可以设置超时释放,那超时释放又有什么问题,怎么解决)
5.为什么用redis分布式锁呢?其他分布式锁不可以吗
6.数据库和缓存怎么保持一致性,说了很多,面试官说其实大多数情况下先更新数据库,再操作缓存就能解决问题,那如果要求强一致性,那就不能用redis吧,要不然这编码太麻烦了,那该怎么办呢?
7、算法题是最长递增子序列
2、你这里用了redis作缓存,为什么要引入redis呢,直接用数据库不行吗?redis相比于直接操作数据库有哪些好处?为什么本项目用redis做缓存?还有其他的缓存吗?为什么不用其他的缓存?
3.Redis有哪些数据丢失问题呢,什么情况下会丢失数据,怎么处理?
回答时提到了集群脑裂问题,那么请详细解释一下为什么发生集群 脑裂问题,应该怎么解决这个问题?
4.我看你使用的是redis分布式锁,为什么要引入分布式锁呢,分布式锁有什么问题呢?比如目前你拿到了个锁,但是redis服务宕机了,该怎么办(可以设置超时释放,那超时释放又有什么问题,怎么解决)
5.为什么用redis分布式锁呢?其他分布式锁不可以吗
6.数据库和缓存怎么保持一致性,说了很多,面试官说其实大多数情况下先更新数据库,再操作缓存就能解决问题,那如果要求强一致性,那就不能用redis吧,要不然这编码太麻烦了,那该怎么办呢?
7、算法题是最长递增子序列
全部评论
有后续吗?
相关推荐
一笑而过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 填充。
四、测试相关
- 黑盒测试关注输入输出,白盒测试关注内部逻辑。
- 朋友圈点赞测试包括点赞、取消点赞、并发点赞、刷新显示、网络异常等。
- 其他测试方法有灰盒测试、性能测试、安全测试等。
五、缓存相关
- 缓存穿透:查询不存在数据,解决方法有缓存空结果、用布隆过滤器。
- 缓存雪崩:大量缓存同时失效,解决方法是分散过期时间、用锁机制。
- 缓存击穿:热点数据过期时高并发请求,解决方案为加锁、设置永不过期。
六、算法相关
- 比较版本号按点分割成数组,逐位比较数字大小区分版本高低。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享