个人履历:某 211 院校科班本科,目前在 B 站实习。通过马哥写的开源项目 12306 铁路购票项目,成功拿下快手秋招!太开心了 之前答应过马哥,上岸后帮忙宣传一波这个项目,特来发布这个文章。在宣传之前,说下面试过程中都问过关于这个项目什么问题,基本上和马哥文档中写的想差不多,有个别不会的也都已经解决。快手面试官问到的关于项目问题如下:- 为什么会选择做 12306 这个项目?- 为什么要用设计模式?不用有什么问题?责任链模式优点是什么?- 12306 列车数据搜索用的 ElasticSearch 么?- 为什么列车数据搜索使用 Redis 而不是 ElasticSearch?- 列车站点余票如何保证实时?- 延期关闭订单,除了用 RocketMQ 还有什么方案?各自优缺点?- 如何解决用户注册缓存穿透问题?- 为什么不用缓存双删来解决数据库和缓存的一致性?- 多人购票选座算法是怎么实现的?(没写高铁在线购票,仅写了火车)- 如何保障购票时系统承载高并发而不出问题?- 为什么要分库分表?分库分表会带来什么问题?订单数据分库分表容量如何评估?- 订单按照用户 ID 分片,那乘车人如何查询本人车票?关于 12306 这个项目,架构图如图一所示。基本上涵盖了 SpringBoot、SpringCloud 相关技术亮点,比如:- 设计模式:责任链、简单工厂、策略、模板方法等- 缓存与数据库一致性- 分布式锁控制数据一致性- 数据库分库分表:用户、订单、支付等- 消息队列- 幂等解决方案::防止 HTTP 接口以及消息队列重复消费等项目地址:Gitee 开源平台下搜索 nageoffer/12306最后,也祝愿大家都能找到合适的秋招!
点赞 74
评论 40
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务