项目背景
项目背景,指的就是交待清楚你的项目是做什么的,拉平你和面试官的信息差异,让他知道这个项目是做什么的。项目背景说不清楚,连共同基础都没有,更深的问题就更不用讲了。
在交待项目背景的时候,可以将一些项目亮点写上去,例如:项目 QPS 多少等。如果是重构类的项目,那么可以交待一下存在的问题,方便后续讲「项目职责」的时候,呼应自己的成果。
就以树哥做过的一个消息中台的项目为例,我写的项目背景介绍如下,大家可参考一下。
项目背景:原有邮件、短信、 Push、站内信、 WhatsApp 等消息服务相互独⽴,存在多语⾔模板内容⽆法集中管控、多地区运营商⽆法灵活调整、重复对接第三⽅服务商、各地区⽆法个性化定制发送内容等问题。
为了能更好地适应公司未来⼀段时间的发展,我主导设计了消息中台的技术架构,实现了多语⾔模板统⼀管理、多地区运营商账号统⼀管理,帮助运营零代码改动实现个性化的本地运营。⽬前⽇均发送消息 10 亿条, QPS峰值达到 3000 次/秒。
项目技术
项目技术这块,主要是为了方便简历阅读者快速知道项目用到的技术。这块没啥好说的,直接把用到的技术框架列一列就得。还是以消息中台的项目为例,介绍如下。
项⽬技术:Spring Boot、 Resty-Pass、 Consul、 MyBatis、 Redis、 Kafka、 xxl-job、 MySQL。
项目架构
讲完了项目背景和项目技术,接下来就是要把你的项目架构讲清楚。
那么什么是项目架构呢?
简单来说,项目架构,就是你的项目是怎么组成的。
例如如果你是中台,那这个中台是怎么搭建的。请求是如何进来,经过哪些层级,又怎么出去的?例如我做过的一个消息中台,就分为网关层、处理层、渠道层。
如果是业务系统的话,那描述下整体的架构。例如服务之间用什么搭建,是否用到消息队列解耦异步。用户请求进来先到哪里,再到哪里,最后到哪里。这样一梳理,你的项目架构就出来了,然后挑一些重点的项目块说说。
还是以消息中台项目为例,我是这么写的:
项⽬架构:消息中台架构上主要分为三层,分别是:⽹关层、消息处理引擎层、通道层,模块之间采⽤Kafka 消息队列解耦。
第⼀层是⽹关层,负责对外提供统⼀的消息发送服务。⽹关收到消息后会对请求做参数校验、权限校验等操作。处理完成后将消息丢⼊消息队列,等待下游处理。
第⼆层是消息处理引擎层,负责对消息进⾏多语⾔渲染、多地区账号匹配,获取发送所需的模板、账号等信息。处理完成后将消息分批次丢⼊消息队列,等待下游处理。
第三层是通道层,通道层包括邮件、短信、 Push、站内信等,通道层负责将消息发送给⽤户。此外,消息中台还包括消息中台开放平台、管理后台等相关联应⽤。
梳理到了项目架构方面的内容了,那你自然也要清楚项目是如何部署的,是用容器化部署,还是用传统的方式部署?生产的流量怎么样?接口的响应时间是多少?TP99是多少?这些都是需要准备好的。
项目职责
项目职责,主要是梳理你负责的内容。很多小伙伴会一股脑写自己做的内容,但实际上写这块内容也是有技巧的,要按照「你负责什么,做出什么成果,有什么数据支撑」的思路来写,这样才会让别人觉得你做了一些事情。
还是以消息中台为例子,大家可以参考一下。
项⽬职责:作为技术负责⼈,与产品梳理原有业务,设计并落地整个消息中台技术架构。在不影响原有业务情况下用 2 个月快速落地,随后快速迭代新功能。
在 6 个月内将原有上游迁移到新系统,接入系统到 50 个,新系统接入效率提高 75%。接入一年后,消息发送量达到日均 10 亿条,QPS 最高达到 3000 次/秒。
虽说要有亮点,但是里面用到的每个数字,你都要能说出个所以然,不能到时候一问三不知哦。
项目亮点
项目亮点,指的是项目中有哪些做得不错的点。
不同项目可能不一样。对于高并发项目来讲,高并发可以成为一个亮点。对于普通的 B 端项目而言,大批量数据导出也可以是一个亮点。因此,并非一定要高并发才能有亮点。
对于项目亮点来说,由于篇幅限制,我一般不会单独写,而是融入到其他方面中,例如融入到背景介绍、项目职责中。随后在面试的时候,有机会就展示这些亮点,随后就说出自己是怎么解决这些问题的。
总结
对于自己做过的项目,如果你能从「项目背景」、「项目技术」、「项目架构」、「项目职责」、「项目亮点」这 5 个方面来梳理项目,那么基本上你就会很清晰,项目的整体框架就搭建起来了。剩下就可以直接去面试,根据面试结果查漏补缺了。
但如果这不是你自己做的项目,这时候你还需要做一件事情 —— 实操。就是把这个项目自己搭个 demo 出来,然后把所有你提到的亮点所涉及到的知识点都做一遍,这样才能无线接近于实操。