- 相關(guān)推薦
騰訊微信產(chǎn)品經(jīng)理筆試面試題
其中第二題是一道偏技術(shù)的問題,出現(xiàn)在產(chǎn)品經(jīng)理的面試中確實(shí)有點(diǎn)意外,但這題不失為一道很好的產(chǎn)品設(shè)計與系統(tǒng)分析的題目,
騰訊微信產(chǎn)品經(jīng)理筆試面試題
。系統(tǒng)分析也是我們“產(chǎn)品經(jīng)理學(xué)技術(shù)”系列文章規(guī)劃中的一個部分,也是將我們所講的技術(shù)進(jìn)行“升華”的一部分內(nèi)容。下面我們嘗試回答一下這個問題,算是拋磚引玉了,大家有好的答案也可以給我們留言進(jìn)行討論。
朋友圈的基本數(shù)據(jù)結(jié)構(gòu)設(shè)計是怎樣的?既能做到完美閱讀權(quán)限設(shè)置,又能兼顧性能?
關(guān)于消息的基礎(chǔ)數(shù)據(jù),比如文字、圖片、時間、位置等這些咱就不表了。這些數(shù)據(jù)基本上與權(quán)限和性能沒有多大關(guān)系,可以理解為單獨(dú)存儲,純技術(shù)活。這里只討論權(quán)限與性能相關(guān)的數(shù)據(jù)結(jié)構(gòu)。
而在權(quán)限管理上,微信采用了給用戶打“標(biāo)簽”來進(jìn)行分組,這個標(biāo)簽的分組與微信通訊錄一致。在數(shù)據(jù)上,就是給每個關(guān)系增加一個“標(biāo)簽”標(biāo)記。這里需要注意的是,雖然微信的關(guān)系在產(chǎn)品使用上給用戶是雙向的(即互相關(guān)注),但是在存儲的時候,是給互相關(guān)的兩個用戶分別建立了關(guān)系數(shù)據(jù),也就是每個人獨(dú)有自己的一份“通訊錄”。這通過刪除了自己的好友之后,自己并不從別人的通訊錄刪除就可以看得出來。標(biāo)簽分組的基礎(chǔ)數(shù)據(jù)就是這樣了,這也是后面朋友圈權(quán)限管理的基礎(chǔ)。
對于個人朋友圈timeline所能看到的消息,按照一般的邏輯是先獲取所有朋友的消息,然后剔除掉沒有授權(quán)給自己看的消息、剔除掉自己屏蔽的用戶消息,然后才得到自己當(dāng)前看到的timeline。如果是這樣的邏輯的話,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通訊錄中朋友們的消息,還要對找到的每條消息去判斷用戶是否有權(quán)限閱讀。這顯然是效率低下的方式,更何況微信是這么大的一個訪問量和數(shù)據(jù)量。所以,這種數(shù)據(jù)結(jié)構(gòu)設(shè)計是行不通的了。
一般邏輯下朋友圈每次讀取的過程
解決這種性能問題一般的思路就是把需要大計算量的過程分散到平時零散的時間去做,
資料共享平臺
《騰訊微信產(chǎn)品經(jīng)理筆試面試題》(http://m.dameics.com)。在這里的思路就是:平時就把每個用戶需要的 timeline數(shù)據(jù)按照權(quán)限設(shè)置準(zhǔn)備好,等到用的時候(刷新朋友圈)就直接讀取準(zhǔn)備好的內(nèi)容。那么答案就出來了:除了存儲一份上面講到的文字,圖片等基本信息外,還需要給每個用戶存儲一份timeline數(shù)據(jù),注意,是每個用戶一份。當(dāng)然,這里的“每份”不需要存儲完整信息,只需要存儲消息的ID和時間 (可能需要)。每個人刷新自己的朋友圈時,讀取自己的那份數(shù)據(jù)就行了,既不用去消息池子里面篩選,也不用判斷用戶權(quán)限。那是怎么實(shí)現(xiàn)權(quán)限控制呢?
當(dāng)一個用戶發(fā)布一條消息時會按照上面講的標(biāo)簽設(shè)置相關(guān)的權(quán)限,服務(wù)器就會給每個有權(quán)限接收這條消息的用戶的timeline中寫入這條消息。也就是在用戶發(fā)布的這一刻,就做好了權(quán)限安排,而不是等到讀取的時候。這樣就自然減少了讀取的時候的計算量,提高了效率。
發(fā)布時進(jìn)行權(quán)限控制(示意圖,實(shí)際比這復(fù)雜)
至于分庫分表這些就不展開了,知道有這么回事就行。有時候這種技術(shù)上的設(shè)計也是會限制產(chǎn)品的設(shè)計。
那怎么證明上面說的合理呢?
感興趣的同學(xué)可以去測試下:先發(fā)一條帶閱讀權(quán)限的消息,比如允許某個標(biāo)簽的人看。然后再給這個標(biāo)簽添加一個新人。結(jié)果是這個新人是看不到這條消息的,因?yàn)闄?quán)限劃分是在發(fā)布的時候就劃分好了,新人加入標(biāo)簽的時間是在發(fā)布之后,所以沒法獲得這條消息的權(quán)限分配機(jī)會,雖然他后來在標(biāo)簽組中,但是仍然沒有辦法看到這條消息。
這就是上面問題的答案,其實(shí)主要考察的是在產(chǎn)品設(shè)計時是否能夠考慮到技術(shù)方案的限制。我把上面的答案貼在知乎上,有人就問了:微信產(chǎn)品團(tuán)隊(duì)是在一開始設(shè)計就考慮到了這個問題,還是經(jīng)過不斷的迭代成現(xiàn)在這樣的?這是個好問題,好的產(chǎn)品經(jīng)理應(yīng)該在設(shè)計的時候就考慮到這種情況,或者至少應(yīng)該有相應(yīng)的預(yù)案,而不至于在出現(xiàn)問題或者被研發(fā)發(fā)難時束手無策。在這個案例中,微信是一開始考慮到了還是迭代過來的并不重要,對于微信“朋友圈”來說,本來就是一個迭代產(chǎn)品,最早的權(quán)限管理是單獨(dú)于通訊錄的,那個時候是純插件的模式,現(xiàn)在才與通訊錄共用了分組模式進(jìn)行權(quán)限管理。
如果對于上面的技術(shù)對產(chǎn)品設(shè)計的影響還不是很清晰的話,那么就再跟兩個問題(好的產(chǎn)品經(jīng)理除了能回答問題外,還要能提出問題^_^):
【騰訊微信產(chǎn)品經(jīng)理筆試面試題】相關(guān)文章:
騰訊產(chǎn)品游戲策劃筆試經(jīng)驗(yàn)10-27
騰訊產(chǎn)品及游戲策劃筆試題目10-09
騰訊WEB前端筆試題和面試題答案10-09
騰訊產(chǎn)品+游戲策劃筆試題目+經(jīng)驗(yàn)帖06-27
騰訊運(yùn)營筆試題10-08
產(chǎn)品經(jīng)理筆試題目07-16
騰訊校招筆試題08-08
騰訊技術(shù)綜合筆試題09-15