如果你应聘微信产品经理,怎么回答这道面试题? -k8体育

00:00如果你应聘微信产品经理,怎么回答这道面试题?

问题源自知乎问题,感兴趣可以知乎搜索「关于微信的产品面试题,产品经理来答答?」,我从中选取了一个问题,加了一点自己的思考,发出来探讨一下。

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

题目本身给出了两个重点,「阅读权限」和「性能」,考察产品经理思考问题的全面性和对技术的了解程度。

首先梳理一下朋友圈的几个功能特点:

  • (0)基础存储功能,可发布视频、链接、纯文本、图文消息。
  • (1)异步发布,即时用户交互行为反馈。在网络情况较差时可以先提交任务(如发布朋友圈、点赞、评论),无需等待任务完成。
  • (2)可选择部分用户可见,也就是题目中说到的权限。
  • (3)对某些用户可见的权限,除了用户主动选择的,还有系统层面的过滤器,比如某些违反微信运营规定的活动链接可被系统限制在朋友圈中传播(也就是你发了之后只有你自己能看到,别人看不到)
  • (4)新消息通知主动push,无需刷新界面,新消息可自动push;新朋友圈需要刷新才能看到。

问题(0)和(1)与阅读权限设置没有多大关系,与性能有一点点关系,但并不是本文讨论的重点。这个面试题我们可以围绕「阅读权限」和「性能」这两个基本点,对(2)、(3)、(4)三个点进行探讨。

回答问题(2)时,我们可以从微信提供的功能上找到一些设置阅读权限的蛛丝马迹。

1)互为好友关系,是好友关系才能看到对方朋友圈,这是第一前提。

微信的朋友与朋友之间的关系虽然是双向的,如a和b要成为朋友,a需要给b发送好友申请,当b通过a的申请时a才能看到b的朋友圈。

此时,a与b虽然存在好友关系,但彼此有一份独立的通讯录,互不干扰。比如a把b从朋友圈删除时,b会在a的通讯录列表里消失,但a不会在b的通讯录列表里消失,当b给a发信息时才能发现双方已非友好关系。

2)不在黑名单内,才能给对方发送消息并且能看到对方的朋友圈。

黑名单是介于「关系正常」和「删除」之间的一种关系,双方的好友关系还被保留,比如a把b拉黑了,有如下表现:

b无法给a发送消息,也看不到对方朋友圈的任何内容。

1
2

因为a主动拉黑b,a可以看到b的历史朋友圈,但看不到拉黑后更新的内容。

3
4

3)申请加为好友时,选择「不让他看我的朋友圈」开启或关闭。

不让看朋友圈是介于黑名单和正常关系之间的一个状态,如果互相加为好友时,被选择了「不让看朋友圈」,你是不能看到对方朋友圈的更新的。

4)通讯录朋友标签化。

我们可以在微信提供的功能上找到「标签」,这个标签除了对朋友属性进行标记(如你可以把某个微信联系人标记为老板、同事)外,还可以在发布朋友圈时选择带某标签的朋友可见或不可见。

5

微信基于此构建了朋友圈和通讯录的权限体系,那在具体技术实现上是什么场景呢?

我认为,微信朋友圈的权限是在朋友关系和朋友圈内容有写操作的时候进行下发的,也就是当用户发布内容或对关系进行修改时,就会下发朋友圈的内容可见状态,按照权限优先级分为三种下发情况:

  • 非好友、黑名单关系是实时触发的。一经修改,所有内容实时生效。
  • 标签关系也是实时触发的,但不会因为修改标签的动作而对已发布内容是否可见产生变化。比如你发了一条朋友圈,对打了标签的a和b两个好友可见,c当时还不在可见标签内。发布完成之后修改c的标签为可见,c仍然看不到这条朋友圈。除删除状态和取消点赞,朋友圈是不具备修改、编辑功能的。
  • 对于违规的朋友圈内容,微信会限制内容在朋友圈传播,这个限制是系统限制,是异步进行的。比如你发布了一个受限的链接,发布之后在很短的时间内(1-2分钟内)朋友是可以看到这条链接的,但随后这条链接马上会被屏蔽,这样异步处理的初衷大概是 “把部分复杂的但不是最高优先级的权限计算发送到闲散的客户端或机器资源上去做”,保证核心的阅读体验不会受到影响。

以上便是一些权限处理上的策略,接下来我们来讨论一下,用什么样的技术手段或者存储方式,来支持这些复杂的权限下发和阅读权限控制。

在timeline(时间流)或feeds流的产品技术实现上常用到一个算法叫「混排算法」,顾名思义就是结合了一系列的影响因子,把用户发布的状态/信息 实时分发到好友关系链里,感兴趣的朋友们可以使用谷歌学术搜索timelime cache等关键字自行检索。

这些存储计算使用的技术肯定不是我们平时说的数据库,而多用一些分布式存储、持久缓存技术作为工具,比如memcached、redis等。

我们大胆猜想微信朋友圈的实现也使用了redis,或者类似redis系统的key-value键值对存储系统。

6

一条条的朋友圈状态在用户的权限列表里是以key-value的形式存在的,每个用户的 timeline 是由一个 redis list 来维护, redis list 存放着经过上面权限策略过滤之后可见好友发布的朋友圈的 id。每当一个用户发布朋友圈时, 会把这条朋友圈的 id 推到有权限阅读的好友的timeline 中(也就是存储到redis list 里)。当用户刷新自己的朋友圈时,只需要到自己的redis list 里拉取到对应的朋友圈列表,然后再比对本地缓存,决定该朋友圈是否要显示或重新请求。数据格式大概如下:#{user_id}/#{post_id}(发布朋友圈的用户id/该朋友圈的id)”

redis_list = [“10010/100111”, “10020/103111”, “10030/140111”, “100210/100786”, “100233/100444”]

同样的,点赞数、评论数、自己是否点赞等与某条朋友圈的关系,也是存储在redis list里。

虽然朋友圈内容是不会变的,但是点赞数和评论数目可是实时变化的哟。每一条朋友圈都会要获取这条动态获得了多少赞、有多少条评论、自己是否点赞。而这三个属性都是从 redis 中读取出来的。也就是说如果这个接口返回了 20 条动态的话, 我们需要调用20*3次= 60 次 redis。这似乎也是不可以接受的,特别是有一些人好友比较多、互动比较频繁的,有时候还需要主动给用户推小红点提醒有新消息更新,这些人所在的机器性能就会告急。

所以,微信的这道面试题提到了「性能」这个点。

这里,可以可以考虑使用时间戳来标记上一次动态更新的时间。比如,当用户在发布新的朋友圈信息时,如果跟当前用户有新的互动(比如回复了你的评论、给你点赞了),上一次更新的时间戳就会发生变化,并主动更新到用户相关的各个redis list里。当发现客户端发现上次更新的时间戳和本地时间戳不一样时,可以主动更新获取信息,否则保持不动。

调整对象结构为 用户id=>[状态,上次更新时间戳]

{ ‘10010’ => [‘200101′,’123453454’], ‘10011’ => [‘200102’, ‘12345345435’], ‘10021’ => [‘200103′,’12345345435’], ‘10031’ => [‘200104′,’12345345435’]}

额,讲到这里,很多同学没看懂?

看吧,产品经理懂一些技术还是好一点的吧。^_^

好了,以上是一位产品经理作为旁观者对微信朋友圈数据结构设计的一些思考,希望对大家思考有所帮助。许久不写技术文章,如有错误,欢迎留言指正。

(0)

相关推荐

  • 你是什么星座? 我是天秤座。 你的上升星座是什么? 呃………… 很多人都是只知道自己的太阳星座,但是一问到上升星座,‘咦~什么鬼’。 太阳星座就是我们平常所说的星座,就是你呱呱落地…

    2022年4月9日 投稿
  • 有不少果粉说qq邮箱使用频率很高,但是在iphonex上添加邮箱时总是显示密码错误,其实很简单,不过是中间多了一个验证码!现在给大家介绍一下在iphonex上添加邮箱的方法。 首先…

    2021年12月13日 杂谈
  • 为你解决 mac 故障如何自行检测处理?最近一个月,我们店里用户在使用mac的过程中,都遇到了一些系统问题!或大或小,但并不是每个故障都需要到售后来维修处理,那样太浪费时间和金钱了…

    2021年12月13日
  • 今年是乔布斯逝世十周年,也是 iphone 4s 发布十周年。一位世界创新领袖,一款划时代的完美产品,他们如此惊艳,以至于如今全球第一市值也无法掩盖公众对苹果公司的创新声讨。新款 …

    2021年12月13日
  • 迷你世界的卡通风格,对于特定玩家而言很有吸引力。作为一款有着和一般沙盒游戏相同玩法的方块世界游戏,迷你世界的特色之处在于,里面提供了很多自动化零部件。借助现有的自动化部件,玩家可以…

    2021年12月13日
  • 哥伦比亚大学世界排名2022最新排名表 世界大学权威排名机构rur(round university ranking)公布了2022年度全球大学排名。     …

    2022年6月22日
  • 40-50岁的女性要追求儒雅知性美,才能显现出应由的气质。 一套品牌女装会更好的衬托这种气质。40-50岁高档女装品牌有很多,皮尔卡丹女装设计大方简洁,声雨竹女装线条优美 ,收放自…

    2022年5月4日
  • 前言 大多数百姓的住宅在办理贷款时会被默认为等额本息。由于一次性全款买房的费用给百姓造成经济压力,因此国家政策给予百姓从无房到有房最稳妥、最适合的一种经济杠杆福利——首付,所以百姓…

    2021年12月1日 投稿
  • 北京市有着数千年的文化底蕴传承,而其中也有着丰富的饮食文化内涵,而想要品尝到地道的北京小吃可以去哪里平常呢,街道作为北京饮食的一种标志,城内的美食街数不胜数,本文就为大家盘点北京十…

    2022年1月25日 投稿
  • 神舟13号飞船载人行动可以说是进一步完善了中国空间站的建设,还有相关的实验研究,这些都从侧面证明了我国完全有实力进行太空建设。

    2022年5月9日 投稿
  • 3月8日10时,在梅地亚中心新闻发布厅举行的记者会上,国务委员兼外交部长王毅用不当“沉默的羔羊”总结孟晚舟案。 3月8日上午10时,十三届全国人大二次会议新闻中心在梅地亚中心新闻发…

    2022年4月6日
  • 来源:子弹财经(id:wwwhygc)  作者:冯羽   编辑:蛋总 共享电单车的下沉市场,没你想象中那么美。 巨头们手握流量与资源,“高举高打”的套…

    2021年10月25日
  • 著名的风景旅游城市,吴都,苏州啊人居天堂,姑苏区在市区,是中国首批24个历史文化名城之。 加之文人墨客题咏吟唱,环境最好的是园区。,但宜居只是其中一个小方面,。 苏州最适合居住的就…

    2022年3月31日
  • 自从微信营销的概念火了以后,关于如何做好微信营销、微信营销具体优势有哪些、自己的行业或企业适不适合做微营销等这类问题就一直被人们所关注,毕竟微信目前的活跃用户是所有类app软件极高…

    2022年4月18日
  • mac上的微信小助手wechatplugin更新啦!!也可以叫它微信双开微信mac版、多开应用。用户使用苹果微信多开助手mac版可安装多个官方微信分身,同时运行互不干涉,微信多开助…

    2022年1月26日 投稿

发表回复

登录后才能评论
网站地图