原文地址,转载请注明出处,谢谢!
前言
因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。
简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B2B事业部的面试,一共有面试了有6家公司(因为LZ不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少),其中成功的有4家,另外两家失败的原因在于:
1、阿里巴巴B2B事业部的面试,两轮技术面试都过了,最后一轮面试是对方的主管,由于听说技术面试过了基本上90%都面试成功了,所以LZ在和主管的交谈中也是毫无顾忌,说得天花乱坠,很多自己介于知道和不知道的东西都直接脱口而出了,结果多次被对方一反问就问得哑口无言。事后想来,模棱两可的答案是面试中最忌讳的,这次的失败也让LZ认真地对待后面的每一次面试
2、另外一家失败的是一家小公司,也就20来个人吧,整个团队是支付宝出来创业的,非常厉害。面试完LZ多方了解了一下,对方认为我基本功什么的都不错,但是实际项目经验还是欠缺一些,因为对方是创业型公司,需要人上手就能干活,因此我在这个时候还不是特别适合他们团队
至于其他成功的四家公司,给LZ的面试评价都挺高的貌似,但LZ也不想记流水账,因此就不一一列举每家公司的面试过程了,下面LZ主要谈谈作为一名工作三年左右的Java程序员应该具备的一些技能以及个人的一些其他感悟。
关于程序员的几个阶段
每个程序员、或者说每个工作者都应该有自己的职业规划,如果看到这里的朋友没有自己的职业规划,希望你可以思考一下自己的将来。
LZ常常思考自己的未来,也从自己的思考中总结出了一些东西,作为第一部分来谈谈。LZ认为一名程序员应该有几个阶段(以下时间都算上实习期):
第一部分总结一下,我认为,随着你工作年限的增长、对生活对生命认识的深入,应当不断思考三个问题:
1、我到底适不适合当一名程序员?
2、我到底应不应该一辈子以程序员为职业?
3、我对编程到底持有的是一种什么样的态度,是够用就好呢还是不断研究?
最终,明确自己的职业规划,对自己的规划负责并为之努力。
关于项目经验
LZ在网上经常看到一些别的朋友有提出项目经验的问题,依照LZ面试的感觉来说,面试主要看几点:项目经验+基本技术+个人潜力(也就是值不值得培养)。
关于项目经验,我认为并发编程网的创始人方腾飞老师讲的一段话非常好:
介绍产品时面试官会考察应聘者的沟通能力和思考能力,我们大部分情况都是做产品的一个功能或一个模块,但是即使是这样,自己有没有把整个系统架构或产品搞清楚,并能介绍清楚,为什么做这个系统?这个系统的价值是什么?这个系统有哪些功能?优缺点有哪些?如果让你重新设计这个系统你会如何设计?
我觉得这就已经足以概括了。也许你仅仅工作一年,也许你做的是项目中微不足道的模块,当然这些一定是你的劣势且无法改变,但是如何弥补这个劣势,从方老师的话中我总结几点:
1、明确你的项目到底是做什么的,有哪些功能
2、明确你的项目的整体架构,在面试的时候能够清楚地画给面试官看并且清楚地指出从哪里调用到哪里、使用什么方式调用
3、明确你的模块在整个项目中所处的位置及作用
4、明确你的模块用到了哪些技术,更好一些的可以再了解一下整个项目用到了哪些技术
在你无法改变自己的工作年限、自己的不那么有说服力的项目经验的情况下(这一定是扣分项),可以通过这种方式来一定程度上地弥补并且增进面试官对你的好感度。
补充一点,在面试中聊你的项目的时候,有一个问题90%是绕不过的:谈一下你在项目中解决过的比较复杂的问题。这需要在工作中不断去发现和探索,不需要多,在你自己目前的项目中只要你找到一两个能说的问题就行。一个小技巧是,即使问题不是你解决的而是别人解决的,但是你把这个问题弄懂、搞透了,在面试的时候你一样可以把这个问题当作是你自己解决的来说----毕竟,谁来管这个问题当时到底是不是你解决的呢?
关于专业技能