我看了前几天些的博文,分析若干没面试机会和没体现实力的简历,就想起了作技术面试官时的一些往事。html
我见过有些简历,上面列出的项目描述很是高大上,好比用到了xx机器学习技术,或者在一个项目里基本用全了分布式组件,或者是项目名是xx金融量化系统。再看工做经历,每每就3年经验。而工做经验在5年左右的候选人,在简历中的项目描述每每就是比较朴实,通常见不到这类状况。java
在简历中,乃至在面试过程当中,项目描述每每仅仅是个载体,第一用来证实本身在项目里确实用到相关经验,第二能够用项目描述打下伏笔,在面试过程当中进一步展现本身的亮点。而项目自己的业务,面试官不关心。在本文里,就讲针对这些高大上的项目描述,来看下项目经历该怎么写,在面试中如何经过项目引出值钱技术。linux
可能有些候选人认为,在简历中,项目描述越接近当前热点(好比机器学习),就越能说明本身的实力,一些培训学校可能也用这些看似高大上的项目以及项目技术来包装优选人,但这属于过犹不及。你们能够换位思考一下。nginx
第一,若是就本科学历(有些甚至仍是大专),工做经验3年左右,接触到机器学习量化分析之类的模块可能性大不大?程序员
第二,好吧,话不能说死,若是有机会接触,好比这个项目里用到了机器学习算法,可否有盈利点?给客户用的时候会不会给客户带来风险?或者说,用这些模块须要踩很多坑,成本不会少,在这个项目里能不能收回成本?面试
第三,若是上述两点都能想办法解释通,那么在获得面试机会的时候能不能自圆其说,或者可否把相关技术讲清楚?很多候选人会卡在这块,好比我见过有人写了项目里用全了spring cloud组件,但问下来矛盾百出,甚至连eureka能干吗都讲不清楚,或者确实用到了机器学习的库,但仅仅是简单地调用了其中若干方法。总之,在面试中的表现和简历中的描述相差甚远。算法
好比某个外派岗位只要有找个能干活的程序员,哪怕经验只有2年,哪怕经验是从培训班里学到的也行,但若是简历上出现过于高大上而面试时却说不清楚,那么后果就是:存在虚假简历,这属于态度问题,可能会致使直接被fail。spring
再说一次:简历中的项目经验只要能反应能力便可,能够适度夸张,但夸张的程度得在本身的实践范围和能力范围内。 数据库
有些同窗确实很勤奋,了解过一些值钱的技术,这些能力也超越了平均水平,不写在简历里确实有些惋惜,为了打消面试官的疑虑,同时进一步证实本身,那么能够准备以下方面的回答。后端
第一,这个技术(好比分布式技术等)为何要用在项目里?不用有什么后果,或者是为了解决哪些痛点?
第二,引入这个技术后,给项目带来哪些好处?好比能提升并发性,能提高数据库访问性能等。
第三,结合项目需求,说下这个技术是怎么引入的,好比用到了哪些方法,作了哪些配置。
第四,得全面介绍相关技术,好比引入了MyCat分库分表,那么就得说下它的框架,重要类,重要配置,以及踩过的坑。
可能有些候选人想经过高大上的项目来证实本身的能力,但事实上会拔苗助长,由于在面试中更看重的是候选人的能力。而一些值钱的技术是加分项,能帮助候选人在可上可下的状况下面试成功,也能帮助候选人多要点工资,但仅此而已。
那么哪些是基本功呢?基本功有不少,这里我列些java后端高级开发必备的基本功。
1 Java核心,SQL数据库开发,框架,Linux之类的必备知识点。
2 从日志里分析问题和解决问题的能力。
3 经过 maven管理项目,经过Jenkins发布项目,经过sonar提高代码质量,诸如此类和项目业务无关但和项目发布管理有关的技能。
4 必要的性能调优的技能,必要的项目部署技能。
5 一些基于分布式组件的技能,好比netty,dubbo之类的。
可能讲到这里你们感受有些抽象,我经过一个面试中的实例来讲下基本功和加分项的关系。
有位候选人其实很上进,本科2年,计算机专业,专门报了培训班,从简历上看,以前项目里,用到多种分布式组件和大数据组件,好比dubbo,nginx,kafka,spark,面试时,在介绍项目经验时,也是信心十足,说业务,说技能,还抛出很多亮点,专等我来问,应该是获得了很好的面试辅导。
我先问亮点,好比spark在项目里怎么用的,如何同业务结合,用好之后能带来什么好处?这位候选人也能说得头头是道,并且还能经过画图写代码来讲明。不过在问java核心和SQL之类的基本问题时,回答不怎么好,好比hashcode方法就说不上,并且数据库方面只会增删改查,索引优化都没掌握好,更别提事务了。我有些不死心,毕竟亮点说得比较好,我又问了他们的项目是怎么发布的,他甚至说就在本地启动,用localhost访问,jenkins就据说过,没用过。这类候选人就属于华而不实了,后面我让我领导来面,最后结果我就不得而知了。
上文的主要内容是,别在简历中写一些超越本身能力的项目以及技能,并且项目不宜太花哨,这属于“不应作”。若是本文仅仅给出“不应”,而不推荐些“应该”的作法,文章的立意就低了,因此这里说下如何结合项目实际引出本身技能的方法。
项目不用高大上,能证实本身的能力就行,在简历上写项目经历这应该问题不大,把用到的技术列上去便可,但别仅仅写好简历就什么都不许备了。
最近面试java后端开发的感觉:若是就以平时项目经验来面试,经过估计很难——再论面试前的准备,在这篇博文里,我列了一些准备工做。口说无凭,最好是结合项目业务说下你掌握某技术,下面给出些结合项目的说辞,供你们参考。
1 好比虚拟机内存调优,理论谁都会,但若是某位候选人说,在xx项目的收单业务里,咱们经过zabbix监控工具发现内存用量居高不下,咱们就看了一些dump文件,也据此review了代码,发现存在Connection链接对象用好没关的状况,最后关掉后内存用量就下降了。
技能不算难,项目也不高大上,甚至我已经忘了项目名,但一旦结合业务讲了,可信度就大大提高了,并且说这话也就三言两语,不到一分钟。
2 好比项目部署发布方面,某候选人说,咱们项目是基于spring boot,发布在3台linux系统上,项目是用maven管理,咱们是经过jenkins打包,是用nginx作负载均衡,nginx的大体配置是xx,日志策略是一天一个文件,第二周把前一周的文件打成压缩包。在这种说辞里,是结合项目说明了项目发布部署的技能,项目和技能也很是朴实,项目里也只用到了一两种分布式组件,也没用全,但却能很是好地体现候选人的实力。
3 也能够经过一些项目里遇到的坑,来讲明本身掌握的技术乃至分析解决问题的能力,好比我听到某位候选人说,spring cloud组件里的服务治理eureka,若是一台机器down了,服务就找不到了,在项目里出现了这个问题,(结合实际说下),因而就引入了健康检查,而后再用两台eureka项目注册,再结合项目实际略微说下代码和配置的方式。用这种方式就能很好证实本身在项目里用过。
总之,面试时应该掌握哪些技术,这个大多数人应该都知道,我以前的一些博文也写了很多这方面的内容。刷些基本的面试题,这个也不难,但经过刷题只能证实本身掌握某种技术,而一旦结合项目说出,这就属于有实战经验,这二者的份量差异你们能感觉到。
写简历和面试的时候应该心平气和,别存在“用新技能唬住面试官”想法,这样本身反而能脚踏实地地准备面试中的说辞。
本文的重点是“如何结合项目说明技能”,而在本人其它博文里,也讲述过Java高级开发和架构师该掌握哪些技能,自认为也能造成体系。若是你们感受好的话,也请帮忙多多推荐。
有很多网友转载和想要转载个人博文,本人感到十分荣幸,这也是本人不断写博文的动力。关于本文的版权有以下统一的说明,抱歉就不逐一回复了。
1 本文可转载,无需告知,转载时请用连接的方式,给出原文出处,别简单地经过文本方式给出,同时写明原做者是hsm_computer。
2 在转载时,请原文转载 ,如要在转载修改本文,请事先告知,谢绝在转载时经过修改本文达到有利于转载者的目的。
3 我见过个别网友,经过对我博文的拼接和删减以达到作本身广告的目的,对此本人保留追究法律责任的权利。