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