背景:大三下 实习面试 坐标上海 Java研发
其实接触Java满打满算也就一年不到,因为最近经常在用,就想试一下。提前半小时到达面试的酒店,HR小姐姐领着去签了到,然后就到了候场区。放眼望去,坐满了来面试的同学,有的眉头紧锁,貌似在看笔记;有的三人一排正热烈地讨论着。我独自一人,昂首阔步,坐到旁边没人的椅子上,默默掏出自己的武林秘籍——面试宝典。所谓知己知彼百战不殆,加上本科生资质尚浅,在这面试紧要关头自然要有所准备,不然何以面对考官们的满满套路啊 : )
候场广播不断响起,大约二十分钟后轮到我。面试官是位帅帅的小哥,笑容满面。他先开口让我坐下,本来我想把纸质简历递给他的,他摇了摇手说简历他已经有了,我就顺手收了起来。
面试我的帅哥(以下简称师兄)率先开口:接下来我们将会有一个关于基础知识和项目经验的面试,时间大概在三十到四十五分钟。要不你先简单介绍一下你自己吧。
我窃喜,果然一开始就是套路嘛,自我介绍神马的哥早就练了很多遍了,看我不闪瞎你。我以很轻松的心态和自信的语气回答到:我叫xxx,来自xxx,我。。。。。。
大约三分钟后,我顺利完成介绍,一气呵成,然后缓缓舒了口气。师兄微笑点头,接着说到:那我们先来谈一谈项目经验吧,你大学这几年都做过哪些项目呢?有没有印象特别深刻的呢,可以给我举个例子说明下吗?
套路,又是套路,我淡淡一笑,接过话锋:要说印象最深的嘛,应该算是去年和同学一起开发的一个app吧,我们想做一款基于校园二手商品交易的app,实现了xxxx的功能。(进入吹牛模式,然而事实上之前做过的能拿得出手的项目还真挺少的,只能靠它撑一撑了)
师兄微微点头,说到:感觉功能还挺齐全的,这个app你手机上现在有吗?可以给我看看吗
我有点无奈地回答到:这个啊,因为当时只是在试用期租借过服务器,现在产品已经下线了。(然而事实却是产品根本就是一个课程的大作业,只要单机演示就可以了,完全不用上传到网络上,所以根本就没有上过线。但是这么说不是马上枪毙了嘛,只能吹点牛皮咯)
师兄接着道:这样啊,那你当时在团队里面主要负责什么工作呢?
我:我当时作为项目的组长(一脸傲娇),主要负责的是团队之前工作的分配与进度的协调,以及产品的设计和技术文档的撰写等等。(脸上的笑容像花儿一样绽放)
师兄:难道你就没有写一点代码吗?
拜托,当然有的好嘛,作为一只傲娇程序猿怎么可能没有写代码呢。我回答道:当时编写过一些操作数据库的代码,就是数据库和安卓app通信的部分。
师兄:那你在这里面有遇到技术难点吗?
纳尼?技术难点?不就是在安卓里面写点东西操作数据库吗?我有点疑惑,支支吾吾回答到:好像没有什么特别难的吧。
师兄:真的没有吗?比如处理网络通信,数据库的访问权限,多用户访问数据库时的冲突等等?这些问题你们都很好地解决了吗?
我开始慌了。事实上当时我只是负责了很简单的一部分,根本没有了解到这么多东西好嘛!无奈,我只得跟师兄说:其实当时我主要还是负责整体的协调啦,代码部分涉及的确实比较少。
师兄:这样啊,可现在你将要从事的是Java研发的岗位啊,就从你的工作经验看你会不会觉得你更适合从事产品或者其他相关的工作呢?
我:这个啊,其实之前也有想过,但是总觉得既然决定了做技术当然还是要往技术方面发展啊,所以就没怎么考虑产品相关的方面。(老子在计算机系辛辛苦苦混了三年你让我和一群学商务的比口才,这不是坑爹嘛!)
师兄:那好吧,关于项目经验的部分就暂时到这里吧,下面我们聊一聊Java的基础知识。
我长舒一口气,终于开始Java了。虽然没做过什么实际的项目,但自认为Java的基本功还是相当扎实的,再加上最近一直在学习《Thinging in Java》 ,这下应该没什么问题能难倒我了吧(当然最后事实证明,自己还是太年轻)
师兄:先谈谈你对Map的了解吧。
我有点小懵。还以为他会问我什么数据类型啦典型函数啦之类的细节问题,一上来就来了这么大一个问题,还真不到如何是好。我支支吾吾回答到:Map可以作为一种容器,同时它有很多派生的类型,比如hashmap和Set之类的都可以作为容器,还有。。。
师兄:那我们主要在什么时候使用map呢?
纳尼?师兄在逗我吗?当然是在需要它的时候使用啦,这还用你说!我回答到:在需要使用到一些容器的时候(这是什么答案啊,根本就没回答好嘛,但又能回答什么呢)
师兄(带着些许疑惑的表情):噢。那要不我们再聊聊其他的吧。(啥,是不是我说错什么了?可是这个问题我真不知该怎么回答啊)。你知道Java有很多方面,网路访问,多线程,I/O,虚拟机等等,有没有哪个方面你比较熟悉的呢?可以和我详细地描述一下吗?
什么?又来大锅饭?这么笼统的概念我怎么知道该如何回答啊?无奈,我只得装作认真思考的样子,然后支支吾吾地说:这个啊,好像没有特别熟悉的啊?要不你随便问问?
师兄脸上的愁容又多了一分,似乎对我的回答蛮失望的。不过立马又恢复了笑脸,说到:那我们换个话题吧,你的简历上说你热爱学习新知识,那你最近有在学习什么新东西吗?
我:最近啊,最近在看《Thinking in Java》 。(总算找到一个自己熟悉点的了)
师兄:在看书里的哪些知识点呢?可以详细介绍下吗?
我:在看继承与多态,他们都是实现面向对象编程的重要方法。其中继承是指xxx,多态是指xxx。
师兄:你可以具体写段代码演示下吗?(说着把他眼前的苹果电脑推向了我)
我:好。然后写了一个父类和子类,分别实现了一些方法。(然而之前没有用过苹果,不知怎么地两手有点不停使唤,三十行代码写了将近十分钟)
师兄全程观察着我,然后淡定地拿过电脑,淡淡说到:其实你还可以写得更好一点。
我无言以对,说实话那个代码实在是太简单了,而且致命的是,我发现居然还有一个地方是红色的点点(表明这是错误的)OMG!
师兄对着电脑敲了些什么,然后对我说道:关于本次面试我要问的问题只有这些了,你还有什么问题想问我的吗?没关系随便问。
什么?这就结束了?还没到二十分钟啊?说好的三十分钟呢?然而回想起这短暂的对话,自己的回答确实是几乎没有什么内容,继续问下去只是浪费大家的时间。我想后续的面试恐怕是无望了,也就不再留恋。毕竟这次只是出来试水的。然后索性敞开心扉,和师兄聊了起来。
我:师兄你知道阿里明年的秋招在什么时候吗?
师兄:(面带微笑)这个我不知道,我只是技术部的。
我:(单刀直入)师兄,通过面试我觉得自己还有很多的不足,从你的感觉来说我主要的缺陷在哪里呢?
师兄:那我就直说了。第一,你的代码量太少了,你对于编程太不熟悉了。你自己刚刚也看到了,一段简简单单的代码你都写了那么久,这与你缺乏锻炼是有直接关系的。想要从事技术岗的话,代码能力是最重要的,在这方面你还需要相当的努力。第二,你的知识面太泛了,这个懂一点,那个懂一点,但是却没有哪一块有深入了解过的。
我:(这分明就是说到我心坎上了嘛)那师兄,编程能力的话应该如何提高呢?
师兄:多写。你可以去看相关的技术书籍,把里面的代码都认真地敲一遍。第一遍可能是完完全全对着电脑敲,第二遍就相对熟悉了很多,再多写写你甚至就可以背诵了。当你达到对于一个问题可以不看任何参考书完全凭借脑海里面的知识解决它的时候,你就是大牛了。然后,要多做项目,可以锻炼的机会有很多,网上的一些相关视频,或者就是自己心血来潮想写个App或者写个插件,这些都可以的啊,这些都可以作为你今后找工作中的项目来加分。通过项目把你的理论知识进行实践和巩固,这样子提升地比较快。
我:(有种豁然开朗的感觉)那师兄,关于知识面太泛的问题要怎么解决呢?
师兄:知识面广一点是好事,你可以先了解各个技术都有哪些作用,然后当你在项目中需要使用到这些技术的时候,你再去深入地学习他们,通过项目实战经验不断加深你对知识点的理解,然后再了解更多的知识,从而让自己的核心竞争力不断增强。
我:嗯嗯嗯,对对对。(我越来越意识到自己过往三年中的不足,但是基于对技术的热爱,对改变世界的梦想的坚持,我还是想努力一把)那么师兄,从实际角度讲,我现在大三,如果想毕业之后从事技术的工作的话,现在开始努力还来得及吗?
师兄:(一脸真诚)当然来得及,你现在才大三的五月份,真正开始努力,每天都写大量代码的话,半年时间就可以有一个很大的改变。多准备一点项目经验,还是可以在本科毕业拿到相当不错的Offer的。
我:(死灰复燃)师兄,能不能再问一下,你当年读研了吗?
师兄:(一脸坚定)没有。
我:嗯,懂了,谢谢师兄。师兄再见。
面试总结:其实完全没有套路,就是靠能力说话。知之为知之,不知为不知,不断提升个人能力才是最重要的。