题解 | 每类视频近一个月的转发量/率

select tag, sum(if_retweet) retweet_cnt, round(avg(if(if_retweet=1,1,0)),3) retweet_rate
from tb_user_video_log tu
left join tb_video_info tv
on tu.video_id = tv.video_id
where timestampdiff(day,date(start_time),date((select max(start_time) from tb_user_video_log))) < 30
group by tag
order by retweet_rate desc

全部评论

相关推荐

01-17 15:42
门头沟学院 Java
算是一家小型初创公司,ai相关,刚起步岗位需求多,投的后端实习岗,年后入职。面试官说有机会接触到一些算法上的东西,公司核心业务可以说是跟自己研究方向相关的,至少目前非常满意😊虽然难度低,也没深挖什么八股,但这次的面试状态是秋招以来最好的一次了(前一天晚上看了会儿今天不coding的直播,听同龄人分享各种经历,确实很大程度上缓解了内心的焦虑),可能也是由于面试形式是展示代码吧,对着自己的代码框框讲,就显得十分自信,面完几个小时后就发offer了。第一个项目是黑马点评,简单展示了一下用户登录,店铺信息缓存,优惠券秒杀的功能。提问:1.&nbsp;在秒杀时,为什么要用lua脚本。&nbsp;&nbsp;&nbsp;&nbsp;A:保证原子性2.&nbsp;为什么选择caffeine做本地缓存&nbsp;&nbsp;&nbsp;&nbsp;A:技术选型上没有什么考虑,只是知道有这么个技术,就用来练手了。使用caffeine时需要注意缓存一致性问题。3.&nbsp;项目还有没有其他亮点&nbsp;&nbsp;&nbsp;&nbsp;A:封装了redisson的布隆过滤器,结合redis缓存空值去避免缓存击穿。由于布隆过滤器是后期引入的,此时数据库已经有一百万条了(模拟的),通过多线程读取数据库中的数据,写入布隆过滤器,来加快布隆过滤器的构建。并利用自增的主键id解决深分页问题。4.&nbsp;布隆过滤器的原理&nbsp;&nbsp;&nbsp;&nbsp;A:bitmap,多个hash函数5.&nbsp;布隆过滤器的缺点&nbsp;&nbsp;&nbsp;&nbsp;A:误判,不支持删除6.&nbsp;如何解决删除问题&nbsp;&nbsp;&nbsp;&nbsp;A:定期重写布隆过滤器&nbsp;&nbsp;&nbsp;&nbsp;这里面试官说这种方案不好,因为重写过滤器会影响到业务的使用,我提了可以在低峰期重写,但面试官还是不太满意。第二个项目是github上找的一个开源项目,主要关注了一下核心业务的实现,并做了一定的改进与拓展。由于时间原因,简单介绍了一下用rabbitmq异步将用户点赞记录写入数据库的实现。提问:用mq异步写入点赞数据,如果消费者效率慢,会导致前端页面反馈不及时,如何解决A:可以用redis缓存文章点赞数,并定期将mysql中记录的点赞记录数量同步到redis缓存中(当时这里没想好,随便答的。或者应该用redis的set来缓存点赞记录,并定期写入mysql?)反问环节略
查看7道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务