微信產(chǎn)品經(jīng)理面試題_第1頁(yè)
微信產(chǎn)品經(jīng)理面試題_第2頁(yè)
微信產(chǎn)品經(jīng)理面試題_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

微信產(chǎn)品經(jīng)理面試題

其中其次題是一道偏技術(shù)的問(wèn)題,消失在產(chǎn)品經(jīng)理的面試中的確有點(diǎn)意外,但這題不失為一道很好的產(chǎn)品設(shè)計(jì)與系統(tǒng)分析的題目。系統(tǒng)分析也是我們"產(chǎn)品經(jīng)理學(xué)技術(shù)'系列文章規(guī)劃中的一個(gè)部分,也是將我們所講的技術(shù)進(jìn)行"升華'的一部分內(nèi)容。

下面我們嘗試回答一下這個(gè)問(wèn)題,算是拋磚引玉了,大家有好的答案也可以給我們留言進(jìn)行爭(zhēng)論。

伴侶圈的基本數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)是怎樣的?既能做到完善閱讀權(quán)限設(shè)置,又能兼顧性能?

關(guān)于消息的基礎(chǔ)數(shù)據(jù),比如文字、圖片、時(shí)間、位置等這些咱就不表了。這些數(shù)據(jù)基本上與權(quán)限和性能沒(méi)有多大關(guān)系,可以理解為單獨(dú)存儲(chǔ),純技術(shù)活。這里只爭(zhēng)論權(quán)限與性能相關(guān)的數(shù)據(jù)結(jié)構(gòu)。

而在權(quán)限管理上,微信采納了給用戶(hù)打"標(biāo)簽'來(lái)進(jìn)行分組,這個(gè)標(biāo)簽的分組與微信通訊錄全都。在數(shù)據(jù)上,就是給每個(gè)關(guān)系增加一個(gè)"標(biāo)簽'標(biāo)記。

這里需要留意的是,雖然微信的關(guān)系在產(chǎn)品使用上給用戶(hù)是雙向的(即相互關(guān)注),但是在存儲(chǔ)的時(shí)候,是給相互關(guān)的兩個(gè)用戶(hù)分別建立了關(guān)系數(shù)據(jù),也就是每個(gè)人獨(dú)有自己的一份"通訊錄'。

這通過(guò)刪除了自己的好友之后,自己并不從別人的通訊錄刪除就可以看得出來(lái)。標(biāo)簽分組的基礎(chǔ)數(shù)據(jù)就是這樣了,這也是后面伴侶圈權(quán)限管理的基礎(chǔ)。

對(duì)于個(gè)人伴侶圈timeline所能看到的消息,根據(jù)一般的規(guī)律是先獵取全部伴侶的消息,然后剔除掉沒(méi)有授權(quán)給自己看的消息、剔除掉自己屏蔽的用戶(hù)消息,然后才得到自己當(dāng)前看到的timeline。

假如是這樣的規(guī)律的話(huà),等于每次刷新伴侶圈,都要跑到全部的消息池里面去找到上述通訊錄中伴侶們的消息,還要對(duì)找到的每條消息去推斷用戶(hù)是否有權(quán)限閱讀。

這明顯是效率低下的方式,更何況微信是這么大的一個(gè)訪問(wèn)量和數(shù)據(jù)量。所以,這種數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)是行不通的了。

一般規(guī)律下伴侶圈每次讀取的過(guò)程:

解決這種性能問(wèn)題一般的思路就是把需要大計(jì)算量的過(guò)程分散到平常零散的時(shí)間去做。

在這里的思路就是:平常就把每個(gè)用戶(hù)需要的timeline數(shù)據(jù)根據(jù)權(quán)限設(shè)置預(yù)備好,等到用的時(shí)候(刷新伴侶圈)就直接讀取預(yù)備好的內(nèi)容。

那么答案就出來(lái)了:除了存儲(chǔ)一份上面講到的文字,圖片等基本信息外,還需要給每個(gè)用戶(hù)存儲(chǔ)一份timeline數(shù)據(jù),留意,是每個(gè)用戶(hù)一份。

當(dāng)然,這里的"每份'不需要存儲(chǔ)完整信息,只需要存儲(chǔ)消息的ID和時(shí)間(可能需要)。每個(gè)人刷新自己的伴侶圈時(shí),讀取自己的那份數(shù)據(jù)就行了,既不用去消息池子里面篩選,也不用推斷用戶(hù)權(quán)限。

那是怎么實(shí)現(xiàn)權(quán)限掌握呢?

當(dāng)一個(gè)用戶(hù)發(fā)布一條消息時(shí)會(huì)根據(jù)上面講的標(biāo)簽設(shè)置相關(guān)的權(quán)限,服務(wù)器就會(huì)給每個(gè)有權(quán)限接收這條消息的用戶(hù)的timeline中寫(xiě)入這條消息。

也就是在用戶(hù)發(fā)布的這一刻,就做好了權(quán)限支配,而不是等到讀取的時(shí)候。這樣就自然削減了讀取的時(shí)候的計(jì)算量,提高了效率。

發(fā)布時(shí)進(jìn)行權(quán)限掌握(示意圖,實(shí)際比這簡(jiǎn)單)

至于分庫(kù)分表這些就不綻開(kāi)了,知道有這么回事就行。有時(shí)候這種技術(shù)上的設(shè)計(jì)也是會(huì)限制產(chǎn)品的設(shè)計(jì)。

那怎么證明上面說(shuō)的合理呢?

感愛(ài)好的同學(xué)可以去測(cè)試下:先發(fā)一條帶閱讀權(quán)限的'消息,比如允許某個(gè)標(biāo)簽的人看。然后再給這個(gè)標(biāo)簽添加一個(gè)新人。

結(jié)果是這個(gè)新人是看不到這條消息的,由于權(quán)限劃分是在發(fā)布的時(shí)候就劃分好了,新人加入標(biāo)簽的時(shí)間是在發(fā)布之后,所以沒(méi)法獲得這條消息的權(quán)限安排機(jī)會(huì),雖然他后來(lái)在標(biāo)簽組中,但是仍舊沒(méi)有方法看到這條消息。

這就是上面問(wèn)題的答案,其實(shí)主要考察的是在產(chǎn)品設(shè)計(jì)時(shí)是否能夠考慮到技術(shù)方案的限制。

我把上面的答案貼在知乎上,有人就問(wèn)了:微信產(chǎn)品團(tuán)隊(duì)是在一開(kāi)頭設(shè)計(jì)就考慮到了這個(gè)問(wèn)題,還是經(jīng)過(guò)不斷的迭代成現(xiàn)在這樣的?

這是個(gè)好問(wèn)題,好的產(chǎn)品經(jīng)理應(yīng)當(dāng)在設(shè)計(jì)的時(shí)候就考慮到這種狀況,或者至少應(yīng)當(dāng)有相應(yīng)的預(yù)案,而不至于在消失問(wèn)題或者被研發(fā)發(fā)難時(shí)束手無(wú)策。

在這個(gè)案例中,微信是一開(kāi)頭考慮到了還是迭代過(guò)來(lái)的并不重要,對(duì)于微信"伴侶圈'來(lái)說(shuō),原來(lái)就是一個(gè)迭代產(chǎn)品,最早的權(quán)限管理是單獨(dú)于通訊錄的,那個(gè)時(shí)候是純插件的模式,現(xiàn)在才與通訊錄共用了分組模式進(jìn)行權(quán)限管理。

假如對(duì)于上面的技術(shù)對(duì)產(chǎn)品設(shè)計(jì)的影響還不是很清楚的話(huà),那么就再跟兩個(gè)問(wèn)題(好的產(chǎn)品經(jīng)理除了能回答問(wèn)題外,還要能提出問(wèn)題^_^):

1、伴侶圈的消息為啥不能編輯,只能刪除?

我理解這是產(chǎn)品設(shè)計(jì)和技術(shù)實(shí)現(xiàn)平衡的結(jié)果。

編輯功能對(duì)于主要以發(fā)布照片和即時(shí)消息的伴侶圈來(lái)說(shuō),并不是剛性的需求。但是在上面的技術(shù)框架下,編輯功能在技術(shù)上,就不好實(shí)現(xiàn)。

詳細(xì)來(lái)說(shuō)就是:前面我們講了,權(quán)限的掌握是在發(fā)布的時(shí)候確定了,假如增加編輯功能的話(huà),意味著一旦用戶(hù)在編輯的時(shí)候調(diào)整了閱讀權(quán)限的話(huà),就需要將之前寫(xiě)入到有權(quán)限的用戶(hù)timeline的數(shù)據(jù)刪除掉,重新寫(xiě)入一遍,這對(duì)于技術(shù)實(shí)現(xiàn)來(lái)說(shuō),也是一個(gè)很大的成本,需要更新的數(shù)據(jù)許多(該條消息全部涉及到的用戶(hù)的timeline數(shù)據(jù)都要更新)。

所以,平衡的結(jié)果是寧愿讓用戶(hù)刪除了重新發(fā)布,也不供應(yīng)編輯的功能。

你可能又要問(wèn)了,刪除時(shí)就不用更新相關(guān)人的timeline嗎?

首先刪除比寫(xiě)入簡(jiǎn)潔多了,其次個(gè)是用戶(hù)timeline的數(shù)據(jù)可能還真不用刪除。詳細(xì)緣由就不解釋了,想知道的給我們留言單獨(dú)解釋。

2、上述發(fā)布時(shí)的權(quán)限安排規(guī)章中會(huì)考慮屏蔽的人嗎?也就是問(wèn),假如一個(gè)用戶(hù)A屏蔽了某個(gè)人B的伴侶圈,B發(fā)布的消息會(huì)進(jìn)入A的timeline的預(yù)備數(shù)據(jù)中嗎(不是指用戶(hù)微信里看到的)?

先說(shuō)一下我的答案:在發(fā)布時(shí)的權(quán)限掌握是不會(huì)考慮屏蔽的人的。前面我們講了,在消息發(fā)布的時(shí)候,服務(wù)器會(huì)依據(jù)用戶(hù)設(shè)置的權(quán)限信息,將消息有選擇的放到有權(quán)限閱讀人的timeline中。

假如這個(gè)時(shí)候需要考慮屏蔽的人的話(huà),那就還要去讀取每個(gè)有權(quán)限閱讀的人的屏蔽人清單,然后依據(jù)每個(gè)人的清單去打算是不是放到這個(gè)人的timeline中,明顯這又會(huì)增加多大的計(jì)算量。

那么有人就要問(wèn)了,那怎么實(shí)現(xiàn)屏蔽的功能呢?

兩種方法實(shí)現(xiàn),一種是在這個(gè)用戶(hù)刷新伴侶圈時(shí),將讀取到的自己的那份timeline數(shù)據(jù)(含屏蔽人的消息),在服務(wù)器端過(guò)濾掉屏蔽人的消息。

另外一種則是讀取的時(shí)候,服務(wù)器端根據(jù)原樣下發(fā)給客戶(hù)端,客戶(hù)端依據(jù)存儲(chǔ)的屏蔽清單來(lái)過(guò)濾,被屏蔽的則不顯示給用戶(hù)。

兩種方法在實(shí)現(xiàn)效率上幾乎沒(méi)有差別,通過(guò)對(duì)于微信的使用體驗(yàn)來(lái)看,我傾向于這個(gè)是由客戶(hù)端來(lái)過(guò)濾的。實(shí)際這也可以有方法去驗(yàn)證,這里就不做了。這種屏蔽方案也是基于上面提到的"把需要大計(jì)算量的過(guò)程分散到平常零散的時(shí)間去做'。

那么怎么驗(yàn)證上述關(guān)于屏蔽的規(guī)律是對(duì)的呢?

上面我們?cè)隍?yàn)證"發(fā)布時(shí)進(jìn)行權(quán)限安排'中講到了,后添加標(biāo)簽分組的人,是看不到之前發(fā)布的分組權(quán)限消息的。這里我們也可以通過(guò)類(lèi)似的方法驗(yàn)證:把用戶(hù)屏蔽后,該用戶(hù)的消息全部看不到,但是取消屏蔽之后,又馬上能在伴侶圈中看到,包括之前發(fā)布的消息但沒(méi)有看過(guò)的消息。

最終要說(shuō)的是,作為一個(gè)微信設(shè)計(jì)的旁觀者,以上答案是作為一個(gè)用戶(hù)從系統(tǒng)分析的角度去考慮的,并不代表微信的確是這樣的一個(gè)設(shè)計(jì)思路,但答案中的方案已經(jīng)盡可能做到了可以驗(yàn)證

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論