我用12306项目拿下快手秋招!

个人履历:某 211 院校科班本科,目前在 B 站实习。

通过马哥写的开源项目 12306 铁路购票项目,成功拿下快手秋招!太开心了 

之前答应过马哥,上岸后帮忙宣传一波这个项目,特来发布这个文章。

在宣传之前,说下面试过程中都问过关于这个项目什么问题,基本上和马哥文档中写的想差不多,有个别不会的也都已经解决。

快手面试官问到的关于项目问题如下:
- 为什么会选择做 12306 这个项目?
- 为什么要用设计模式?不用有什么问题?责任链模式优点是什么?
- 12306 列车数据搜索用的 ElasticSearch 么?
- 为什么列车数据搜索使用 Redis 而不是 ElasticSearch?
- 列车站点余票如何保证实时?
- 延期关闭订单,除了用 RocketMQ 还有什么方案?各自优缺点?
- 如何解决用户注册缓存穿透问题?
- 为什么不用缓存双删来解决数据库和缓存的一致性?
- 多人购票选座算法是怎么实现的?(没写高铁在线购票,仅写了火车)
- 如何保障购票时系统承载高并发而不出问题?
- 为什么要分库分表?分库分表会带来什么问题?订单数据分库分表容量如何评估?
- 订单按照用户 ID 分片,那乘车人如何查询本人车票?

关于 12306 这个项目,架构图如图一所示。基本上涵盖了 SpringBoot、SpringCloud 相关技术亮点,比如:

- 设计模式:责任链、简单工厂、策略、模板方法等
- 缓存与数据库一致性
- 分布式锁控制数据一致性
- 数据库分库分表:用户、订单、支付等
- 消息队列
- 幂等解决方案::防止 HTTP 接口以及消息队列重复消费等

项目地址:Gitee 开源平台下搜索 nageoffer/12306

最后,也祝愿大家都能找到合适的秋招!
全部评论
我感觉不久后应该是继瑞吉外卖后,第二大项目组
23 回复 分享
发布于 2023-08-07 18:19 四川
大佬牛批,我也准备用这个项目,目前学习阶段,期望顺利上岸
17 回复 分享
发布于 2023-08-07 12:21 北京
文档很多都不全吧,有的都还没写
14 回复 分享
发布于 2023-08-08 09:15 江西
看到挺多人发拼车,但接到有同学反馈,这种就是卖盗版资料的,很多都不全,支付完就删好友,注意别被骗了
9 回复 分享
发布于 2023-09-09 22:22 北京
你不会就是马哥吧
6 回复 分享
发布于 2023-08-07 19:27 四川
求链接
3 回复 分享
发布于 2023-08-07 21:52 北京
m
3 回复 分享
发布于 2023-08-07 12:48 陕西
代码注释少的可怜,刚转码看不懂一点。新建了个Q群631(防审核、故拆开),大家愿意可以进090,讨论拼车都可以175。希望能钓到大佬
2 回复 分享
发布于 2024-08-31 18:41 广东
大佬花了多久?9月了不知道换项目来不来得及
2 回复 分享
发布于 2023-08-28 15:09 浙江
大佬怎么包装的,直接说仿12306吗
2 回复 分享
发布于 2023-08-07 17:28 北京
感觉主要还是有实习
1 回复 分享
发布于 2023-10-31 09:52 广东
博主你好,这个项目的课在哪买呢,还是只有gitee上的的开发文档
1 回复 分享
发布于 2023-10-29 15:51 广东
目前只学了ssm和springboot做这个项目够吗,还是先做其他简单一点的
1 回复 分享
发布于 2023-10-28 11:35 重庆
这个项目有视频吗?看了下好像没,跟着代码有点理不清楚
1 回复 分享
发布于 2023-09-27 11:07 上海
dalao简历上除了这个项目还写了其他项目吗?
1 回复 分享
发布于 2023-08-22 16:26 广东
兄弟,我想问下现在开始做大概多久能做完?
1 回复 分享
发布于 2023-08-14 18:54 陕西
大佬怎么学的??没有更完,几个部分代码都不完善
1 回复 分享
发布于 2023-08-14 18:31 广东
卧槽大佬
1 回复 分享
发布于 2023-08-07 18:14 江苏
m
1 回复 分享
发布于 2023-08-07 17:48 北京
不愧是合工大
1 回复 分享
发布于 2023-08-07 16:33 北京

相关推荐

问题1:为什么会使用分库分表,到达了什么样的数据级别才会去加设计,是否对数据量有一个统计我的理解:看星哥之前写过 单表行数超 500 万行或者单表容量超过 2GB,推荐分库分表,但是面试的过程中怕被问自己写的项目会有这么大的数据量吗不要这么硬背,具体情况具体分析,有的表字段少,经常是条件等值查询,这样加个索引,一个亿也不用分表,有的字段多,还是范围查询,可能5000万就得分表,面试官问你你说是自己在学习分库分表应用到项目中,自己造了几千万的数据量问题2:基因法需要分表的一个数量和确定的一个东西(我的理解是分表的依据,例如大麦中是订单编号和用户id),但是正常的生产环境中是可能动态改变的,比如说需要动态扩容的话,怎么解决呢(例如当前有4个分表,但是现在需要扩充到8个分表),是使用双写吗?这个在扩容前就要考虑好能维持多少年内不需要再扩容。转转架构师在分库分表前,通过之前记录的数据增长量,做了256张表,能在7年内不需要再扩容,如果需要扩容的话,可以使用双写,新扩容表写的过程中,用新的分库分表算法问题3:如果在防止超卖的过程中,Redis不可用了,怎么解决我的理解:使用Redis集群和主从复制吗?因为Redis宕机的话数据库的数据也不能保证是最新的版本,所以得尽量保证Redis不宕机?肯定要使用redis集群模式,但可能会有主从延迟,导致从节点数据不是最新的,但关系不大。可以在用户生成订单后,修改数据库的座位和库存,然后用户支付后,再改数据库的座位和库存,每一步都做好验证。这样从节点的数据问题会降到最低。问题4:如果在当前的幂等验证逻辑中,有一个消息所对应的幂等标识符是不存在的,按照现有的逻辑是可以执行的,但是幂等验证之后的业务系统异常了,这个时候应该怎么处理呢(即通过了幂等的验证,但是后面的服务down掉了,比如说下游抛了一个异常出来)【没太明白应该回答什么,是指需要将幂等标识符重新进行设置吗】异常了就异常了呗,把这个请求的标识从redis中删除了,就像分布式锁时,业务异常也要执行解锁一样,让下一个请求进来正常执行,然后设置好标识位问题5:本地缓存为什么使用Caffine呢,为啥不用Guava因为caffine的性能要远高于Guava,没有其他复杂原因我的理解:查了下Caffine就是Guava改进而来的,可以这么说吗- Caffine在读写操作方面的性能更高,是基于异步的操作,将淘汰过期操作与读写进行分离- Caffine采用了一种结合 LRU、LFU的算法W-TinyLFU+,具有高命中率,低内存占用的特点
查看5道真题和解析
点赞 评论 收藏
分享
评论
80
522
分享

创作者周榜

更多
牛客网
牛客企业服务