经历
去年的10月,在听说了中南有很多大公司来招聘后,我兴致勃勃的参加了不少大公司的招聘,可惜没有什么成果。但我吸取到了一些经验,知道笔试和面试的大概题型和流程,在网上也做了很多准备,不过没想到后来没什么招聘了,但我也有一些感触,所以记录下来。
感触
笔试题和面试题都比较基础,比较简单,要想通过基本就是靠基础的扎实。
但是!
这样就能脱颖而出吗?如果我是面试官,听到了一个听了N遍的答案,我不会觉得眼前一亮。再说我的感触之前我要先申明:以下感触纯属我个人的看法,仅仅是看法,因为我也没有机会尝试,所以,言论概不负责。
![害羞](http://static.blog.csdn.net/xheditor/xheditor_emot/default/shy.gif)
- 回答问题的时候不能仅仅局限于方法本身,能有体现思想的机会一定要把握住,单单的说一个千篇一律的流程谁都会。比如这道网上出现了很多次的题目:几亿行qq号,获取出现次数最多的10个qq号。这道题目解法去网上搜吧,网上都是直接回答使用hash分割文件,但是我觉得可以先回答mapreduce,虽然不答案不是这个,但是先回答这个,可以透露出我会hadoop,然后因为mapreduce的原理,可以说写一个单机版的mapreduce来模拟,虽然效率没有真正的分布式高,但是使用一样的原理,能够使用很少的内存来达到处理大文件。
- 有人说了,问我的时候没有问这样的题目,都是问一些网上的基础题目怎么办?这里我想说,越大的公司越会问基础的问题,至少我回答到的最基础的问题是百度面试官问的。基础题目能体现很多东西,你说如果你连线程的运行是调用start还是run都不知道,你算法再厉害别人也不敢要你。
回答基础问题的时候我认为也应该体现你的特点,比如对于高新技术的关注或者是对于高级技术的深入程度。比如这个题:询问hashtable和hashmap的区别。这个问题不知道在网上看到多少次了,答案也看了多少次了,但是我觉得,除了回答hashtable线程安全、hashmap允许null为key、hashtable继承于Dictionary hashmap继承于Map 之外,还可以回答使用的情况,在说了hashtable使用在线程安全之后,马上可以回答,但是java 1.7之后会使用java.util.concurrent包中的ConcurrentHashMap,这个类对同步的处理比hashtable好很多。
又比如问到了多线程,这样的问题其实挺多,比如:怎么实现多线程。网上的答案无非是继承Thread或者是实现Runable。这是最基本的答法,完全不能体现出对java的熟练。java5就有了java.util.concurrent包,包中的很多类比Thread更好,比如ExecutorService、Lock等,这些类使用起来会让代码更有效率,更好维护,更加方便实现。所以,面试的时候建议回答了以前的标准答案之后顺带往这边提一提,当然,是在了解的前提下,不然会适得其反。
- 如果问到项目的时候,尽量说些技术性的东西,增删改查就别多说了,多说些用到的技术。如果对技术熟练,可以把话题的节奏带到你熟悉的技术上,这对你非常有利,如果你能成功的把面试官的节奏带到你熟练的东西上,那么面试应该成功了一大半,因为现在是你主动了。比如说,如果我只是做了一个基于SSH框架的,那么我要怎么介绍我的项目呢?首先这个项目就是所谓的增删改查,那么说项目的业务就没什么特点了,得说项目使用的技术,以下是我个人观点的回答:首先我会介绍Struts2和Hibernate,再介绍Spring,然后我是特意按照这个顺序介绍的,因为我觉得使用Spring完全可以符合项目的要求,面试官应该会问为什么,这时可以说一下你了解的技术如:Spring MVC,Spring JDBC等,再谈谈三个框架实现的原理,它们的特点和缺点,这样一来,面试官应该能够明白你不仅仅是做过“课程设计级”项目的人了。
大概就这么多吧,暂时只想到了这些,其实就是一个中心思想,
利用各种技术,来让面试官体会你个人的特点和魅力。希望其他人看到了这篇文章之后会有收获,也欢迎大家跟我交流,我的联系方式在左边。