精品国产一级毛片大全,毛片一级在线,毛片免费观看的视频在线,午夜毛片福利

我要投稿 投訴建議

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

時(shí)間:2023-02-19 09:53:49 面試試題 我要投稿

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

  丁香園CTO馮大輝曾發(fā)過三道產(chǎn)品經(jīng)理的面試題,題目是關(guān)于微信的,如下:

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

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

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

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

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

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

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

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

  對于個(gè)人朋友圈timeline所能看到的消息,按照一般的邏輯是先獲取所有朋友的消息,然后剔除掉沒有授權(quán)給自己看的消息、剔除掉自己屏蔽的用戶消息,然后才得到自己當(dāng)前看到的timeline。

  如果是這樣的邏輯的話,等于每次刷新朋友圈,都要跑到所有的消息池里面去找到上述通訊錄中朋友們的消息,還要對找到的每條消息去判斷用戶是否有權(quán)限閱讀。

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

  一般邏輯下朋友圈每次讀取的過程:

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

  在這里的思路就是:平時(shí)就把每個(gè)用戶需要的timeline數(shù)據(jù)按照權(quán)限設(shè)置準(zhǔn)備好,等到用的時(shí)候(刷新朋友圈)就直接讀取準(zhǔn)備好的內(nèi)容。

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

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

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

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

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

  發(fā)布時(shí)進(jìn)行權(quán)限控制(示意圖,實(shí)際比這復(fù)雜)

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

  那怎么證明上面說的合理呢?

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

  結(jié)果是這個(gè)新人是看不到這條消息的,因?yàn)闄?quán)限劃分是在發(fā)布的時(shí)候就劃分好了,新人加入標(biāo)簽的時(shí)間是在發(fā)布之后,所以沒法獲得這條消息的權(quán)限分配機(jī)會,雖然他后來在標(biāo)簽組中,但是仍然沒有辦法看到這條消息。

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

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

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

  在這個(gè)案例中,微信是一開始考慮到了還是迭代過來的并不重要,對于微信“朋友圈”來說,本來就是一個(gè)迭代產(chǎn)品,最早的權(quán)限管理是單獨(dú)于通訊錄的,那個(gè)時(shí)候是純插件的模式,現(xiàn)在才與通訊錄共用了分組模式進(jìn)行權(quán)限管理。

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

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

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

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

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

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

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

  首先刪除比寫入簡單多了,第二個(gè)是用戶timeline的數(shù)據(jù)可能還真不用刪除。具體原因就不解釋了,想知道的給我們留言單獨(dú)解釋。

  2、上述發(fā)布時(shí)的權(quán)限分配規(guī)則中會考慮屏蔽的人嗎?也就是問,如果一個(gè)用戶A屏蔽了某個(gè)人B的朋友圈,B發(fā)布的消息會進(jìn)入A的timeline的準(zhǔn)備數(shù)據(jù)中嗎(不是指用戶微信里看到的)?

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

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

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

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

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

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

  那么怎么驗(yàn)證上述關(guān)于屏蔽的邏輯是對的呢?

  上面我們在驗(yàn)證“發(fā)布時(shí)進(jìn)行權(quán)限分配”中講到了,后添加標(biāo)簽分組的人,是看不到之前發(fā)布的分組權(quán)限消息的。這里我們也可以通過類似的方法驗(yàn)證:把用戶屏蔽后,該用戶的消息全部看不到,但是取消屏蔽之后,又立即能在朋友圈中看到,包括之前發(fā)布的消息但沒有看過的消息。

  最后要說的是,作為一個(gè)微信設(shè)計(jì)的旁觀者,以上答案是作為一個(gè)用戶從系統(tǒng)分析的角度去考慮的,并不代表微信確實(shí)是這樣的一個(gè)設(shè)計(jì)思路,但答案中的方案已經(jīng)盡可能做到了可以驗(yàn)證。答案中也沒有涉及到具體的技術(shù),僅僅是一個(gè)系統(tǒng)分析的思路。

  很高興看到越來越多的產(chǎn)品經(jīng)理招聘開始注重技術(shù)能力了。前段時(shí)間各大互聯(lián)網(wǎng)公司的產(chǎn)品經(jīng)理校招也出現(xiàn)了不少“技術(shù)”相關(guān)的試題,說明業(yè)內(nèi)開始意識到技術(shù)能力對于產(chǎn)品設(shè)計(jì)的輔助作用。

  還是那句話,技術(shù)并不是產(chǎn)品設(shè)計(jì)必須的,但是能有的話效率會提升很多。

http://www.ardmore-hotel.com/

【微信產(chǎn)品經(jīng)理面試題】相關(guān)文章:

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

騰訊微信產(chǎn)品經(jīng)理的面試題08-04

騰訊微信產(chǎn)品經(jīng)理面試題08-10

最新騰訊微信產(chǎn)品經(jīng)理面試題07-27

Google產(chǎn)品經(jīng)理面試題07-28

微信產(chǎn)品經(jīng)理面試題:朋友圈是如何設(shè)置信息圍欄的?07-31

產(chǎn)品類面試題07-31

產(chǎn)品經(jīng)理英文求職信09-24

項(xiàng)目經(jīng)理面試題07-30