行业不景气~想换工作~感觉工作没法发展,工资没法提高~升职失败~受够了内向~...不管怎样究其原因,作为一名Java开发从业者,总会因为这样或那样的原因面临跳槽的选择,所以在跳槽之前,稳妥的做法是不要打无准备的仗;我认为第一步是考虑如何写你的简历;我先说说我的个人经历。我本科毕业,主修计算机科学。在大学的时候经常会折腾代码,写一些项目赚点外快。我做这个已经3年多了,结局挺尴尬的。付出了很多,最后以失败告终(太不容易了,所以我很佩服+尊重每一个还在创业,稍有起色的人,这些人确实很不容易~);失败后进了一家创业公司做技术总监,因为自己创业做外包什么都可以做(APP、小程序、网站、后台),所以技术上没有做不到的在一家小公司。只是缺乏深度,但创业公司很看重效率,完成大于完美,所以更多的玩法是解决问题,技术知识相对广泛但缺乏深度;感觉历史在重演(我自己的失败经历),技术也有限,当时的认知其实从现在开始就有限了,进入了迷茫阶段,所以打算换一个大公司去体验下;当时我提出辞职,然后一边准备交接一边准备投简历。我当时做的事情就是把自己做过的所有项目都列出来(脱敏),然后连大学拿到的奖项和证书都列出来。列出来,这是一个错误;**1.不要列出所有没有重点的项目。这种做法其实很不好,因为1.HR筛选简历的时候不会看重点,而且简历页数会很多,你可能没有耐心看完,很容易被刷了。2.即使偶然拿到面试官手里,面试官也很可能不会问所有的项目,因为时间有限。3.面试时间有限(一般40-60分钟),在有限的时间内,首先在面试开始,面试官要求自己做个人介绍,然后进行(基础知识+技术要点)+项目介绍+算法笔试),项目太多很容易让你的个人介绍显得啰嗦和没有重点,不介绍又会让面试官觉得这个项目可能不重要;4.真实情况是大部分面试官会让你选择一个你认为(最重要\最有挑战性\最有成就感\最难\印象最深刻等)进行,针对这种情况,**与其在面试现场做出选择,不如提前想好,对项目做一个筛选**,只保留项目的一部分,建议慎重考虑哪些作用比较突出,或者有方便面试的技术场景,或者高流量高并发~;比如在某个项目中做代码重构和解耦,应用设计模式结合具体业务场景解决问题,引入领域驱动的思想降低复杂度,提高研发效率,或者做内部技术共享等。团队价值或商业价值也不错;项目经验少的可以把业务实现、技术场景等梳理一下~**2.不会??的技术点尽量不要罗列。简历上的技术点一定要做到心中有把握,不要把自己没看懂的技术点罗列出来,因为有的面试官会把简历的技术点展开,问场景,问情况原则上,问优缺点或备选方案,问优点缺点~如果不小心碰到了,然后写在简历上,答得很烂,总会在一定程度上影响面试**3.明确简历中的项目。首先,简历上的项目你要负责,功能一定要写清楚,然后在一些具体的项目(比如电商项目,肯定会大概率要求并发,超买超卖)中具体场景,即使自己不实现,也可以实现。最好看懂功能实现的伪代码,这样才能熟能生巧**4、项目经验要好好利用,你的角色,你的贡献,你贡献的价值,以及最终的结果;在讲解项目时,需要有条不紊地列出来。我总结的就是START方法S:situation代表场景;例如,项目背景,起点,产品生产的场景等。T:target代表目标;比如要解决的问题,要达到的目标,要达到的标准A:行动代表行动;比如你是怎么做的,你为了实现功能做了哪些努力,是怎么一步步实现的RealizedR:result表示结果;比如最后的结果是什么,有什么好处,问题是否解决了T:todo代表迭代;比如有没有更好的方案,为什么要用这个,为什么要这样实现,这种方式有没有其他的缺点,我是怎么考虑的等等。举个例子:一个app产品本来不火的,一下子跟上了潮流,流量立马变大,然后app打开速度变慢,用户体验也不好,运营同事收到越来越多的投诉和反馈。..那么你是项目的开发参与者,以高级工程师为例;领导或架构师拆解多个维度进行优化,你接到的任务是优化app首页打开速度。本任务结合START展开如下:S:我们的应用是XXX应用,主要为XXX用户提供XXX服务。这是一个历史项目,XXX之后,流量暴涨,导致大量用户打开APP访问速度慢,需要解决这个问题。问,T:我负责优化app首页的打开速度,响应时间控制在500ms以内。同时还要考虑到流量的持续增长,保证在XXX的QPS下仍然可以在500ms以内响应。A:首先,我连接了XXX系统(比如glowroot,pinpoint,skywalking等),观察接口的调用链路,阻塞情况,SQL执行情况等,找到瓶颈点,发现本来有很多慢SQL,于是对慢SQL进行了优化,发现了这些SQL,发现大部分查询都是SQL,而且查询的数据基本都是不经常变化的数据,所以考虑访问缓存,避免大直接命中数据库的请求数;访问缓存后进行压力测试,通过监控系统发现有大量的日志块,于是修改日志,去除无效日志输出,将日志改为异步。之后继续压测,发现还是没有达到500ms以内返回的效果,于是考虑优化代码逻辑,发现很多非主流程业务混在主流程业务代码中,所以业务拆分,非主进程业务代码分离,异步执行等(XXX,还可以优化tomcat连接池,数据库连接后面继续优化池等,这些都可以展开)R:最后在上面优化完成后,继续进行压测,先在测试环境下进行单机压测,使用ab命令进行压测,最后在XXX并发下,XXX的访问量,可以做到400ms的响应,支持XXX的QPST:(**tips:回答面试的时候,回答上面的STAR就可以了,这个T是用来回答面试官的问题的,这个比较多吧是我自己的想法,反映在平时。当然,这些**是在准备面试的时候要考虑到的。比如上面用到了缓存,那么面试官就会问redis和memcache的区别怎么回答。缓存的引入应该考虑如何回答缓存和数据库一致性的问题,如何体现在代码中,比如SQL优化,应该考虑SQL优化的方法,思路,哪个切入点,比如代码优化,以便使用异步的时候,需要考虑使用什么样的异步方式,是MQ还是多线程?为什么选择mq或者多线程?选择mq有什么好处?比如你优化Tomcat的线程池,就要考虑那些主要参数的含义。比如优化MySQL数据库连接池,就要考虑那些主要参数的含义。例如,如果你进行上面的整体优化,你必须考虑到面试官会问,你知道哪些方面的优化等)嗯,上面是使用START方法的介绍项目的演示,那么应该如何你写在你的简历上?其实START说的比较书面化的可以分为以下(不一定是全部)几个方面;项目背景、个人职责、需要解决的问题、难点、自己的角色、自己的贡献、贡献的价值和最终的结果要和数据进行对比(当然要脱敏,不能泄露业务数据)。比如QPS提升了数倍,慢SQL清除等技术数据都不错。以上是我个人认为在准备简历中的一些方法,都是个人的经验。我有权与您分享和交流。你可以向他们学习。如果有什么不合适的地方,也可以留言交流反馈~我会在下一期写下我的推广经验,如何准备推广PPT才能顺利推广呢?下一期会写到面试过程中,如何提高面试官的好感度?后面会分享我的面授经验,知识点还在梳理中,到时候分门别类发表~本文由多帖博客平台OpenWrite发布!
