B站 后端/AI实习生 面经
#牛客AI配图神器#
攒人品ing~(一天三面我燃尽了)
个人背景介绍
一、 项目深挖:高并发博客系统架构
面试官提问:你的并发控制和API限流是怎么做的?
面试官追问:点赞的接口限流具体怎么实现的?
面试官追问:数据最终怎么落库?MQ消息丢了怎么办?
二、 场景题:使用Redis实现QPS/QPM/QPD限流
面试官提问:如果要用Redis限制一个接口在滚动窗口下的QPS、QPM、QPD,怎么做?
第一版思路:将时间单位拼接到Redis Key中。
面试官指出:这会导致Key数量爆炸式增长。
第二版思路:使用Hash结构,记录用户在特定时间窗口内的访问次数。
面试官指出:这种方式只能记录自然时间(如自然天、自然秒),无法满足滑动窗口的需求。
第三版思路:使用ZSet实现滑动窗口,Score设为时间戳,Value设为唯一标识。每次请求进来先移除时间窗口之前的数据,再使用 `ZCARD` 统计当前元素个数来判断是否限流。
面试官指出:在QPD(每天调用量)极大且高频的场景下,ZSet会导致元素过多,产生大Key问题。
第四版思路(最终被认可):针对精度要求没那么高的QPM/QPD,采用“分桶计数”思想。将一天24小时分为1440个分钟桶,使用String存计数值。每次判断时只需将最近时间段内的桶数据相加即可,旧桶设置自动过期销毁。
表示该方案可行。
三、 项目深挖:缓存三大问题解决方案
面试官提问:你在项目中提到的“布隆过滤器 + 互斥锁 + 逻辑过期”是怎么协同工作的?
四、 手撕算法
题目:LeetCode 124. 二叉树中的最大路径和。
五、 反问环节
问:入职后实习生的主要工作内容是什么?
问:团队内部对于AI写代码的认可度如何?
问:对我今天面试表现的评价和建议?
攒人品ing~(一天三面我燃尽了)
个人背景介绍
一、 项目深挖:高并发博客系统架构
面试官提问:你的并发控制和API限流是怎么做的?
面试官追问:点赞的接口限流具体怎么实现的?
面试官追问:数据最终怎么落库?MQ消息丢了怎么办?
二、 场景题:使用Redis实现QPS/QPM/QPD限流
面试官提问:如果要用Redis限制一个接口在滚动窗口下的QPS、QPM、QPD,怎么做?
第一版思路:将时间单位拼接到Redis Key中。
面试官指出:这会导致Key数量爆炸式增长。
第二版思路:使用Hash结构,记录用户在特定时间窗口内的访问次数。
面试官指出:这种方式只能记录自然时间(如自然天、自然秒),无法满足滑动窗口的需求。
第三版思路:使用ZSet实现滑动窗口,Score设为时间戳,Value设为唯一标识。每次请求进来先移除时间窗口之前的数据,再使用 `ZCARD` 统计当前元素个数来判断是否限流。
面试官指出:在QPD(每天调用量)极大且高频的场景下,ZSet会导致元素过多,产生大Key问题。
第四版思路(最终被认可):针对精度要求没那么高的QPM/QPD,采用“分桶计数”思想。将一天24小时分为1440个分钟桶,使用String存计数值。每次判断时只需将最近时间段内的桶数据相加即可,旧桶设置自动过期销毁。
表示该方案可行。
三、 项目深挖:缓存三大问题解决方案
面试官提问:你在项目中提到的“布隆过滤器 + 互斥锁 + 逻辑过期”是怎么协同工作的?
四、 手撕算法
题目:LeetCode 124. 二叉树中的最大路径和。
五、 反问环节
问:入职后实习生的主要工作内容是什么?
问:团队内部对于AI写代码的认可度如何?
问:对我今天面试表现的评价和建议?
全部评论
还想问一下,第四个针对每天的访问限流直接用一个计数器记录他当天的访问次数不就行了吗?为什么要分桶?
主播面的哪个部门?再过两天就要面B站了。我的项目跟你好多内容相似。需要准备计网和操作系统的八股吗?
uu这是暑期还是日常,b站池子泡了快一个月了还在筛简历
相关推荐
查看15道真题和解析 点赞 评论 收藏
分享