六安沧州西安三亚宝鸡菏泽
投稿投诉
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

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

  问题源自知乎问题,感兴趣可以知乎搜索关于微信的产品面试题,产品经理来答答?,我从中选取了一个问题,加了一点自己的思考,发出来探讨一下。
  朋友圈的基本数据结构设计是怎么样的?既能做到完美的阅读权限设置,又能兼顾性能?
  题目本身给出了两个重点,阅读权限和性能,考察产品经理思考问题的全面性和对技术的了解程度。
  首先梳理一下朋友圈的几个功能特点:
  (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发送消息,也看不到对方朋友圈的任何内容。
  因为A主动拉黑B,A可以看到B的历史朋友圈,但看不到拉黑后更新的内容。
  3)申请加为好友时,选择不让他看我的朋友圈开启或关闭。
  不让看朋友圈是介于黑名单和正常关系之间的一个状态,如果互相加为好友时,被选择了不让看朋友圈,你是不能看到对方朋友圈的更新的。
  4)通讯录朋友标签化。
  我们可以在微信提供的功能上找到标签,这个标签除了对朋友属性进行标记(如你可以把某个微信联系人标记为老板、同事)外,还可以在发布朋友圈时选择带某标签的朋友可见或不可见。
  微信基于此构建了朋友圈和通讯录的权限体系,那在具体技术实现上是什么场景呢?
  我认为,微信朋友圈的权限是在朋友关系和朋友圈内容有写操作的时候进行下发的,也就是当用户发布内容或对关系进行修改时,就会下发朋友圈的内容可见状态,按照权限优先级分为三种下发情况:
  非好友、黑名单关系是实时触发的。一经修改,所有内容实时生效。
  标签关系也是实时触发的,但不会因为修改标签的动作而对已发布内容是否可见产生变化。比如你发了一条朋友圈,对打了标签的A和B两个好友可见,C当时还不在可见标签内。发布完成之后修改C的标签为可见,C仍然看不到这条朋友圈。除删除状态和取消点赞,朋友圈是不具备修改、编辑功能的。
  对于违规的朋友圈内容,微信会限制内容在朋友圈传播,这个限制是系统限制,是异步进行的。比如你发布了一个受限的链接,发布之后在很短的时间内(12分钟内)朋友是可以看到这条链接的,但随后这条链接马上会被屏蔽,这样异步处理的初衷大概是把部分复杂的但不是最高优先级的权限计算发送到闲散的客户端或机器资源上去做,保证核心的阅读体验不会受到影响。
  以上便是一些权限处理上的策略,接下来我们来讨论一下,用什么样的技术手段或者存储方式,来支持这些复杂的权限下发和阅读权限控制。
  在timeline(时间流)或feeds流的产品技术实现上常用到一个算法叫混排算法,顾名思义就是结合了一系列的影响因子,把用户发布的状态信息实时分发到好友关系链里,感兴趣的朋友们可以使用谷歌学术搜索timelimecache等关键字自行检索。
  这些存储计算使用的技术肯定不是我们平时说的数据库,而多用一些分布式存储、持久缓存技术作为工具,比如Memcached、Redis等。
  我们大胆猜想微信朋友圈的实现也使用了Redis,或者类似Redis系统的KeyValue键值对存储系统。
  一条条的朋友圈状态在用户的权限列表里是以keyvalue的形式存在的,每个用户的timeline是由一个Redislist来维护,Redislist存放着经过上面权限策略过滤之后可见好友发布的朋友圈的ID。每当一个用户发布朋友圈时,会把这条朋友圈的ID推到有权限阅读的好友的timeline中(也就是存储到Redislist里)。当用户刷新自己的朋友圈时,只需要到自己的Redislist里拉取到对应的朋友圈列表,然后再比对本地缓存,决定该朋友圈是否要显示或重新请求。数据格式大概如下:{userid}{postid}(发布朋友圈的用户ID该朋友圈的ID)
  RedisList〔10010100111,10020103111,10030140111,100210100786,100233100444〕
  同样的,点赞数、评论数、自己是否点赞等与某条朋友圈的关系,也是存储在RedisList里。
  虽然朋友圈内容是不会变的,但是点赞数和评论数目可是实时变化的哟。每一条朋友圈都会要获取这条动态获得了多少赞、有多少条评论、自己是否点赞。而这三个属性都是从Redis中读取出来的。也就是说如果这个接口返回了20条动态的话,我们需要调用203次60次Redis。这似乎也是不可以接受的,特别是有一些人好友比较多、互动比较频繁的,有时候还需要主动给用户推小红点提醒有新消息更新,这些人所在的机器性能就会告急。
  所以,微信的这道面试题提到了性能这个点。
  这里,可以可以考虑使用时间戳来标记上一次动态更新的时间。比如,当用户在发布新的朋友圈信息时,如果跟当前用户有新的互动(比如回复了你的评论、给你点赞了),上一次更新的时间戳就会发生变化,并主动更新到用户相关的各个RedisList里。当发现客户端发现上次更新的时间戳和本地时间戳不一样时,可以主动更新获取信息,否则保持不动。
  调整对象结构为用户IDamp;gt;〔状态,上次更新时间戳〕
  {‘10010’amp;gt;〔‘200101,’123453454’〕,‘10011’amp;gt;〔‘200102’,‘12345345435’〕,‘10021’amp;gt;〔‘200103,’12345345435’〕,‘10031’amp;gt;〔‘200104,’12345345435’〕}
  额,讲到这里,很多同学没看懂?
  看吧,产品经理懂一些技术还是好一点的吧。
  好了,以上是一位产品经理作为旁观者对微信朋友圈数据结构设计的一些思考,希望对大家思考有所帮助。许久不写技术文章,如有错误,欢迎留言指正。

孕妇防妊娠纹用什么孕妇防止妊娠纹用什么产品女性一旦怀孕后,随着孕期的推进,后期就会出现妊娠纹,这是很常见的一种情况,但是如果能在生活众多加注意,使用一下合适的产品,同样能帮助自己防止妊娠纹,孕妇防妊娠纹用什么比较好呢。……冷门创业项目不能做否则会血亏真相来了在寻找创业项目的道路上有那么一拨人他们总是在乐此不疲的寻觅冷门创业项目,总感觉冷门创业项目既好做又暴利,而事实上真的如此吗?有的人表示大家都知道的创业项目就不是冷门暴利的,而大……活着每天都要学习不管你想不想学那为什么有些方法你人活着,每天都要学习,不管你想不想学,你都得学,不然,很快你就落后了,社会的进步和变化太快,不跟上,不行~十几年前做销售,每天跑客户,要学会察言观色,人情事故,请客吃饭,……了解顾客了解他的兴趣爱好以便于沟通便于投其所好第一步骤:充分的准备充分的准备,包括4个方面的准备。1。体力的准备想让自己体力好,必须做一些体力上的训练。我十几年来研究成功学,总结出行之有效的方法(见《自己……重磅发布年公众号行业年榜来啦西瓜数据发布2019年微信公众号行业年榜,分别从广告价值指数、周期内公众号发文次数、发文篇数、总阅读数、平均阅读数、总点赞数、总留言数等方面进行展示公众号数据,这些维度的添加方……日本历史上最可怕的一次海难是哪一次只因一个错误的说起海难,大家肯定就会想到在19世纪初发生的泰坦尼克号游轮撞上冰山的这次海难事件。仅仅只在两小时后就彻底沉没了,这次海难死亡了1514人,是历史上最严重的海难之一。但是今天小编……女性经期早餐要怎么吃才好我们都知道,一日三餐中,早餐对于女性朋友们来说更加重要,它占到了一天营养中的一半,不得不重视,那么,生理期期间,女性朋友的早餐要如何安排呢?怎样吃最合适最健康?赶紧看过来,经期……什么是胎儿电子监护胎动是母体感觉到的最早的胎儿活动,也是产科医生用来观察胎儿是否良好的重要指标。伴随胎动所发生的胎心率加速,是胎儿健康的表现。胎儿电子监护仪就是监护胎心率的变化,评估胎儿在子宫内……流产后如何保养避免月子病对于未婚怀孕而又年龄偏低的患者群体尤其是学生来说,她们普遍的心理是恐惧和焦虑。她们既怕隐私被发现,不愿到大医院排队等候,又怕去小门诊手术不安全对身体造成不良损伤,在药流还是人流……艾姓男宝宝取名涵义好的根据之前在网上做的小调查,发现不少艾姓家长,想给自家男宝宝取一个拥有不错涵义的名字。那为了帮助大家能够有更多好的参考例子,这次我们就准备了一批三字名,或许这里面会有你喜欢的选项……哺乳期能足底按摩吗妇女朋友在哎哺乳期的时候可以适当的做一下足底按摩的。通过足底按摩对身体的机能有很好的调节作用,能让女性产后身体更快速的恢复。通过足底按摩可以舒缓身体紧张的感觉,还可以通经络,对……汉名将李陵为何会投降匈奴是无奈之举吗在公元前99年,李陵率领着5千步兵孤军深入到匈奴境内,与敌军十来万大军战斗了十多天。关于这场战役,其艰辛程度出乎常人想象,被逼无奈,其主将李陵只好投降。这场战争十分的惨烈……
童装消毒液能杀死哪些病毒无论是新衣服还是旧衣服,我们都一定要经过消毒之后才能穿,那么童装消毒液能杀死哪些病毒呢?童装该怎样消毒呢?下面本站就来讲讲相关的儿童服装安全小知识。童装消毒液可以消除很多……坐月子吃葱蒜有影响吗大家都知道,月子中的产妇对食物有许多的禁忌,长辈、亲朋好友总是不停面命这个不能吃,那个不能碰,小编的朋友正好刚生完小宝宝,突然提起说月子不能吃葱,相信有人也和小编一样迷惑。那么……便携式婴儿提篮多少钱提篮可以固定在汽车座位上,下车后可以提着行走,在家还可以单个使用,有的还可以安装到手推车上,不用担心看不到宝宝的情况,即使宝宝睡着了也无妨,便携式婴儿提篮多少钱呢?就让本站的小……学生宿舍的起火原因随着教育事业的发展,办学规模的逐年扩大,学生人数成倍增长,宿舍设施与学生供求矛盾愈加突出,相当数量的宿舍已多功能使用;随着人们生活水平的提高,各种电器已进入宿舍,学生生活、学习……老人用定位手机的注意事项随着科技的进步,时尚智能手机的发展越来越完善,现在人人都拥有一部手机已是很平常的事了,相对应的手机保护软件也越来越多了。就目前的手机定位功能的实用性很适合现在的人群。那么手机怎……怀孕长时间上网好不好在科技发达的现代社会,电脑已经成为家家的必需品,据统计,全中国的网民有1亿之多。电脑,让社会发展加速,当然也带来很多问题,有的人因为长时间坐在电脑前上网,导致腰椎、颈椎的问题,……哺乳内衣怎么放防溢乳垫防溢乳垫对于职场的宝妈们来说有着很重要的作用,现代社会女性在职场也发挥着绝对不可替代的作用,很多办公女性朋友刚生完宝宝不久就会回到工作岗位上。所以小编提醒繁忙的妈妈们可千万别忘……哪些床上动作可以帮助老年人抵抗疾病适当吃些有利于调节血压的滋补品,如人参、黄芪、生脉饮等。此外,适当喝些低度酒也可提高血压,下面来看看哪些床上动作可以帮助老年人抵抗疾病吧?1。仰卧双臂上举,双手交叉握拳,……老人肺结核后如何做好心理护理肺结核是由结核杆菌引起的慢性传染病。传染途径主要是呼吸道传播,其次是消化道传染。本病可分为原发型肺结核、血行播散型肺结核、浸润型肺结核、慢性纤维空洞型肺结核、结核性胸膜炎5个类……怎样自制户外炊具露营时该如何选择户外炉具是我们进行户外活动要了解的重要知识。烹饪本身就是一种乐趣,尤其是在户外活动或露营时,使用炊具给自己做一顿可口的饭菜,更是将幸福感提升到了最高。那么我们要……玻璃稳定器好吗稳定器又称扶正器,是稳定井下钻具,起防斜作用的工具。连接在靠近粗径钻具的一段钻杆柱上,用来稳定钻进方向的装置,是石油、天然气及地质勘探钻井工程中,防止井斜变化的重要工具。那么你……孕妈注意过度饮食是孕期糖尿病元凶妊娠糖尿病近年来正在逐年上升,除了孕妇高热量饮食、进补过度的因素外,一些人妊娠糖尿病的高危人群没有做到及早预防也是原因之一。那么,孕妈注意!过度饮食是孕期糖尿病元凶。跟着本站小……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网