Java高级程序员面试经历

    我80年出生,05年毕业到现在已经快12年了,如果一直在技术上辛勤耕耘,足够的努力,加上多年的技术经验累积,这个年纪混到架构师级、技术总监甚至CTO还是有可能的。不过因为我自己的经历有点特别,2011年初离开深圳,之后就很少接触编程了,所以水平基本上停留在那个年代,Java高级程序员的水平都没有达到。自己不仅没有达到这个级别,甚至去面试的时候,还要和九零后一起竞争。实际上很难遇到比我年纪更大的面试者了。重新回到深圳,见下老同学,有和别人一起开公司的,以技术身份作为合伙人加入的,有公司元老,分得股权的。到这个年纪,事业上总得有点成就了。但于我而言,一切都得重新开始。

    说起来,作为程序员脱离这个行业6年之久,对很多新涌现出来的技术一无所知。重新找工作,自己心里真是没底。为了找工作,自己花了两个月的时间来复习java基础知识(基础语法、数据结构及算法、设计模式、高级主题,包括多线程并发、IO体系结构、集合类、Java语法新特性、JVM虚拟机内存管理、Java类加载加载等)。当我在复习这些技术的时候,自己真的感到汗颜。毕业后,上班环境非常轻松,下班后只顾享受,一副无所事事的样子,所以05年毕业,一直到10年底辞职离开程序员这个职业,感觉自己的知识技术水平几乎没有任何提高。直到最近我才详细了解java里面的IO、集合类这样的整体架构。对于一个java开发人员来说,这应该是最基本不过的了。所以,这次的经历告诉我,想要在某件事情上取得成功,你必须付出比别人多的汗水。

    在不到两个月的时间里,我也快速的学习了Spring、Hibernate、Struts这些web开发框架,快速浏览前端JavaScript相关的一些技术。因为也想做金融开发相关的工作,在看到网上有招Android前端开发的,我也快速学习了Android开发,另外学习了SQL,对于特定数据库自己感觉时间上不太够,所以就没有更多的深入。在离开程序员之前在一家做搜索引擎的技术公司,只知道一个Lucene搜索引擎框架,其他的技术很少用到,项目组连SQL都没有用到,自己也没有主动去学习。最后的结果就是孤陋寡闻!作为一个技术人员,除了要精通自己使用的开发技术外,应该对自己有些要求,就是了解和学习最新的技术。这不仅可以提升自己的知识面,更重要的是,在实际开发中,对问开发中遇到的问题可以提供宽泛的解决方案。只不过,我认识比较晚而已。不过人的一生,想要做某件事情的时候,任何时候都不晚,只要你不丧失信心,只要你足够努力。

    除了学习,自己也在网上收集了一些有关面试、笔试的经验,如《面试总结——Java高级工程师》系列的几篇文章。随着自己准备的推进,自己的信心也在增强。在网上投简历的时候,我写填写上10年以上开发经验。我相信这个“10年”足以吸引很多HR的眼球。对于一些公司来说,他们需要这样有经验的开发人员。但是当他们看到我的简历经历上的项目经验的时候,只有寥寥的几条。虽然我也很想去编造一些项目经验,这样就可以获得更高的关注度,但是我最终没有这么做。我想告诉自己,自己能行。也幸好没有乱编,因为现在很多面试都是在这些项目经验上展开话题和讨论的。

    第一个面试,2月24日(周五)上午简历刚发上去不到半小时,就有一个电话打过来,后来也是这个电话让我拿到了第一份offer。下午有一个技术人员,给我第一轮技术面试,聊了下我之前做搜索引擎的一些技术。主要是工作中用到的Lucene框架、搜索引擎分词技术,还有数据处理hadoop(这在我离开公司时,还只是刚引进的实验技术,而且还不是我的项目组在用)。因为对hadoop只是了解一点,在面试的时候,差点露馅。不过我从hadoop把话题转移到了当时处理这些数据在搜索引擎里面是干什么用的,而不是一直纠结于hadoop怎么处理这些数据的。面试官也是比较nice,一边就我的话题聊了下,同时给我介绍了一些新的技术Spark、Storm等,正好这些我也都是在最近简单了解了下。面试过程不到二十分钟,感觉不错,至少自己并没有紧张。面试官说,他把我推荐上去,还有第二轮面试。我礼貌的表示感谢!到下个星期二上午,第二轮面试居然也是电话面试。这次面试稍微深一些,主要问工作中的问题怎么解决,分词系统怎么实现的。这些都还好说,这些确实有项目经验,话题也好展开。但提到一些新的搜索引擎技术如:ElasticSearch,我居然都没有听过,这就有些尴尬了。毕竟,如果是做搜索引擎,而且是基于Lucene的,怎么可能不知道它。但是,好在面试官并没有太过追究。整个面试过程也不算太长,让我感到吃惊的是,这期间没有提到“Java”这个词。面试结束后,面试官告诉我,HR那边会很快通知我。听其语气,感觉应该是成了。果然没错,下午HR那边就打电话通知我,通过了面试。然后问我薪资方面,除了之前说的,还有什么要求。最初HR给我打电话的时候,我说的最低应该是18K,但这次因为二面通过,我说其他的公司面试我要求都是20K。HR说可以争取,最后公司那边给到了21K,这已经达到了自己的要求。因为多年没有工作,心里没底,最初是想能够达到15K就算是达成目标,然后通过一段时间的学习提高,快速恢复状态。

    周三一整天,参加了四个面试,其中有两家因为项目不匹配,直接第一轮就淘汰,他们主要做企业ERP、WEB开发,而我这方面相对还是比较弱的。有一个面试,第二轮是华为面试官。面试官比较严肃,问的问题也比较广和深。基本上是看到你简历上写了什么项目,然后就此开展,一步一步深入。先是介绍项目情况,架构,技术等,然后中间会提问遇到的问题,应该怎么解决。这个确实是考验一个人的工作经验,以及解决问题的能力。有不少问题,我想出来的解决方案都不理想,面试官发现其中的弱点之后,我就不知道怎么做了。有点小尴尬,但整体过程也还不是太糟糕。自己心里想,就当是学习了。另一个面试,他们的项目也是EPR和WEB开发的,面试官年纪稍大。这次面试并没有第一轮就把我淘汰,面试官比较nice。面试过程同样是根据简历上的项目经验、技术展开。这次面试官的面试重点是偏技术的。比如算法的考察,面试官问,如果有一些无序的数字,应该怎么快速地让它们变成有序的。我说可以可以用快速排序法。接着就问,快速排序法怎么实现,我把快速排序的基本思路说了。接着提问,那么如果在实际环境中,给你这些数字,你打算自己写一份快速排序的代码去完成这个任务吗。我当时想,可以在网上找快速排序的代码,自己再封装成工具,就可以使用了。后来想,既然封装,那是不是已经有封装好的工具呢,我想到了Java的集合类,里面有一些排序的功能。我说可以用Java集合类的排序接口来实现,面试官表示认同。后来问我,是哪个接口,我一时说不上来,不过他说我应该是知道,只是一时想不起来,没有继续追问。之后,问了一下设计模式,工作中常用的。我讲了几个,比如单例模式、代理模式、MVC模式等。接着问单例模式有几种,我说主要有懒加载和启动时加载。接着问代理模式是怎么实现,把基本的类关系说下。我简单的描述了代理类要引用被代理类,在代理类中提供接口给客户类,而代理类接口的具体实现细节是由其引用的被代理类来实现,被代理类于客户类而言是不看见的。又问Spring框架实现什么模式,我说主要有工厂模式(Ioc容器)、MVC(Spring MVC)和代理模式(AOP编程)。设计模式的问题问完,问Javascript问题,这个我就更是弱项了,因为从来没做过web开发,最近才学习了解前端开发技术Javascript,有不少答不上来的,一些问题说了自己的想法。面试官觉得我可能只是用得少,记不住了,基本思路还是可以。面试官给我的评价也还是不错,说java基础技术扎实,说等下又第二轮面试。第二轮面试,则重点在项目经验上,主要还是讲项目上的问题,以及解决思路。面试完了,问我对他们项目有什么想了解的还有薪资方面的问题。因为之前已经有一个offer,所以我这次直接说了20K以上。第二天,这家公司HR打电话更我确认,我说期望在20-23K之间,HR和公司领导沟通后,说可以满足我的要求,月薪是23K。感觉自己还是不错的,松口气。

    周四,面试一家,基本过程差不多,不过面试官跟我是同岁的。其实我这个年纪来面试,很多面试官都和我差不多了。后来打电话说问愿不愿去他们项目组,不过他们项目组可能给不起那个工资要求。如果有意向,也可以把我推荐给其他项目组,有些项目组工资高些。不过在我看来,因为都差不多,也就拒绝了。

    周六,平安科技的专场面试。其实首轮面试,我感觉回答的还是不错的,问了JVM虚拟机的问题,Spring框架原理,还有如果自己去实现Spring框架应该怎么做(参考了黄勇《架构探险——从零开始写WEB框架》里面的思路)。不过有一个问题,面试官居然也是非常了解搜索引擎技术的,问我在公司用的Lucene是什么版本,我说1.6,结果面试官说,Lucene都5.x(实际情况是已经6.x了),你们还在用这么旧的版本啊。终于露馅了!面试官说他们项目要求的比较高,建议我去他们公司其他项目组看看,我拿着简历走了,因为没兴趣了。

    其实面试,跟公司项目方向、面试官等都有很大的关系。比如我说的周三的面试,有两家做的内容差不多,但是一家直接在第一轮面试就把我pass掉了,另一家我就成了。所以说,面试失败不代表自己水平不行。没必要感到垂头丧气。但是面试之前,自己还是要有准备的,JAVA基础肯定要牢固,而且高级工程师面试的主要内容都是与工作和项目经验有关的,重点考察一个人解决问题的思路。

    工资上可能对于某些编程大牛来说,并不具备优势,但是也基本上是普通Java高级工程师的薪资水平了。如果过于纠结于工资,工作可能也不会开心。尽管第二份offer每个月多出了2K,而且试用期是21K,比起第一家80%只有17K左右高出不少,我最后还是选择去了第一份提供offer的公司。放松心情,重新开始,这才是我这次找工作的重点。明白自己努力的目标,这样也会让自己的行为更有效。

阅读更多

没有更多推荐了,返回首页