我要投稿 投诉建议

微信产品经理面试题:朋友圈是如何设置信息围栏的?

时间:2022-07-31 20:14:54 面试试题 我要投稿
  • 相关推荐

微信产品经理面试题:朋友圈是如何设置信息围栏的?

  [核心提示] 朋友圈的基本数据结构设计是怎样的?既能做到完美阅读权限设置,又能兼顾性能?

微信产品经理面试题:朋友圈是如何设置信息围栏的?

  原文:《腾讯微信产品经理面试题,你也来答答?》而在权限管理上,微信采用了给用户打「标签」来进行分组,这个标签的分组与微信通讯录一致。在数据上,就是给每个关系增加一个「标签」标记。这里需要注意的是,虽然微信的关系在产品使用上给用户是双向的(即互相关注),但是在存储的时候,是给互相关的两个用户分别建立了关系数据,也就是每个人独有自己的一份「通讯录」。这通过删除了自己的好友之后,自己并不从别人的通讯录删除就可以看得出来。标签分组的基础数据就是这样了,这也是后面朋友圈权限管理的基础。

  对于个人朋友圈 timeline 所能看到的消息,按照一般的逻辑是先获取所有朋友的消息,然后剔除掉没有授权给自己看的消息、剔除掉自己屏蔽的用户消息,然后才得到自己当前看到的 timeline。如果是这样的逻辑的话,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通讯录中朋友们的消息,还要对找到的每条消息去判断用户是否有权限阅读。这显然是效率低下的方式,更何况微信是这么大的一个访问量和数据量。所以,这种数据结构设计是行不通的了。

  对于个人朋友圈 timeline 所能看到的消息,按照一般的逻辑是先获取所有朋友的消息,然后剔除掉没有授权给自己看的消息、剔除掉自己屏蔽的用户消息,然后才得到自己当前看到的 timeline。如果是这样的逻辑的话,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通讯录中朋友们的消息,还要对找到的每条消息去判断用户是否有权限阅读。这显然是效率低下的方式,更何况微信是这么大的一个访问量和数据量。所以,这种数据结构设计是行不通的了。

  发布时进行权限控制(示意图,实际比这复杂)至于分库分表这些就不展开了,知道有这么回事就行。有时候这种技术上的设计也是会限制产品的设计。那怎么证明上面说的合理呢?感兴趣的同学可以去测试下:先发一条带阅读权限的消息,比如允许某个标签的人看。然后再给这个标签添加一个新人。结果是这个新人是看不到这条消息的,因为权限划分是在发布的时候就划分好了,新人加入标签的时间是在发布之后,所以没法获得这条消息的权限分配机会,虽然他后来在标签组中,但是仍然没有办法看到这条消息。作为一个微信设计的旁观者,以上答案是作为一个用户从系统分析的角度去考虑的,并不代表微信确实是这样的一个设计思路,但答案中的方案已经尽可能做到了可以验证。答案中也没有涉及到具体的技术,仅仅是一个系统分析的思路。

http://www.cnrencai.com/

【微信产品经理面试题:朋友圈是如何设置信息围栏的?】相关文章:

腾讯微信产品经理的面试题08-04

腾讯微信产品经理面试题08-10

如何从招聘信息中总结面试题08-21

如何快速面试APP产品经理的问题08-06

315微信朋友圈买到假货如何维权08-06

产品经理英文求职信09-24

电脑如何设置硬盘启动05-04

如何设置电脑下载密码11-02

如何玩转微信营销-什么是微营销09-25

微信营销技巧-如何做好微信营销09-25