- 相關推薦
微信產品經理面試題:朋友圈是如何設置信息圍欄的?
[核心提示] 朋友圈的基本數(shù)據(jù)結構設計是怎樣的?既能做到完美閱讀權限設置,又能兼顧性能?
原文:《騰訊微信產品經理面試題,你也來答答?》而在權限管理上,微信采用了給用戶打「標簽」來進行分組,這個標簽的分組與微信通訊錄一致。在數(shù)據(jù)上,就是給每個關系增加一個「標簽」標記。這里需要注意的是,雖然微信的關系在產品使用上給用戶是雙向的(即互相關注),但是在存儲的時候,是給互相關的兩個用戶分別建立了關系數(shù)據(jù),也就是每個人獨有自己的一份「通訊錄」。這通過刪除了自己的好友之后,自己并不從別人的通訊錄刪除就可以看得出來。標簽分組的基礎數(shù)據(jù)就是這樣了,這也是后面朋友圈權限管理的基礎。
對于個人朋友圈 timeline 所能看到的消息,按照一般的邏輯是先獲取所有朋友的消息,然后剔除掉沒有授權給自己看的消息、剔除掉自己屏蔽的用戶消息,然后才得到自己當前看到的 timeline。如果是這樣的邏輯的話,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通訊錄中朋友們的消息,還要對找到的每條消息去判斷用戶是否有權限閱讀。這顯然是效率低下的方式,更何況微信是這么大的一個訪問量和數(shù)據(jù)量。所以,這種數(shù)據(jù)結構設計是行不通的了。
對于個人朋友圈 timeline 所能看到的消息,按照一般的邏輯是先獲取所有朋友的消息,然后剔除掉沒有授權給自己看的消息、剔除掉自己屏蔽的用戶消息,然后才得到自己當前看到的 timeline。如果是這樣的邏輯的話,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通訊錄中朋友們的消息,還要對找到的每條消息去判斷用戶是否有權限閱讀。這顯然是效率低下的方式,更何況微信是這么大的一個訪問量和數(shù)據(jù)量。所以,這種數(shù)據(jù)結構設計是行不通的了。
發(fā)布時進行權限控制(示意圖,實際比這復雜)至于分庫分表這些就不展開了,知道有這么回事就行。有時候這種技術上的設計也是會限制產品的設計。那怎么證明上面說的合理呢?感興趣的同學可以去測試下:先發(fā)一條帶閱讀權限的消息,比如允許某個標簽的人看。然后再給這個標簽添加一個新人。結果是這個新人是看不到這條消息的,因為權限劃分是在發(fā)布的時候就劃分好了,新人加入標簽的時間是在發(fā)布之后,所以沒法獲得這條消息的權限分配機會,雖然他后來在標簽組中,但是仍然沒有辦法看到這條消息。作為一個微信設計的旁觀者,以上答案是作為一個用戶從系統(tǒng)分析的角度去考慮的,并不代表微信確實是這樣的一個設計思路,但答案中的方案已經盡可能做到了可以驗證。答案中也沒有涉及到具體的技術,僅僅是一個系統(tǒng)分析的思路。
http://m.ardmore-hotel.com/【微信產品經理面試題:朋友圈是如何設置信息圍欄的?】相關文章:
騰訊微信產品經理的面試題08-04
騰訊微信產品經理面試題08-10
如何從招聘信息中總結面試題08-21
如何快速面試APP產品經理的問題08-06
315微信朋友圈買到假貨如何維權08-06
產品經理英文求職信09-24
電腦如何設置硬盤啟動05-04
如何設置電腦下載密碼11-02
如何玩轉微信營銷-什么是微營銷09-25
微信營銷技巧-如何做好微信營銷09-25