【PM面試題】設計一個股價推送工具

這一輪面試時間比較短,問題在短期內不能很全面展開,所以抓住一些關鍵點變得尤爲重要,這裏我記錄下當時是怎麼想這個問題的。php

問題解析web

子問題1:推送什麼?從問題中看出咱們須要推送的是股價,用戶能夠自定義須要關注哪一個公司的股價;更深一層思考,推送除了股價也能夠有一些該股票歷史趨勢,將來走勢分析,整個這類股票的大局走勢以及該公司最近的新聞等;另外觸發條件也能夠衍生一下,既能夠是由股價到達某個點出發,也能夠在變化劇烈的時候觸發,也能夠在股價在一段時間內的均值達到某個值觸發。面試

子問題2:怎麼推送?咱們有一些傳統手段如PC端的客戶端或者瀏覽器插件推送或者使用郵件的方式推送,另外還有一些新的方式如移動端的短信、App通知推送、微信微博平臺的消息推送等。數據庫

重要特性瀏覽器

  1. 時效性:對於推送工具而言,及時性是很重要的一個指標,而對於財經推送工具而言時效性尤爲重要。該指標能夠經過實時性的股價監控和推送到用戶的時間差來衡量。
  2. 個性化:每一個人關注的股票以及對股價的期待值是不同的,所以讓用戶能夠自由定製本身須要獲得的信息是很必要的一個feature。
  3. 信息干擾的避免:推送工具要特別注意會成爲信息的干擾,所以對於推送信息的時段以及信息的多少要特別注意,在用戶不熟悉的時候給出提示,在用戶誤設定的時候給出友情提示。

系統框架圖服務器

這是現場做答的手稿微信

我用visio重繪了一下:網絡

系統由四部分組成:框架

  1. 數據庫端:由不一樣新鮮度的數據庫組成,分爲實時數據庫(秒級別),日存儲數據庫,永久存儲數據庫等。其中實時數據庫用於監控實時的股價數據,日存儲用於單日的分析,長時數據庫用於分析股價的趨勢。
  2. 觸發器是由用戶自定義的一些條件組成,能夠描述爲:用戶ID...IF...Then...,觸發器根據當前條件決定哪些須要出發,而後將這些放入存儲器。
  3. 存儲器中有歷史的觸發事件,也有待通知的觸發事件,通過一個推送過濾器,肯定該推送在用戶的請求範圍內,完成推送。
  4. 推送能夠選擇多種渠道,亦可由用戶指定。

關鍵技術難點工具

在面試中遇到這個問題的時候有點慌,可是仍是抓住了推送服務的一個根本:及時性。所以暫不考慮用戶端由於網絡問題或者環境問題形成的延時,服務器端信息的採集以及處理將會稱爲整個系統的瓶頸所在,提升這部分的吞吐將會極大提升系統的總體時效性,讓信息第一時間到達用戶手中。

 本文用 菊子曰發佈
相關文章
相關標籤/搜索