Skip to main content

为什么12306更适合学生

🚀 如何把12306项目“吃透”?

如果你正在为校招面试做准备,面临着简历上“烂大街”的项目,面试机会较少,或者希望将 12306 项目充实到简历中等问题,欢迎了解「拿个offer-开源&项目实战」知识星球。我们提供以下主要服务:

  • 面试服务:获取完整项目文档与教学视频,涵盖项目从零到一的启动方法,如何在简历中突显 12306 项目经验,项目亮点解析,以及分享包含 12306 面试真题的大厂面试经验。
  • 项目学习:向我1v1发起问题提问,包括但不限于 12306 项目,会认真对待每个问答;提供简历编写指南服务,同时使用星球内部公有云中间件环境,避免本地环境开发的繁琐配置。

学生为什么选 12306?

我的读者中有很多学生群体,他们反馈说实习和秋招的竞争变得非常激烈。大家的项目内容基本雷同,大多都是通过观看B站上的视频来学习并完成的。

这种情况导致学历一般的学生很难获得面试邀请。我之所以说学历一般的同学,是因为我也见过一些学历较好的同学只写了一些外卖和商城项目,但由于学历加持,他们能比较轻松拿到大厂的面试邀请。

如何判断一份学生的简历含金量怎么样?通常由以下项进行排序:

学校&学历 > 获奖经历 > 实习和工作经验 > 项目 > 证书 > 专业技能 > ......

在全体学生中,学校和学历以及获奖经历的比例相对较小。毕竟,出色的学校和重要的竞赛机会有限。对于更多的同学来说,他们只能在其他方面努力以展现自己的优势。

综合来看,项目经验是许多同学可以展现自己的重要领域。拥有出色的项目经验在简历上具有非常重要的意义。对于学历一般的同学而言,拥有优秀的项目经验可能会带来更多的面试邀请;而对于学历较好的同学而言,拥有出色的项目经验可能会使他们获得更好的公司机会。

为了实现这一目标,我决定选择一个能够在简历中成为亮点,引起面试官兴趣,并且大家熟知的项目——12306铁路购票系统。

为什么某外卖和商城面试邀约少?

为什么说某外卖和商城项目是面试邀约少,我总结了两点原因:

  1. 写这些项目的同学太多了。我向其他公司的朋友询问了下,大部分学生在投递简历时选择了类似的项目,这导致了一种"审美疲劳"的现象。为什么不选择一些具有个性的项目来丰富简历呢?此外,我还了解到一些公司的 HR 明确表示,带有商城或秒杀的项目简历基本上不会考虑。

  2. 学生们的回答都变得千篇一律。这让我想起了《邪不压正》中的一句台词:“都是一个师傅教的,破不了招啊。”放到这个情境下也同样适用,因为他们都是通过观看一个项目的视频来学习,所以回答几乎一模一样。甚至一些学历较好的同学写了这些项目也遇到了阻碍,他们问道:“为什么我写了这个外卖项目,但面试官却不怎么问呢?”原因也是一样的,被问得太多次了,再问也就那么回事了。

这些项目并不是不好。从初学者的角度来看,这些项目绝对够用了。教学老师的经验非常丰富,能够带领学生入门。这也是这些项目如此受欢迎的原因之一。

然而,随着计算机行业的不断发展,我们可以看到行业内竞争的不断加剧。从最早做过项目会写代码,到商城秒杀项目的流行,再到如今商城秒杀项目大众化的普及,这都是竞争激烈的体现。

如何破局?我认为,我们可以寻找那些小众但有亮点的项目,使我们的简历与其他同学的简历有所区别。想象一下,如果你是一个面试官,你会选择看那些千篇一律的简历,还是那些具有独特亮点的小众项目的简历呢?

项目质量怎么样?

我理解大家对选择一个合适的项目以投入时间和精力的担忧。选对项目既可以锻炼技能,又可以产出价值是非常重要的。

以用户服务系统为例,低并发和低数据量的系统相对简单,但高并发和海量数据的系统则需要考虑很多额外因素。

  1. 当用户在 12306 网站注册新账号或添加乘车人时,系统需验证用户提交信息的真实性和准确性。如何有效预防用户提交虚假信息,保障系统购票的安全?
  2. 12306 的大规模用户和乘车人数据如何选择分库分表?选择哪个字段作为分片键?如何在老业务上平滑上线分库分表?出现问题如何快速回滚?
  3. 系统支持会员使用用户名、手机号以及邮箱等多种方式进行登录。由于登录时无法确定用户的分片键,造成的“读请求扩散”问题如何解决?
  4. 在高并发的会员注册场景下,绝对会出现缓存穿透问题。网上鼓吹的对不存在 Key 进行缓存值设为 Null,以及布隆过滤器等都存在漏洞,如何解决?
  5. 存在较多的敏感信息,比如会员或者乘车人的姓名、手机号、邮箱、证件号码以及住址,如何防止数据库被攻击时造成的敏感信息泄露?

再以购票服务为例,当用户购买两个乘车人的高铁一等座票且没有选座时,座位的分配逻辑如下:

  1. 首先检查当前列车的一等座余票是否足够。如果余票不足,直接向客户端返回购票请求失败的响应。
  2. 获取所有车厢中有两个座位余票的车厢,并对这些车厢进行遍历,按照下述流程执行。
  3. 首先检查所有车厢中是否存在一等座车票的相邻座位。如果所有车厢中都没有相邻座位,进入下一步逻辑。
  4. 接着检查是否有车厢中包含两个不相邻的一等座座位?因为同车厢两座位相邻座位没有的话,就退而找同车厢不相邻座位。
  5. 如果以上逻辑都无法满足,那么最后选择分配不同车厢的不相邻座位。这种情况下,由于已经确认一等座的余票充足,因此一定能够成功完成购票。

通过以上步骤,购票系统能够在高铁一等座票余票充足的情况下,合理地分配座位,确保乘车人出行时有良好的座位体验。同时,如果余票不足,系统会优先满足乘车人顺利购票的需求。

技术架构

在系统设计中,采用最新 JDK17 + SpringBoot3&SpringCloud 微服务架构,构建高并发、大数据量下仍然能提供高效可靠的 12306 购票服务。

通过学习 12306 项目,不仅能了解其运作机制,还能接触最新技术体系带来的新特性,从而拓展技术视野并提升自身技术水平。

下方的架构图全面描述了项目的服务集合、组件库列表和基础设置层等要素,有助于用户快速了解 12306 平台的顶层设计和业务细节,从零到一进行构建。

常见问题答疑

Q:大多数同学都问过我一个问题,现在把 12306 项目写到简历上还来得及不?

A:根据星球中已经在面试的小伙伴反馈,基础还算可以的话,5-10天学习面试冲刺相关的,已经可以去参加面试。

Q:面向人群是学生,但是里面这么多的代码设计方案,学生能看明白么?

A:文档中准备了两部分资料,一部分是讲解技术实现细节,通过该部分可以很好掌握核心技术;另一部分是讲如何从零到一实现系统;通过两种文档结合,可以很好吸收 12306 系统中的设计。

Q:如何把 12306 项目写到我的简历上?

A:马哥在文档库最后给大家提供了 12306 写到简历上的亮点、难点以及解决方案。其次,通过 12306 去面试的小伙伴的面试题也会进行汇总,免费供大家学习使用。

Q:工作几年的有必要看 12306 这个系统么?

A:我觉得有必要,已经工作的同学虽然没办法把这个项目应用到简历上,但是系统中好的设计却是可以代入到自己的项目中,提高自己项目的亮点以及难点。