本来想分享毕业生和初级程序员如何进大公司的经验,但后来一想,人各有志,有程序员或许想进成长型或创业型公司或其它类型的公司,所以就干脆来分享些提升技能和通过面试的技巧,技巧我讲,公司你选,两厢便利。
毕业生和初级程序员(一般是工作经验3年以下)大多处于事业的青黄不接的阶段,在找工作时往往会遇到缺乏实际项目经验的瓶颈,作为技术面试官,我也经常在面试过程中感受到这些候选人缺乏实际经验的缺陷。不过本人之前做过java兼职培训老师,也总结了些这批人群提升实际技能和面试技能的技巧,最近也老有人来问我这个,所以我就干脆把这写成博客文章。
大概是从2019年开始,我有幸也成为了一名面试官,开始慢慢积累一些面试的经验。我面过初出茅庐的应届生,也面过岁数比我大、工作10年左右的老司机。感谢每一场面试,从中我学习到了很多东西。同时,我也很想分享一下关于面试的经验,以下是个人拙见。
1.每一次面试都是一场技术交流。我通常会根据面试者的节奏来选择是否追问一些问题,深度会根据工作年限和面试者谈吐出的熟练程度来定,不会太强人所难。
举例:
。。。
诸如此类的一些问题
(以上偏向中级。)
是不是不算太难?这些很多都是实际工作中会遇见的问题。并不算太深,个人觉得这些都应该是工作两三年应该掌握并具备的东西。
我不太会直接天马行空的去问你知道xx吗?你会xx吗?你使用过xx吗?这样太过于僵硬。
2.除了技术能力以外,我以为处事解决问题的能力是至关重要的。这里一是指对待领导对待同事处事圆滑的能力,二是遇见问题独立解决的能力。我一般会抛出工作实际会出现的情况看看面试者如何来应对
举例:
很多时候你提交的bug,在开发看来,他觉得这不是一个bug,这个时候你会怎么办?
基于国内IT现状,大多数公司项目紧张,人员缺少,需求和原型文档不完善,你如何来保证待测软件或系统的质量?
这些都是开放性的问题,没有标准答案。这个时候你就可以发现工作1年和工作5年的表述会有有所不同。
3.总的来说,工作能力应与工作年限匹配。比如5年应该有5年的经验和知识储备深度。对于公司来说若1年和5年没有区别(尤其是业务大家都能做,技术都差不多),那公司肯定会选择1年的。
1.已经过了随随便便的年纪了,我投递的公司通都是经过阅读查看筛选的,哪些是该去的,哪些不该,哪些是符合自己的,哪些不符合,心里都有分寸,不会一键投递。一键投递收到的面试邀请虽多,但坑也很多。真的很多。
2.有些时候面试一直没过,一两个月下来没有结果的确搞人心态,我也有过这种低谷。这个时候需要正确对待自己,并评价自己的价值。不要降低姿态,同时也禁止高傲。
3.尽可能调低状态,尽可能多说,多表现自己。往自己熟悉的方向多说,不清楚或者模棱两可的宁可不只字不提,也不要为了表现知识广度而主动引出导致踩雷。
1.写好的自己简历,简历真的很重要。不要太长,也不要太简洁。着重突出你的能力和能力对应的实战经验。(关于简历多啰嗦几句,不一定对,但某些情况下真的是这么一回事儿)
2.想好你的自我介绍,不要少于1分钟,不要大于3分钟。你的自我介绍少于1分钟,肯定是说不清楚你的能力和经验的,这个时候面试官就会从他自己想了解的方向提问。开局1分钟,你丧失了面试节奏主动权。
3.认真阅读招聘JD上的需求,上面的技能,你真的会吗。是的,要全部符合要全部符合要全部符合。
查询面试公司的背景和主营业务以及业务领域,提前先了解对方,若能在面试中主动聊一聊对面业务和产品,也是会给面试官增加印象分的。
4.状态要低(这里指谦卑),千万别夸大吹牛,你要知道面试官之所以能坐在你对面当你的面试官,那肯定是有一定的道理的。不要挑战面试官的底限,最后发现小丑竟是自己。
公司一般会录用哪类人?我们把各种答案归纳成一句:需要技术匹配而且有相关项目经验的人,再简化一下,做过相关经验(一般是指商业项目经验,说再直白点就能挣钱的项目),那么用到的技术大多和公司要求匹配,也就是说,如果你有相关经验,那么和那些光有理论经验的候选人相比,就有代差优势,所以我在面试候选人时,经常会见到二本甚至三本大学生逆袭的场景。
如何积累商业项目经验?尽快开始实习,如果可以,大二暑假就可以找个软件公司打工了,如果你有老师在外有项目,那最好也一起做,如果学校安排实习,那更得去。如果实在找不到实习公司,或者也可以去一些网站接些商业项目的兼职活。
这里请注意,一般毕业设计的分量没商业项目的分量重,那如果你就只有毕业设计的经验,那只能和同样没商业项目的这群人一起竞争了。
在校招时,大多数人没商业项目经验,但你有,你的简历通过初审的可能性就非常大,而且在实际面试时,哪怕你算法基础知识等问题没回答好,但只要让面试官确信你做过商业项目,通过面试的可能性也比无商业项目的人群要高很多。
在通过网站等形式投简历时,很多公司实际上是要有商业项目经验的,如果你没,甚至连面试的机会都没有,但如果你有实习等的商业项目经验,那至少你通过初选的可能性就大大提升了。
我在面试毕业生乃至初级程序员时,感觉有过实际项目经验的人非常少,(这就更验证了有经验的人相当有利),而且,这批人通过面试的可能性比3年左右的程序员要小很多。下面我来分析下这群人的普遍问题。
问题1:商业项目经验很少,所以简历甚至无法通过筛选,这样根本得不到面试的机会。
问题2:即使有些项目组因为着急要人,从而让一些初级程序员得到面试机会,但在面试过程中,这些人往往无法证明自己真的在项目中用过相关技巧,这些仅有理论经验的人通过面试的可能性非常小。
问题3:大多数初级程序员往往能通过准备,能知道算法、逻辑题和一些简单的说辞,无法证明自己掌握一些工作中必要的技能点,从而无法证明自己胜任这份工作。
上述问题的结果就是:在我手上通过面试的程序员,八成以上具有3年之上经验的,其实面试要求不难,能干活就行,但大多数的初级程序员就是没法证明这点。
针对上述问题,给出的建议是:学习和积累。
给自己制定一个明确的目标,工作后3年内尽量少换,否则就得从头开始积累。
比如目标方向是Java后端开发,那么在工作中,别得过且过,多跟组里的前辈学,多掌握些知识点。
一定得围绕“性能优化”这个主题,比如内存性能优化,数据库优化,多掌握些项目中能用到的优化技能点。
哪怕你最近不准备面试,但也得边工作边看面试题,最好定期出去面试下。毕竟每个人在学习过程中都会走弯路,用句比较流行的话来讲就是试错,通过不断的面试,能不断修正自己的学习方向。
这些也是能找到工作的最低标准,Java Core的标准如下:
而在数据库方面,最低的要求体现在如下三方面的需求。
第一:针对一类数据库(比如MYSQL,Oracle,SQL Server等),会基本的增删改查操作,会用一些基本的函数,会编写存储过程触发器索引等工具。
第二:知道一些基本的对项目开发有帮助的概念,比如范式,索引,分区等。
第三:能编写一些相对复杂的SQL语句,比如带连接,带子查询,嵌套查询等。
我知道,其实大多数的初级程序员都知道上述知识点,但无法有效地在项目中证明这点,而且,我之前也说了,上述仅仅是最低要求,接下来给出的要点将大大提升各位的面试成率。
这里给出些准备简历时的注意要点。
1. 针对每份工作微调简历,在发给目标公司的简历中,多写些在该公司职位介绍时出现的关键字。
2. 少写不相干的工作经验,任何经验都往目标公司的职位要求上靠,比如目标公司的职位是java后端开发,你写一些linux上项目维护的经验或数据库DBA的相关经验尚属搭边,但如果写上测试或实施等经验,就属于不相干了。
3. 少写关于项目业务介绍的内容,因为目标公司不关心。
4. 这个是关键,一定得结合业务实际,写上自己有过相关技能的经验。
比如目标公司要求有数据库优化的经验,那你就可以写,在xx项目里,对sql的执行时间有要求,所以在订单管理模块里,我用到了xx技术,实现了sql优化效果。
类似的文字要多,涉及到的项目年限也请尽可能地长。这样当筛选简历的人和面试官看到你的简历时,不由得不信你第一有实践项目经验,第二在实践经验中用过相关技术。
而在面试时,技术面试官一定会问到职位要求里的相关技能,你事先得准备。如果你能在面试过程中有条理地说出你是如何在项目里用到相关技术的,那么这样的说服力要比你单纯说“你知道“要强很多,甚至有些面试官听到你的这些叙述后,会少问或不问相关问题。
这些证据可以出现在简历中,当然你更应该在面试中说出来。
我在面试中,往往会不得不从10个人符合要求的人里挑选出3人。(按我说10个人全要算了,但不行,预算不够)。这样如果某个候选人表现出优于别人的技能,那么这个人就一定是在同等条件里优先考虑的。
如下是Java Core方面可以准备的亮点。
在下表里,我们列了些在数据库方面可以准备的亮点。
此外,大家还可以在Linux使用技能以及项目管理软件的使用经验方面展示自己的亮点。这里请注意,一定找合适的机会“顺带”地说,如果没机会宁可别说,更不能仗着有所准备就直接自说自话地说。否则的话,反倒可能会得到“表达能力不清晰”或“叙述条理混乱”等的不良评价。
本文涉及到的点有些广,这里来总结下本文中提到的观点。
在校生尽可能早地积累些商业项目的经验。
工作后找准发展方向,然后通过不断的面试来调整自己的学习路线。
简历中的项目描述应该尽量与目标公司的需求一致,在面试中也应当尽量证明这点。
多积累些优于别人的优势。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持,需要更多资料的同学可以评论私信我,记得一键三连哦谢谢大家
最新2021整理收集的一些高频面试题(都整理成文档),有很多干货,包含mysql,netty,spring,线程,spring cloud、jvm、源码、算法等详细讲解,也有详细的学习规划图,面试题整理等,需要获取这些内容的朋友请加Q君羊:673927155