微信产品经理面试题
丁香园CTO冯大辉曾发过三道产品经理的面试题,题目是关于微信的,如下:

其中第二题是一道偏技术的问题,出现在产品经理的面试中确实有点意外,但这题不失为一道很好的产品设计与系统分析的题目。系统分析也是我们“产品经理学技术”系列文章规划中的一个部分,也是将我们所讲的技术进行“升华”的一部分内容。
下面我们尝试回答一下这个问题,算是抛砖引玉了,大家有好的答案也可以给我们留言进行讨论。
朋友圈的基本数据结构设计是怎样的?既能做到完美阅读权限设置,又能兼顾性能?
关于消息的基础数据,比如文字、图片、时间、位置等这些咱就不表了。这些数据基本上与权限和性能没有多大关系,可以理解为单独存储,纯技术活。这里只讨论权限与性能相关的数据结构。
而在权限管理上,微信采用了给用户打“标签”来进行分组,这个标签的分组与微信通讯录一致。在数据上,就是给每个关系增加一个“标签”标记。
这里需要注意的是,虽然微信的关系在产品使用上给用户是双向的(即互相关注),但是在存储的时候,是给互相关的两个用户分别建立了关系数据,也就是每个人独有自己的一份“通讯录”。
这通过删除了自己的好友之后,自己并不从别人的通讯录删除就可以看得出来。标签分组的基础数据就是这样了,这也是后面朋友圈权限管理的基础。
对于个人朋友圈timeline所能看到的消息,按照一般的逻辑是先获取所有朋友的消息,然后剔除掉没有授权给自己看的消息、剔除掉自己屏蔽的用户消息,然后才得到自己当前看到的timeline。
如果是这样的逻辑的话,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通讯录中朋友们的消息,还要对找到的每条消息去判断用户是否有权限阅读。
这显然是效率低下的方式,更何况微信是这么大的一个访问量和数据量。所以,这种数据结构设计是行不通的了。
【微信产品经理面试题】相关文章:
腾讯微信产品经理的面试题07-31
腾讯微信产品经理面试题10-21
最新腾讯微信产品经理面试题08-30
Google产品经理笔试题&面试题10-26
产品类面试题07-16
产品经理辞职信08-08
销售经理面试题06-24
产品经理辞职信范文05-26
产品经理英文求职信09-11
产品经理英文求职信范文06-29