前言:
最近一朋友离了职后,找工作前前后后面试了6天,一共10家公司,我找他分享出面试过程及经验,希望能对各位正在面试中或者准备面试的童鞋有所帮助,以下面试企业为了保密不说实际名称。以下为第一人称。
第一家公司:简称A
由于刚刚开始面试选择试试水,就在智联上投递了一写公司,这家就是第一个让我去面试的公司。这家企业是新三板上市的一家公司,大约有人那样。面试时间定在早上10点,去了以后给了一份面试题
内容如下:
一、Spring1.请说明spring实现AOP的两种方式及其区别。2.请说明Spring生命周期中的可扩展接口及其定义的方法,如FactoryBean.3.请简述SpringCloud的名个组件及其功能。二、MyBatis4.请说明MyBatis中DAO接口的实现机制。5.现在需要增加一个计算SQL执行时间的插件,请简述该插件的实现原理与方式。三、前端6.请简述Prototype的应用场景及其基本用法。7.请简述Promise的应用场景及基本用法。四、分布式及中间件8.请简述CAP理论。9.请简述Redis2.X实现高可用的方法及如何水平扩展。10.请列举常用的消息中间件及其特点。11.请简述HBase的基本概念、应用场景及其与关系型数据库的区别。五、Java12.请简述Sring.intern()方法。13.请简述jdk的类加载机制、ClassLoader及双亲委派模型。14.请说明Executor、ExecutorService、Executors、ThreadPoolExecutor之间的关系。15.请简述Java并发编程中,锁的几种类型。16.请说明CountDownLatch、CyclicBarrier、Semaphore的适用场景。17.请说明ConcurrentHashMap在1.7和1.8中实现的不同之处。18.请简述volatile关键字的含义、JMM内存模型及happens-before原则。六、设计19.请简述Observer模式及其在JDK中的应用。20.请给出一个分布式网络爬虫的设计架构,支持每天G级的爬取数据量。
然后hr一会告诉我笔试不过,无法进入面试。这个还是很难受的。因为在面试过程中不管如何都会和面试官聊下,起码知道哪些题不对,也可能是我自己准备不充分导致,第一次面试就这样草草结束。
第二家公司:简称B
这家公司规模很小,大约就50人吧,是boss直聘上一个hr主动联系让去试试,所以就去,对于这家企业还是信心满满的,想找点自信,结果恰恰相反。
去了以后也没面试题,写了一个登记之后hr就让我和面试官聊天,首先让我把项目流程介绍一下,我说了以后。他说我看了你的github代码感觉还不错,你给我show一段。有点懵逼,猛下这么说出乎我的意料,我就说写个2分查找吧,就随手写了一个但是我竟然犯了一个致命错误,返回值有些问题写成null,但是明显我采用的是int而不是integer。
然后接着问我web前端遇到过什么问题没有,我说平时这方面遇到问题倒不是太多,他说好你给我写个过滤器,这个实在是没法写出来,平时可能都是电脑写,足以说明我准备的确实不充分,后来又让我写个sql,虽然最终写出来了但是时间过久。然后聊点其他的就说你回去吧,后续通知,我就知道这次面试再次挂了。心情低落极点了。
第三家公司:简称C
这家企业规模还不错,有上千人吧,环境也可以,是拉钩上看到的一家企业。也是10点面试,去了给了一个面试题,一份心理测试题,面试题难度还是有点的,10道选择题考察知识多少final,static,dowhich等知识难度倒是一般,后面是大题,比如写出ssh的配置,数据库连接池配置,thread和runnable是什么区别,写几种单利模式,Linux一些查找命令,一个复杂的sql语句。Linux我不太熟悉,没写出来,ssh配置这个平时看的也是,写的很一般,数据库连接池配置写的也一般。
然后是心理测试,这个测试题非常多而且考察东西也多,包括一些国外的名人问他干嘛的,设计怎么让北京三环不堵车,还有怎么设计类似摩托车但是不耗油等等吧,答完题大约11点半,然后第一面竟然是hr,聊了还不少,关于为啥跳槽,发展方向,以前做啥等。第二面大约就几分钟,问我会Linux不,我说不怎么会,以前你干嘛的然后就说你回去吧我们后续通知。基本也挂了。
第四家公司:简称D
从第四家公司开始变得顺利,连续过了6家公司。经过前3家失败,我回去总结下,把基础知识复习一下,避免死在这样的问题上。这家企业大约人,一家传统的公司,主要大数据方面的。去了也是一份面试题,这个面试题对我来说比较简单,选择题就不题了,大题是三个一个问什么是ioc和aop,一个是设计模式,一个是sql。
大约半小时就写好了,然后面试官看了一眼面试题也没问面试题上问题,问我你说咱们聊什么知识,我就说多线程吧,然后他问我Java线程池几种方式,我回答4种,各位自己查哪几种,然后又聊thread和runnable,接着问hashtable和ConcurrentHashMap,因为看过这两个的源码所以回答还是挺轻松的。陆陆续续问了一些线程安全问题,最后又聊了一些存储过程知识,这个平时用的少回答的一般,但是我观点是尽量少用存储过程,避免把大量业务放在数据库处理。
还问了一些数据库索引设计问题,这个我会,所以答的也可以。最后问下我薪水我说最低多少,就开始二面了。二面是一个不是Java的,是这整个团队的组长,主要问了一些如何处理几亿日志查询,我说可以采用存储过程还有内存数据库什么的,她说不是好的方案,接着我问你们有什么好的方案,她说我们暂时没有,用的就是你刚刚说的。总体还是挺满意的然后问我薪水,让我等下说让总监决定我的薪水,然后总监不在,这个确实不在,他领着我去人事那边做个登记说明天给电话来复试。
大约2天后打电话让去复试,因为我手里有offer了就给hr说了情况,我说你问下,如果薪水不到,我就不去了。后来hr回复他们确实给不了,我说那就算了。这家公司是好的开头,整个信心提升了好多。
第五家公司:简称E
这家企业大约人,多个研发,办公环境倒是一般,下午2点过去的,也没有面试题,主要问线程知识,然后问我你熟悉哪个数据结构说个,然后我随便说了几个他说可以,又问我要多少薪水,最低多少我说了下他说没问题,就让我去二面了。
二面问的是数据库,线程方面知识,我感觉答的倒是一般,大约聊了半个小时,然后说我们今天就聊到这,然后我就回去准备下一家,然后回来路上一面就给我打电话说你面试通过了,薪水按照你说的来,问我啥时候入职我说下周,他说尽快,最后hr也给我说了薪水,过了一天就发了offer,这家公司感觉还行吧,最后只是感觉挺对不起hr的,答应去没去,打电话时候明显生气了。
第六家公司:简称F
这家公司规模还不错,可能有些买水果支付钱的时候还用到,但是总部在上海,北京新成立不久。这家没面试题,主要是针对项目,问我遇到过什么问题,为什么这么设计,好处在哪里,我都一一解答了,聊得时间蛮久的,最后他说他们加班可能会少,团队目前就5个人,问我能否接受,然后又说自己公司很有前景什么的一堆,我个人不喜欢这样小团队,坑太多就说我回去考虑下给你打电话,当然薪水他也说可以按照我要的来。因为不喜欢这样环境所以也没打电话给他。
第七家公司:简称G
这个公司可以算是3线互联网了,小有名气,规模也比较大,当时是很想拿下的,下午2点过去的,不过面试的还挺多的,就我那一屋子就3个人,面试题是一个小时,第一题主要是针对目前流行的一些技术,让解释下。
我大约搞定了80%,因为平时看的多,但是也很多只是知道存在并不知道用法,第二题是一个排序,我写了一个快排,第三题是求一个数的质数第四题是二叉树(个人觉得出的有问题我后来问题这个题意义是什么他说考察一下是否会写递归)第五题是设计题我参考了一下集合方面的设计,采用接口+抽象类+类这种方式。最后是一个排序,我没有多少思路。
面试时候可能人多直接由技术总监面试,技术考察点倒不是很多,着重考察个人,问你如何展开工作,你是什么样的人等等我回答的还可以,然后他说你的薪水多少我说下,然后他签字说去找hr吧。这家过的很轻松。
hr给的薪水明显低些,但是他们4个月奖金,3个月一发,考核是0.8到1.2基点。offer合同也有写,应该比嘴上说我们几个月年终奖靠谱多了。这家企业我犹豫了好久,因为后面我成功面试了另外一家,这家技术总监给我打电话聊了有半小时说了一下他们的前景而且薪水会加到比我拿到的只多不少,hr后来打电话也确认了这件事。
在后来属于我的直属上司又打电话和我聊聊,不过说实话挺感动,我说我们加