浅谈程序员的面试
作为一名程序员,很讨厌的一件事就是面试,因为本身性格就内向,不太会说话,而且面对面试官的问题要是答不上来会显得十分尴尬。但是在这一行,工资倒挂的现象十分严重,你要是一直呆在同一家公司,薪水的上涨永远跟不上节奏,干了几年,突然发现新来的工资居然和你差不多。跳槽是提升工资的最快通道,即使不喜欢面试,但为了提高薪水也不得不去学习一些面试技巧。
你以为我会在这里谈面试技巧?那你就误会了。跳槽虽然容易提升工资,但是,你有没有发现,那些高薪的职位要求的技术都是你在以前的公司没使用过或根本没机会去接触的。当你还是一名新手,你进的公司是不会让你去做这些较深的技术的,即使有人指点,那也是了解一下的层度而已,你根本就没有实践的机会。这也是很多程序员过了新手阶段后再也无法进步选择混日子的原因,一些深层的东西光是靠查资料自学是不够的,没有一个指导你的人,你永远跨不进去。新手想在工作中获得这方面的指导,概率比买彩票还低。但是跳槽找新工作发现到处都需要这些技术,因此向往高薪但求职难成了大多数程序员的烦恼。
我也当过面试官,我认为对于新手的面试需要笔试,了解其知识面和技能熟练度。而几年经验的面试更多是技术上的交流,这个阶段的人,敲代码已经是像做小学数学题那样简单了,问题的处理逻辑,功能的实现方法,项目难点的解决方案才是值得去一问的。
还有一些很脑残的面试题,我想要在这里分析一下,因为很多面试官都是直接在网上找的题。例如,问某两个相似函数的区别。首先这个题的目的无非就是要你分清楚什么情况下使用他们不混淆。但是,假如你混淆了会怎样?一种情况是报错,这很好解决,现在谁写代码不是一边测试一边修改的,发现错后用回正确的就可以了,这对工作有影响吗?完全没有。另一种情况,不报错,但是这个不报错的他得出的结果也是正确的,这说明了其实两个函数都是可行的,只是优劣关系。这种优劣关系主要是内存使用率多少的关系,这个就是高级程序员优化的工作了,要是他不能发现这个问题,那错的也是他,你完全没错。因此这种面试题真的有用吗?
面试题结合公司实际情况才是最好的面试题,而不是网上随便找一些要求,或者面试官显摆自己的技术说一下难懂的话。这样既可以减少程序员的就业压力,也更容易招到合适的人选。