筛选了项目之后,那么就是需要在项目经历下写 项目背景、个人职责、解决的问题、难点、自己的角色、自己的贡献、贡献的价值、最终的结果 这些方面;
    在讲解项目的时候需要有条理的列举出来
    我自己总结的是START方法
    S:situation 代表场景;例如项目背景、需要出发点、产品产生的场景等
    T:target 代表目标;例如需要解决的问题,要实现的目标,要达到的标准
    A:action 代表行动;例如自己是如何做的,为了实现功能做了哪些努力,如何一步步实现的
    R:result 代表结果;例如最终完成是什么结果,产生的效益是什么,有没有解决问题
    T:todo代表迭代;例如还有没有更好的方案,为什么使用这个,为什么这样实现,这样做有没有其他坏处,自己如何考虑的等等

    举个例子:
    一款app产品,本来不愠不火,突然赶上了风口,流量一下子就上来了,然后app打开速度变慢了,用户的体验不好了,运营同事接收的投诉反馈越来越多手忙脚乱。。。。
    然后你是项目的开发参与者,以高级工程师为例;leader或架构师拆解了多个维度去优化,你收到的任务的是优化app首页的打开速度,这个任务结合START展开来说如下:
    S:我们这款app是一款XXXapp,主要是给XXX用户提供XXX服务,这个是个历史项目,然后在XXX之后,流量疯涨,导致大量用户打开APP访问变慢,于是需要解决产生的这个问题,
    T:我这边负责优化app首页打开的速度,将响应时间控制在500ms以内,同时需要考虑到流量持续增长的情况,保证在XXX的QPS下依然能在500ms内响应,
    A:我先是接入了XXX系统(例如glowroot、pinpoint、skywalking等),观察接口的调用链路,阻塞情况,SQL执行情况等,找到瓶颈点,发现存在大量的慢SQL,于是进行慢SQL优化,同时发现这些SQL中发现大部分是查询SQL,并且是查询的数据基本上是不经常变的数据,于是考虑接入缓存,避免大量请求直接打到数据库;接入缓存之后,进行压力测试,通过监控系统发现存在大量日志block的现象,于是对日志进行修改,去掉无效的日志输出,并且将日志改为异步,在之后继续进行压测,发现还是达不到500ms返回的效果,于是考虑优化代码逻辑,发现好多非主流程业务都和主流程业务代码混在了一起,于是进行业务拆分,将非主流程业务代码抽离,使用异步的方式执行等(XXX,后面还可以从优化tomcat连接池、数据库连接池等继续优化,这些都是可以展开的)
    R:最后做完了上面的优化之后,继续进行压测,先是在测试环境进行的单机压测,使用的ab命令进行压测,最后在XXX的并发,XXX的访问量下,可以实现400ms的响应,支持XXX的QPS
    T:(tips:面试回答时,回答上面的STAR就可以了,这个T是用来应对面试官的提问的,这个更多是自己的思考,体现在平时的,当然准备面试的时候要考虑到这些
    例如上面用到了缓存,那么要考虑到面试官会问redis与memcache的区别怎么回答,引入了缓存,要考虑缓存与数据库一致性的问题怎么回答,代码中怎么体现的
    例如进行了SQL优化,要考虑到SQL优化的方法,思路,哪些切入点
    例如进行了代码优化,使用了异步,就要考虑到是使用了什么样的方式异步,是mq还是多线程?为什么选mq或者多线程?选mq的好处是什么?等等
    例如进行了Tomcat线程池优化,就要考虑到那些主要参数是什么含义
    例如进行了MySQL数据库连接池的优化,就要考虑到那些主要参数是什么含义
    例如进行了上面总体的优化,就要考虑到面试官会问,你还知道哪些优化的方面么等等)

    https://segmentfault.com/a/1190000040634318