📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
查看: 3392| 回复: 5
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 非典型TOP K

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
来自TubiTV店面。算法+系统设计
面的senior backend. 店面问的top K. 说是输入是动态的。于是我就用了heapq 保存top k. 然后面试之后的反馈是我应该用stand library, sorting什么的。这难道不是stand lib?搞不懂。
然后问了如何scaling. 我记得提到了merge 多个top k. 而且可以用redis/memcached来存储数据,因为他们很快。我提到了那个俄国人top k视频里面的利用lambda architecture和probablistic data strucure。面试官问如果一个输入比之前存的stale top k小如何处理,大又如何‍‍‌‌‌‌‌‌‍‌‍‌‍‍‌‌‍‍处理。考虑pros and cons。不懂如何作答。有高手指点一二吗?

上一篇:请问,哪位大佬帮我内推一下国外图数据库方向or关系型数据库方向
下一篇:educative grokking课省钱经验分享
全局:
可以考虑用 Redis 的 sorted set存储. 把排序要依据的那个数值作为 score, 存进 Redis (ZADD). Redis 速度快就不必说了, 底层用跳表存储 sorted set, 有新元素加入就会动态调整调表的结构(O(logN)的时间复杂度非常低, 速度非常快), topK 问题可以用ZRANGE API 得到. 不只是前 K 个, 这个API 还能得到任意排名范围的值. 据我所知, 很多网站的热搜榜就是类似的设计.

至于怎么 scale, 并发量方面, Redis 单机就能抗住 ~10 万/s 的并发, 再多就加 replica也就差不多了, 因为热搜榜一般读得多写得少, 而且面试中一般没有特别变态的访问量. 至于数据量的 scale, 可以考虑用 Redis Cluster, 这还是做数据分片的思想, 同时也能分流一部分并发量. 至于其 trade off, 可以聊一下 Redis Cluster 用的是八卦协议, 在大集群下一致性不好, 但在当前场景下似乎也可以接受.

评分

参与人数 2大米 +2 收起 理由
PiggyPig + 1 很有用的信息!
xfoursea + 1 很有用的信息!

查看全部评分

回复

使用道具 举报

推荐
无量塔 2023-10-6 04:19:39 | 只看该作者
全局:
老实说我会直接用Druid偷懒直接存储实时数据,跑实时query的时候选Druid自带的top k query就是了…
需要准确的多天数据再搞一些async task来backfill/recalculate
回复

使用道具 举报

全局:
topk可能想你用quickselect
回复

使用道具 举报

全局:
Derekzzz 发表于 2023-05-17 11:23:49
topk可能想你用quickselect
输入是动态的怎么用quickselect?我觉得Heap没问题呀🤔
回复

使用道具 举报

🔗
夜辉冥 2024-10-3 07:37:13 | 只看该作者
全局:
一个输入比之前存的stale top k小如何处理
这个是想问count min sketch 撞key的case吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表