• 【PM面试题】设计一个股价推送工具


    这一轮面试时间比较短,问题在短时间内不能很全面展开,因此抓住一些关键点变得尤其重要,这里我记录下当时是怎么想这个问题的。

    问题解析

    子问题1:推送什么?从问题中看出我们需要推送的是股价,用户可以自定义需要关注哪个公司的股价;更深一层思考,推送除了股价也可以有一些该股票历史趋势,未来走势分析,整个这类股票的大局走势以及该公司最近的新闻等;另外触发条件也可以衍生一下,既可以是由股价到达某个点出发,也可以在变化剧烈的时候触发,也可以在股价在一段时间内的均值达到某个值触发。

    子问题2:怎么推送?我们有一些传统手段如PC端的客户端或者浏览器插件推送或者使用邮件的方式推送,另外还有一些新的方式如移动端的短信、App通知推送、微信微博平台的消息推送等。

    重要特性

    1. 时效性:对于推送工具而言,及时性是很重要的一个指标,而对于财经推送工具而言时效性尤其重要。该指标可以通过实时性的股价监控和推送到用户的时间差来衡量。
    2. 个性化:每个人关注的股票以及对股价的期待值是不一样的,因此让用户可以自由定制自己需要得到的信息是很必要的一个feature。
    3. 信息干扰的避免:推送工具要特别注意会成为信息的干扰,因此对于推送信息的时段以及信息的多少要特别注意,在用户不熟悉的时候给出提示,在用户误设定的时候给出友情提示。

    系统框架图

    这是现场作答的手稿

    我用visio重绘了一下:

    系统由四部分组成:

    1. 数据库端:由不同新鲜度的数据库组成,分为实时数据库(秒级别),日存储数据库,永久存储数据库等。其中实时数据库用于监控实时的股价数据,日存储用于单日的分析,长时数据库用于分析股价的趋势。
    2. 触发器是由用户自定义的一些条件组成,可以描述为:用户ID...IF...Then...,触发器根据当前条件决定哪些需要出发,然后将这些放入存储器。
    3. 存储器中有历史的触发事件,也有待通知的触发事件,经过一个推送过滤器,确定该推送在用户的请求范围内,完成推送。
    4. 推送可以选择多种渠道,亦可由用户指定。

    关键技术难点

    在面试中遇到这个问题的时候有点慌,但是还是抓住了推送服务的一个根本:及时性。因此暂不考虑用户端因为网络问题或者环境问题造成的延时,服务器端信息的采集以及处理将会称为整个系统的瓶颈所在,提高这部分的吞吐将会极大提高系统的整体时效性,让信息第一时间到达用户手中。

     本文用菊子曰发布
  • 相关阅读:
    logback使用
    数据库阿里连接池 配置
    expect.js
    shim和polyfill有什么区别
    console.js还有浏览器不支持?
    vue项目如何实现剪切板功能--vue-clipboard2
    跟我一起使用webpack给一个开源项目添加一个运行入口
    Axure之添加点击页面
    Axure之母版窗口
    【react】react-reading-track
  • 原文地址:https://www.cnblogs.com/xweiwei/p/3350213.html
Copyright © 2020-2023  润新知