一位亲戚家的年轻人立刻要从大学毕业了,学软件工程,参加过培训的普通新手程序员,不是TOP学校也不是高学历,因而找我这十几年的老程序员给点建议。程序员
说来惭愧,本身当年也不过是对计算机的兴趣加上热血和自信,稀里糊涂就跳上了程序员的车,干了十几年仍是个程序员,还真没怎么仔细考虑这车到底是怎么开的。这要是没毕业就一堆大公司排队等着签协议的高手,咱也不敢给啥建议不是。也曾经三言两语地给过其余一些新人建议,也有同窗借鉴了建议经过改进找到了工做。因此这一次准备借这个机会把这事总结一下,拿出分析程序逻辑的劲头,仔细讲一讲个人建议。面试
职业的人生从程序员开始,找工做是第一步。新手程序员,刚从学校毕业或者刚培训出来,没有什么实际工做经验,而后不少岗位又须要经验,这是新手最大的挑战。算法
因此,新手找工做的目标,就是积累实际工做经验。说白了,就是看看实际工做中怎么写代码,怎么面对需求,怎么分析业务,怎么作项目,怎么开发工程,怎么与同事协做,怎么处理线上问题,等等不少相似的,怎么应对工做的方方面面。即便是经历了培训机构的培训,所谓的真实项目、实战培训,归根结底那也是培训,和实际的工做状况其实远远不同。数据库
可是,单纯为了积累工做经验去找工做也是不够的,找工做也要有方向。有人在这时候去大谈职业规划,我以为对于萌新来讲,就是揠苗滋长。这第一个工做,是从学校进入社会的第一步,每每还处于懵懂的状态,这时候连对职场的体会都没有呢,谈职业规划真的有点空中楼阁的味道。编程
做为一个程序员,思考的方式很重要。第一份工做只是一个入门,但会影响一我的思考的基础方式,我的觉得最应该在意的是开发是否正规,因此找工做的方向,是去更规范更前沿更有竞争力的互联网或者软件公司。这些公司每每正在经历或通过了市场的残酷考验,造成了比较完整正规的协同开发能力,不会像手工做坊那样稀里糊涂地作事。缓存
接下来具体讲讲,萌新程序员找工做的三板斧。数据结构
简历这东西,是突破企业招聘的第一个敲门砖,其余的面试啊答题啊编程能力啊都在后面呢,因此对简历这一项必须重视。架构
不少公司在招人的时候,HR或者猎头要先筛一轮简历,而后技术人员才筛,而后经过了才通知去面试。甚至更大的公司极可能筛简历的轮次就多一两轮,找工做首先要经过这几轮简历筛选。框架
总的来讲,简历这第一板斧的基本原则是:点到不点破。数据结构和算法
第一是要点到。总结本身的特色,本身的优点,就是能引发看简历的人兴趣的那些亮点。对于萌新程序员来讲,原本项目经验不够丰富,亮点不够明显,因此这份简历不能太笼统,要写出本身最擅长的,最好确确实实相对于其余人是优点。
技术方面,不能归纳起来一句“擅长Java开发,熟练使用IDEA、Eclipse”就完事了,老是有本身学得比较深刻的技术点,举个例子,好比Spring Boot项目搭建、Spring MVC应用、数据库事务配置、SQL索引处理,这种技术点最好能写上几个,既丰富内容,也证实本身确实学习过。
工做方面,首先是工做任务描述要具体,不能是相似“多个功能接口与页面的编辑”这种千篇一概的话,尽量写出具体成果和业绩来,其次既然是作技术,很大程度上工做经历也是为了考察技术点,因此工做中采用了什么技术,应用了什么框架,有哪些技术逻辑,尤为是可以显示本身特色的证实,每个点要尽量点到,让这些点去佐证你相对于其余人的优点。
有人说若是不写这些,等面试的时候再具体说不同吗?还真不同,由于面试官拿到这样一份没有具体点的简历,他不知道你的侧重是啥,亮点是啥,优点在哪里,那为啥要让你来面试呢?要知道面试官面试一我的,成本其实很高的。
第二是不点破,毕竟是简历而已,不用针对具体的技术点说详细的原理,也不用细致地讲过程。刚才说的那些技术点和工做业绩,写在简历上是为了证实你的优势,也是为了引发面试官的兴趣,让面试官产生进一步了解你的想法,就能经过筛选进入面试环节了。不过既然写了,那就必须准备好面试时候被提问。凡是点到的点,都要准备应付面试被考察,技术点要尽量深刻一些原理,工做经历要有完整的做事逻辑,这个以后再细说。
还有,简历不要有错别字。不要小看这件小事,由于认真,是优秀工程师的第一要求。我曾经上各个官网去核对每个技术名词的写法包括大小写,MySQL,MyBatis,RabbitMQ,等等。
由于应届毕业生储备的知识和经验通常不会有多丰富,因此考察基础能力和发展潜力是侧重点。
以前我作Team Leader的时候,也在负责招聘各级工程师,也曾屡次做为面试官参与应届毕业生的统一招聘。我的觉得,对于一个萌新工程师的最基本要求就是,能经过一些思考,写出逻辑清晰完整、开发习惯良好的代码。其余的各类技术点,知识点,项目经历,都是加分项。固然,面试都是择优录用,因此首先必定要给面试官展示出你能达到最基本要求,并且最好能展示你的知识和你的努力,获取一些其余的加分项。
在应届毕业生招聘过程当中,不管是企业要求,仍是我我的意见,通常都要出一到两个笔试的算法题,这个算法题的做用就是考察一我的的思考能力,看逻辑是否清晰完整,考虑事情是否周全,能不能把业务落实到代码上。用个人话讲就是,可以用代码来展现清晰完整的逻辑,是程序员的基本功。
由于极可能是纸上手写答题,因此不必定非要写得很是完整很是精确,但必定要经过这道题的回答,体现出你尽可能清晰的逻辑,尽可能完整的思路。最好要对基本的数据结构和算法有一些了解,好比基本的链表操做,基本的排序算法,这些极可能对解题有着重要的帮助。若是是计算机以及软件类专业的,更应该熟悉这些数据结构和算法,由于这都是大学的课程学过的。若是说一个计算机专业的毕业生,连链表是什么东西都一脸懵逼,面试官会满意吗?
因此,若是面试以前没有积累过,那仍是要针对性地找一些题目去练习,固然难度我以为不用过高,通常难度的就能够了,毕竟通常的企业招聘也不是在招天才是不。练习的目的也不是记住这些题的答案,甚至是解题技巧,而是经过这些题去锻炼一下本身的思考能力和积累一些解题的思路方法。真到了面试答题的时候,有相似的题固然好,即便没有,也能展现出本身积累的分析能力和解题能力。
针对某一项语言种类的招聘,好比Java工程师,确定要问Java的一些基础知识,好比LinkedList和ArrayList,我作面试官时,通常不会太深刻,底层原理之类的通常不会问应届生,由于这是知识性质的,学校可能没有专门学过。可是有的面试性质可能不同,由于有可能企业要招的是一个比较懂Java的人,因此面试官会问好比一些涉及Java的内部原理的东西。
准备岗位所需的基础知识,也是一个重要的点。由于没有更多的项目能力和更高级的架构能力去考察,因此面对应届毕业生,不少面试官会看重知识点,即便这个点看起来是死记硬背的,好比Java里HashMap的默认初始容量这种。每每是要经过这些貌似死记硬背的知识点筛选出基础知识更扎实牢固的同窗,因此这些知识吧,其实面试以前仍是捋一遍,也能够网上搜一搜Java的基础知识题作一作,把基础的知识点搞清楚。
前面曾经说过,简历点到不点破的那些点,在面试准备的时候都要搞明白,尽量深刻,既然写到了简历里,就要有针对性的准备好。面试官在浏览简历的时候,极可能会考察这些点的实际执行状况、技术原理、实现方式、一些常见问题的处理等等具体的内容。这不只仅是验证一我的在工做中确实是有这些经验的,更重要的是体现一我的深刻钻研的精神和能力。
在我我的作面试官的过程当中,都会看候选人的简历去挖掘一些点,好比简历上说到事务,我可能就会问一些事务的基础,在程序里事务是如何配置的,如何实现的?好比简历上写的用过缓存,我可能就会问缓存雪崩是怎么回事,该怎么办?缓存击穿了又怎么办?好比说简历里涉及到消息队列的,我可能会问,有没有可能丢消息,有没有可能重复消息,这些怎么处理?
因此做为候选人,不能简单地说我用了什么框架,配置一下参数,能作出来功能,就好了。若是能和面试官讲讲,这里用了什么技术,为何要这样配置,为何经过框架配置了就行,那面试官就会以为你不只知其然还知其因此然,天然是要加分给你的。
最后就是面试了,面试的过程其实就是告诉面试官,我能行,而后想办法证实我能行。因此首先要自信本身能行,没有经过面试没关系,其实有的时候真的看脸,不是不够优秀,是缘分没有到而已。
面试自己也是实践的过程。面试作过的题,尽量记下来,无论是会的仍是不会的,回来仔细思考解答。和面试官的沟经过程,也要认真复盘。到实践中去总结学习,积累经验,逐步提升。
固然,所谓三板斧只是我我的的建议,也只是个基础。有不少我曾经面试过的应届毕业生都很是优秀,已经远远超出了三板斧提到的能力。因此最重要的仍是好好学习每天向上,我相信,只要努力,找一份起步的新手工做并不难。所谓江山代有才人出,长江后浪推前浪,但愿你们能更快地成长,更快地发展,更快地找到满意的工做。