最近部门招聘,很多工程师,包括我在内都参与了内推和面试的过程,经过这次招聘,我发现能够最终拿到offer的人,基本上在看到简历的那一瞬间就已经定下来了,后续的面试只不过是一种验证而已(注意,是验证,而不是走过场),除非你面试过程中犯错误,或者你不想来,否则,那个offer一定是可以拿下的。
那些拿下offer的人,基本上都有这么一些特征
1. 学校不错,一般都是985,211,如果学校一般,那么你下面的2和3满足的话,问题也不大。
2. 之前三年工作经验,都是在业内有些名气的企业,比如百度,IBM,腾讯,思科等等。国内的软件企业的工作经验往往认可度不高,甚至远远不如一些拿到了风投的创业企业的认可度高。当然,如果一家号称在创业的企业,却没有任何人投资,基本上也不要想得到认可了。
3. 职位级别,基本上都达到了高级工程师/高级测试工程师, Senior xxx Engineer的级别
4. 之前工作经验和当前职位要求都匹配,比如岗位要求Java的,候选人之前也是用Java的,岗位是iOS/Android的,候选人之前也是干这个的
但是,满足前面4点,三年经验也只能保证你能有P6的评级,不一定能保证P7的评级,那么,如何才能评到P7呢?以笔者观察到的案例,是否P7一条最关键的就是你是否业内有知名度。
之所以提到知名度,源于笔者认为,这一条对于候选人来说最容易提升,否则,你和现有的阿里的工程师去拼JVM实现,MySQL优化,毫无优势,面试官有什么理由给你那么高评级呢。
那么,如果我要拿P8呢?笔者郑重的提示读者,如果你亲自拜读了这篇博文,并且觉得收获匪浅,那么你肯定还没达到P8的要求,因为笔者所见的P8,在业界知名度,综合能力方面,都已经超越了我言语所能描述的地步,我这篇文章,对于他们来说,一点价值都没有。这种修养,绝对不是三到五年就能熏陶出来的。
再看看p8到底是个什么样的存在
知道了P8是个什么样的存在了
那回过头来 先弄清P7需要哪些具体的知识,我自己总结几张体系图;
01
阅读源码
程序员每天都和代码打交道。经过数年的基础教育和职业培训,大部分程序员都会「写」代码,或者至少会抄代码和改代码。但是,会读代码的并不在多数,会读代码又真正读懂一些大项目的源码的,少之又少。这也造成了很多错误看源码的方式。
那要如何正确的分析源码呢?
我们的目标应该放在最常用的框架上面,下面就介绍两个:一个是Spring,另一个是大家用来觉得一直不怎么出问题的Mybatis。
△spring源码
△mybatis源码
02
分布式架构
随着我们的业务量越来越大和越重要,单体的架构模式已经无法对应大规模的应用场景,而且系统中决不能存在单点故障导致整体不可用,所以只有垂直或是水平拆分业务系统,使其形成一个分布式的架构,利用分布式架构来冗余系统消除单点的故障,从而提高整个系统的可用性。同时分布式系统的模块重用度更高,速度更快,扩展性更高是大型的项目必不可少的环节。
03
微服务
关于微服务架构的取舍
在合适的项目,合适的团队,采用微服务架构收益会大于成本。微服务架构有很多吸引人的地方,但在拥抱微服务之前,也需要认清它所带来的挑战。需要避免为了“微服务”而“微服务”。微服务架构引入策略 – 对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。
04
性能调优
我们不仅仅对项目要运筹帷幄,还要能解决一切性能问题。只有深入学习JVM底层原理,Mysql底层优化以及Tomcat调优,才能达到知其然,知其所以然的效果。除了性能优化之外,也能提供通用的常见思路以及方案选型的考虑点,帮助大家培养在方案选型时的意识、思维以及做各种权衡的能力。
05
开发工具工程化
通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。程序员的战斗,往往不是一个人的战斗,我们如何在一个平台下高效的去重,进行代码review,对功能进行调整,debug,做到在统一的规划下步步为营,混乱的堆代码的过程中找到自己的记录。这一切都依赖于有效的工具。
06
项目实战
要想立足于互联网公司,且能在互联网浪潮中不被淹没,对于项目的开发实战演练是不必可少的技能,也是对自身能力的一个衡量,有多少的量对等于获得多少的回报。看似简单的一个项目需求图谱,其中的底层原理,实现原理又能知道多少?你搭建一个完整的B2C项目平台到底需要多少知识?这一切都是需要我们考量的。
欢迎工作一到五年的Java工程师朋友们加入Java架构开发:779792048
本群提供免费的学习指导 架构资料 以及免费的解答
不懂得问题都可以在本群提出来 之后还会有职业生涯规划以及面试指导
网友评论