最近一段时间聊了一些候选人。发现大多数的候选人都是被一些低级又致命的失误PASS掉的。今天整理一些,希望各位同学在这金三银四的时间段,不要因为这些失误错失机会:
1 简历
1.1 使用word格式
每一次看到word格式的简历,都对候选人的印象降几分。排版容易乱。有的时候还有编码问题。同样一份简历,使用pdf格式的文件,给人的印象都会好很多。
1.2 篇幅过多
有的同学的简历能有3,4页。(PS:看的我好累)。简历尽量控制在一页。不要什么都写上去。例如进行需求评审,完成需求开发,进行接口设计,进行数据库表设计……掐指想一想这些工作都是一个程序员不得不做的事情。不是说这样写的同学能力不行,而是这样写没有体现出同学们的能力。现在大家做的系统多是分布式系统。那么你可以这样写。例如:负责XX服务(体现自己是一个系统的Owner),完成XX框架的设计与开发(体现对技术有提炼抽象能力),参与XX系统的开发(体现对其他系统的贡献)等等。
2 基础
简历通过之后的第一道坎就是基础。基础就是一个人的“地基”,“地基”有多牢,房子才能盖多高。那么在基础这一环节有以下容易犯的失误:
2.1 技能多而不深
很多同学会在简历上写很多技能。不管程度如何,只要摸过的都往上写。一个3年左右经验的程序员,能把一个技术领域做深都难。那些不熟的技能就别写了。另外是深度。无论自己会多少技能,都要有一个技能是要有深度的。对于一个Java程序员,那么Java语言一定要是掌握的最深的。
2.2 跨过使用谈原理
我发现很多同学都喜欢跨过使用谈原理。可能是现在很多面试官都喜欢问原理,大多数的同学可能都会去准备,但是却不知道面试官问原理的初衷。在我看来,一个技术的原理是用来解释为什么可以这样用的。比如,ArrayList的底层原理是线性表,LinkedList的底层原理是双向链表,他们解释了为什么插入删除多的场景要使用LinkedList。原理一定是要能和使用挂钩的。
建议陈述一个技术的时候从以下的思路进行:
1.该技术都有哪几种实现。
2.几种实现的区别是什么。(或者:什么场景下使用什么实现)
3.几种方法的原理是什么。(或者:为什么要在这种场景下使用这种实现)
这样的思路才体现出正常情况下对于基础知识掌握的层次。
3 项目
项目在社招中是必不可少的环节。很多同学挂在项目上。其中也不乏一些低级又致命的失误
3.1 业务描述不清
作为一个程序员。我自己也深有体会。突然让我讲业务我也很难简洁流畅的讲清楚。这个自己还是要在面试之前准备一下的。再讲项目之前一定要先把业务讲清楚。不然面试官会听的一脸懵逼!
3.2 没有亮点
很多同学在讲项目的时候,讲的都很多(至少从时间上),但听下来都没有什么亮点。很少有同学可以说,我们做的这个系统有这样几个亮点(或者难点)。很多同学认为项目上的亮点和难点只有,高并发,大数据量,几百几千台机器的分布式系统。但实际上并不是的,每个业务场景都有自己的难点。比如:流程如何复用呀?代码之间怎么解藕呀?系统间的一致性呀?操作的幂等性呀?怎样在服务好业务的同时最小化技术代价的呀?……这些都是要结合具体的业务场景来看的,而且每个业务都要自己要解决的问题。这些问题就是亮点。