本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利。
毕业生和初级程序员(一般是工作经验3年以下)大多处于事业的青黄不接的阶段,在找工作时往往会遇到缺乏实际项目经验的瓶颈,作为技术面试官,我也经常在面试过程中感受到这些候选人缺乏实际经验的缺陷。不过本人之前做过java兼职培训老师,也总结了些这批人群提升实际技能和面试技能的技巧,最近也老有人来问我这个,所以我就干脆把这写成博客文章。
一. 在校大学生最好积累些商业项目的经验,这样就能形成代差优势
公司一般会录用哪类人?我们把各种答案归纳成一句:需要技术匹配而且有相关项目经验的人,再简化一下,做过相关经验(一般是指商业项目经验,说再直白点就能挣钱的项目),那么用到的技术大多和公司要求匹配,也就是说,如果你有相关经验,那么和那些光有理论经验的候选人相比,就有代差优势,所以我在面试候选人时,经常会见到二本甚至三本大学生逆袭的场景。
如何积累商业项目经验?尽快开始实习,如果可以,大二暑假就可以找个软件公司打工了,如果你有老师在外有项目,那最好也一起做,如果学校安排实习,那更得去。如果实在找不到实习公司,或者也可以去一些网站接些商业项目的兼职活。
这里请注意,一般毕业设计的分量没商业项目的分量重,那如果你就只有毕业设计的经验,那只能和同样没商业项目的这群人一起竞争了。
代差优势能给你带来什么样的好处?
1. 在校招时,大多数人没商业项目经验,但你有,你的简历通过初审的可能性就非常大,而且在实际面试时,哪怕你算法基础知识等问题没回答好,但只要让面试官确信你做过商业项目,通过面试的可能性也比无商业项目的人群要高很多。
2. 在通过网站等形式投简历时,很多公司实际上是要有商业项目经验的,如果你没,甚至连面试的机会都没有,但如果你有实习等的商业项目经验,那至少你通过初选的可能性就大大提升了。
二. 走上社会后,在初级阶段,选定一个目标,这样项目经验就有积累
我在面试毕业生乃至初级程序员时,感觉有过实际项目经验的人非常少,(这就更验证了有经验的人相当有利),而且,这批人通过面试的可能性比3年左右的程序员要小很多。下面我来分析下这群人的普遍问题。
问题1:商业项目经验很少,所以简历甚至无法通过筛选,这样根本得不到面试的机会。
问题2:即使有些项目组因为着急要人,从而让一些初级程序员得到面试机会,但在面试过程中,这些人往往无法证明自己真的在项目中用过相关技巧,这些仅有理论经验的人通过面试的可能性非常小。
问题3:大多数初级程序员往往能通过准备,能知道算法、逻辑题和一些简单的说辞,无法证明自己掌握一些工作中必要的技能点,从而无法证明自己胜任这份工作。
上述问题的结果就是:在我手上通过面试的程序员,八成以上具有3年之上经验的,其实面试要求不难,能干活就行,但大多数的初级程序员就是没法证明这点。
针对上述问题,给出的建议是:学习和积累。
1. 给自己制定一个明确的目标,工作后3年内尽量少换,否则就得从头开始积累。
2. 比如目标方向是Java后端开发,那么在工作中,别得过且过,多跟组里的前辈学,多掌握些知识点。
3. 一定得围绕“性能优化”这个主题,比如内存性能优化,数据库优化,多掌握些项目中能用到的优化技能点。
4. 哪怕你最近不准备面试,但也得边工作边看面试题,最好定期出去面试下。毕竟每个人在学习过程中都会走弯路,用句比较流行的话来讲就是试错,通过不断的面试,能不断修正自己的学习方向。
三. 来点干货,在Java Core,java Web和数据库方面,一般公司的最近标准是什么
这些也是能找到工作的最低标准,Java Core的标准如下:
Java Web方面的要求点大致如下:
而在数据库方面,最低的要求体现在如下三方面的需求。
第一:针对一类数据库(比如MYSQL,Oracle,SQL Server等),会基本的增删改查操作,会用一些基本的函数,会编写存储过程触发器索引等工具。
第二:知道一些基本的对项目开发有帮助的概念,比如范式,索引,分区等。
第三:能编写一些相对复杂的SQL语句,比如带连接,带子查询,嵌套查询等。
我知道,其实大多数的初级程序员都知道上述知识点,但无法有效地在项目中证明这点,而且,我之前也说了,上述仅仅是最低要求,接下来给出的要点将大大提升各位的面试成率。
四. 通过简历证明自己在项目中用过相关知识点,面试时尽量找机会说出来
这里给出些准备简历时的注意要点。
1. 针对每份工作微调简历,在发给目标公司的简历中,多写些在该公司职位介绍时出现的关键字。
2. 少写不相干的工作经验,任何经验都往目标公司的职位要求上靠,比如目标公司的职位是java后端开发,你写一些linux上项目维护的经验或数据库DBA的相关经验尚属搭边,但如果写上测试或实施等经验,就属于不相干了。
3. 少写关于项目业务介绍的内容,因为目标公司不关心。
4. 这个是关键,一定得结合业务实际,写上自己有过相关技能的经验。
比如目标公司要求有数据库优化的经验,那你就可以写,在xx项目里,对sql的执行时间有要求,所以在订单管理模块里,我用到了xx技术,实现了sql优化效果。
类似的文字要多,涉及到的项目年限也请尽可能地长。这样当筛选简历的人和面试官看到你的简历时,不由得不信你第一有实践项目经验,第二在实践经验中用过相关技术。
而在面试时,技术面试官一定会问到职位要求里的相关技能,你事先得准备。如果你能在面试过程中有条理地说出你是如何在项目里用到相关技术的,那么这样的说服力要比你单纯说“你知道“要强很多,甚至有些面试官听到你的这些叙述后,会少问或不问相关问题。
五. 多准备些“你优于别人”的证据
这些证据可以出现在简历中,当然你更应该在面试中说出来。
我在面试中,往往会不得不从10个人符合要求的人里挑选出3人。(按我说10个人全要算了,但不行,预算不够)。这样如果某个候选人表现出优于别人的技能,那么这个人就一定是在同等条件里优先考虑的。
如下是Java Core方面可以准备的亮点。
在下表里,我们列了些在数据库方面可以准备的亮点。
下面列了Java Web方面可以准备的亮点。
此外,大家还可以在Linux使用技能以及项目管理软件的使用经验方面展示自己的亮点。这里请注意,一定找合适的机会“顺带”地说,如果没机会宁可别说,更不能仗着有所准备就直接自说自话地说。否则的话,反倒可能会得到“表达能力不清晰”或“叙述条理混乱”等的不良评价。
六. 总结
本文涉及到的点有些广,这里来总结下本文中提到的观点。
在校生尽可能早地积累些商业项目的经验。
工作后找准发展方向,然后通过不断的面试来调整自己的学习路线。
简历中的项目描述应该尽量与目标公司的需求一致,在面试中也应当尽量证明这点。
多积累些优于别人的优势。