除此之外,就是保持良好的心态。古语说得好,只要功夫深,铁杵磨成针,面试的成功与否,在于平时的积累,临时抱抱佛脚,看两道面试题是没有用的,只要平时足够努力,成功是水到渠成的事情,平时不怎么研究技术的,那也就是个听天由命的事情,只要充分地展示平时自己的所学就可以了。
因此在我看来,不要把面试当作面试,当做一次技术交流,把面试的心态从我要找到一份工作转变为我要通过面试去发现不足、提升自己,这样就会平和多了,即使失败也不会有太多失望的感觉。
另外,如果平时自己热衷于研究技术的朋友,真的要有自信,不要觉得别人面试你别人就比你厉害。面试官未必比你优秀,他问的问题往往都是他平时研究得比较多的问题,你一样有很多自己的研究面试官未必知道。
关于Java
网上常看到一种说法:Java比较简单。某种程度上这会打击Java程序员的信心----原来咱们平时用的是这种小儿科的玩意儿啊,在我看来这种想法大可不必,这一部分我来讲讲对于这个话题的看法。
这种说法有些片面,得分开两部分来看,我用四个自总结一下就是:易学难精。
1、易学部分
Java易学我认为有两部分的原因:
(1)很多培训公司包括大四的学生找工作都会学习Java,绝大多数是因为易学。Java从C/C++发展而来,感谢前人的智慧,它消除了C/C++中最复杂和让人困惑的语法、它消除了平台的差异性、它不需要用户手动释放内存空间、它避免了Java程序员和本地语言的交互,让程序员只需要专注于语法层面和应用层面。
(2)Java作为一门面向对象的语言,在企业级开发中体现出了它无与伦比的特性,整个开发流程比较固定化、模块化,需求分析起来也相对容易。我举个自己以前的例子吧,我在大一学习C语言的时候,用C语言写了一个图书管理系统写了2000+的代码,大四学了C++之后,用面向对象的语言C++取代面向过程的语言C语言重新写了一个功能相似的图书管理系统,只写了1100行的样子,这就是面向对象的优势。
2、难精部分
接着咱们聊聊难精的部分。
Java语言的设计者帮助Java程序员做了这么多事情,这有利也有弊。有利的部分前面已经说过了,让Java易学,不过有弊的部分同样明显。假如在应用运行过程中遇到了语法层面和应用层面之外的错误,应当如何处理?比如线上环境出现内存溢出怎么办?GC时间过长怎么办?IO长时间没反应怎么办?方法抛出莫名其妙的异常怎么办?
凡此种种,绝不是一名只会写几个if...else...的Java程序员就可以解决的,这需要大量的经历、大量的实践、大量对Java底层实现细节的研究,而这往往是最难、最考验Java程序员的部分,一些人根本就不想往深去研究,另外一些人研究了一点点就研究不下去了。
Java为什么难精?就是这个原因。除非你水平特别高,否则五年工作经验以下的Java程序员在简历上写"精通Java"绝对是一件非常愚蠢的事情。
结语
文章写到这里,感觉有点像鸡汤文了,那就以最后的鸡汤作为结尾吧。
在以前博客园的一篇文章中,讲到了奔三程序员的困惑,大致说的是三十岁之后程序员要转行之类的云云,LZ在博文中留下了如下的评论:
就以这段话自勉、共勉吧。越努力、越幸运,如果你不是官二代、富二代、红二代,那么请记住:勤奋才是改变你命运的唯一捷径。