这样的面试官,真心想打人
话说上个月底本应该就收到心仪公司口头offer的我,现在还没收到入职安排,仅仅是一个口头offer。由于这是一家国企,流程比较长,而且后来情况又发生了变数,导致迟迟没有入职。给人不靠谱的感觉,所以悠闲半个月之后的我这两周又开始启动苦逼的面试模式。
关于国企的诟病咱且先按下不表,今天先说一说这家让人气到想打人的企业。
我是上周四傍晚收到这家名叫:北京鑫质世纪科技有限公司(以下简称鑫质科技)的面试邀请。HR在电话那头告诉我:公司是做政府项目的,地址位于慧新西街旁住总地产大厦。预约了周五早上九点半的面试,并且HR告诉我,当天早上把流程走完,所以叫我不要迟到!
笔试
从地铁5号线慧新西街北口下车往东走大概九百米就到住总地产大厦,大楼确实豪华,公司位于6层603室,进去之后前台妹子拿来一张表和一套笔试题。张个人信息表有:个人详细信息,学历,工作经历,父母信息等。笔试题目并不难,都是一些基础题目,但是题量大,貌似总共有6页,必须一小时之内做完。
第一大题 选择题,
这一部分都是Java基础题目,这里列举一些题目类型和难度吧:
- 对异常的理解(简单)
- 字符串的理解(简单)
- 关于catch finally的理解(简单)
- 其他
由于是上周五笔试的,当时也没特别注意选择题,所以还有另外几道题目没记住,不过选择题数量并不多,也不难,难度是什么样子的呢?就相当于大学JAVA SE课程的期末考试题目一样,只要你是学过Java的都基本都能hold的住的。
第二大题 简答题
这一部分题目也不是很难,回忆一些题目吧,下面的解析是根据我当时笔试的答题来回忆的。
- 分别用String和StringBuffer拼接字符串"I", "Love", "Java"。
解析:
String str = "I" + "Love" + "Java"; //String拼接字符串
StringBuffer sb = new StringBuffer(); //StringBuffer拼接字符串
sb.append("I").append("Love").append("Java");
-
redirect和forword的区别
解析:
redirect是重定向,服务器会将新的url返回客户端,客户端向服务器再次发起请求,两次请求不共用reqeust。
forword是转发,转发是在服务器端完成的,服务器将转发后的结果返回给客户端浏览器,forwaord转发后的页面共用一个request。 -
Spring Mvc中@RequestMapping注解的作用
解析:
@RequestMapping起到地址映射的作用,该注解告诉DispatcherServlet将url地址映射到哪个Controler对应的具体方法中。同时这个注解起到窄化地址的作用。 -
Spring Mvc的框架原理
解析:
这里有详解
这道题我本想画一幅图来讲解的,但是后来看到卷子卷面太小又争取时间,就没有画图。但给出了文字解答。现在把别人画的图补上,文字描述引用别人的文章,这道题我是很有把握的。从request请求开始到DispatcherServlet,HandlerMapping,HandlerAdapter,Cotroller(需要程序员写代码),ViewResolver,再到response的过程都大致写出来了。其实面过好几家,面试官都喜欢问Spring Mvc的工作原理,所以我就特意记住了这幅图。
-
给DOM元素注册单击事件
解析:
比如有input元素< input type="text" onClick="myFunction()"/> -
在js中,给数组var arr = {1,2,3,3,4,4,5,6,2}去重
解析:
当时我在卷子上给出了Js版本的答案和Java版本的解决方案:
var arr = {1,2,3,3,4,4,5,6,2};
var newArr = {};
int index = 0;
for(var i = 0; i < arr.length; i++){
var flag = true;
for(var j = 0; j < newArr.length; j++) {
if(newArr[j] == arr[i]) {
flag = false;
countine;
}
if(flag) {
newArr[index++] = arr[i];
}
}
}
由于js原生语法忘记的差不多了,大伙儿看着思路就行了,语句并不一定通过运行:
for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中。
Java版本的做法是把数组放进Set里边,利用Set的无序不重复特点达到出重的目的。
- 数据库部分,两表查询,貌似是学生表和成绩表的关联
解析:
select student.name as "姓名", avg(score) as "总成绩" from student left join score on student.stuId = score.stuId group by student.stuId;
以上是我现在能回忆起来的一些试题,当然试题不可能只有这么一点,毕竟题量还是有点大的。而我提供的解析只是供你们参考参考,并不作为最权威和最完美的答案。
第三部分 逻辑思维
逻辑思维全是选择题,单独占用了一页,由于题目大多数与图片和观察相关,我又没有拍下来,所以这里不能提供题目了。
笔试感受
总体来说,这套试题技术部分相对简单。选择题部分题量不多,难度也刚刚好,简答题部分除了另一道SQL题目和一道编程题目没做之后,其他的题目都做完了,还自我感觉良好。逻辑思维全部蒙,要知道,我是不太在乎逻辑思维题目的,感觉那在编程中没起什么作用,所以无论在大学还是在职场,都没有关注逻辑思维那些玩意儿,我认为有时间折磨那,还不如花时间在算法,多刷一些OJ题目,当然,我算法只是入了个门而已。
当时做完这套试题,自信心爆棚,坐在办公桌上等啊等,一直没有人来给我面试,显然前台妹子也看出了我的尴尬,于是说再等等。等了半个小时之后,我憋不住了,去上了趟厕所回来,以为面试官忙的也差不多了吧!没想到还是没人来面我,趁这机会观察了一周公司环境:公司还算是可以,能在这大热天的北京有一栖之安寝,就无他求了。公司的缺点是比较嘈杂,电脑都像网吧那样陈列着陈列着,显然他们办公室略显不足导致的。看旁边一哥们貌似做开发,我随便搭讪了下,问他公司后台用什么框架,他说不知道!我问这个项目是他一个人在负责嘛?他说不是。看着这胖胖的哥们,挺可爱的,但是却对技术一无所知。旁边一些哥们也很年轻,感觉都是大学在校生或者是大学刚毕业的样子。
迟早没有人来给我面试,HR对我说:要不你先回去吧,现在项目经理正在开会,待会儿我把你的笔试题目拿给他看,如果有通知,我会在今天下午或者周一通知你过来面试。
面试
周五傍晚之时,接到HR的来电,说面试官看了我的笔试,感觉不错,喊我周一下午亮点过来面试。就这样,今天我屁颠屁颠的就过去了。
如果是非计算机相关或者程序员相关的同学可以直接跳过前边直接来看面试这一部分吧,因为太自我感觉良好,所以一路来的时候信心满满,十二点准时从大兴出发,赶在两点之前到达公司。前台简单的接待之后,我便在前台的沙发上等待,这时候心里有点憋屈:怎么又是等待?
等着我都快睡着了,旁边一哥们也正好在旁边休息,经过攀谈,知道他也是来面Java开发岗位的,于是聊了会儿。等了大约半个小时之后,一年纪和我相当的面试官喊我过去面试。
面试官:首先做下自我介绍吧!
我:你好,我叫张翠山(化名),毕业于GY学院计算机科学与技术,我们学校是一所公立二本院校,大二开始接触编程,先是C语言入的门,后来学了数据结构和算法,C++编程语言等。大三开始进入老师实验室,在那学了Java。并于2015年参加校园招聘会进了Z公司,这是一家国企,总部在北京,我入职的是在重庆研发中心。在那...
面试官:好了,那说下你参加实习的感受吧!
这是我第一次被打断,由于来的太突然,我有点语塞。自我简介的这些有小部分是在简历就能看到的,但是我想从学校或者老师实验室讲起,讲到我如何参加的校招,如何在重庆工作,和后来如何来北京,又为何离职等等。我想讲完这些大致也需要五六分钟吧,但我讲不到一半就被打断了,我想可能是我太罗嗦了。
我:我2016年3月入职的重庆研发中心,公司对我进行了技术和业务的培养,同时在那参与几个模块的开发。在重庆...
面试官:那你说你最大的感受是什么吧?
这是我第二次被打断,我一时也慌了阵脚,开始感到面试官是不是故意刁难我。看着这年纪和我一般大的面试官,我不知道他到底想问什么。我高中复读过一年,农村孩子又比其他同学晚入学一年,所以我比我的大学大学同学平均年龄大两岁。换句话说,我今年应该有3年工作经验,但却只有一年的工作经验,因为晚毕业的原因。即使是一年工作经验,也要把一年该学到的说出来吧。
我:呃,学会了使用前端的和后台的框架吧,比如前端的jQuery,后台老的三大框架SSH:Struts,Hibernate,Spring和新三大框架:Spring,Spring Mvc,MyBatis,Java开发工具如:Maven,Svn,因为在老师的实验室只是用纯Mvc模式...
此时我被第三次打断,面试官说:好了,那我问你SQL问题。
我一脸蒙逼,他提到实习获得的收货,那是去年的事来了,我本想先介绍实习和老师实验室对比,纯Mvc做项目和SSM三大框架做项目对比的区别和感觉,再说说后来我来北京干开发半年获得的感想。从承认我面过的好几家公司都以我一年跳两次曹为诟病,大家都比较喜欢问我为什么半年一跳。后来我也深深认识到频繁跳槽带来的后遗症。但是面对着眼前这个看起来和我一般大的面试官,三次打断我讲话,我内心开始火了,脸面却保持镇定。
面试官:你的这SQL不会做啊。
我:当天你们不是限时么?题量这么大,能把题昨晚已经差不多了,顾不上等到题也是应该的。
心想:对了,尼码还有这么一道奇葩题目,说:有个Person类的JavaBean,里面有name,age两个属性,现在想添加一个属性email,在不改变原来代码的基础上实现这个功能。我当时想,不改变代码怎么写啊?直接添加属性?继承?。
此时,我注意到面试官正在写东西,我顺着看过去,原来他是在我的卷子上改分:42分,我的天,我再次瞟了一眼我写满密密麻麻答案的卷子。尼码才42分?打死我都不相信!
面试官:这道SQL题,你做不出来嘛,你学过数据库吗?用过哪些数据库?
我:在大学学过数据库理论基础,用过MySql,Oracle。
两道SQL我确实只做一道,另一道当时没看,一是时间不够,二是我写SQL能力确实不行,即使看了那道题也不一定写出来。
面试官:有两张表,第一章表有8条记录,第二章表有10条记录,把他们相同的记录查找出来!
我:这两张表有什么关系啊?(这两张表应该是有主表从表之分吧,然后从表的外键指向主表的主键,我是这么认为的)
面试官:比如有A表,B表,他们有共同的记录,他他们共同的记录查找出来!
我:Select a.x,b.x from a,b where left join a on b ?(大致是这样的,毕竟我还真的记不清内外连接的区别和语句,不过查手册还是能够用的),应该用左链接吧?
面试官:什么是左链接?你听清楚我的需求了没有?
见面试官一脸不耐烦,我也觉得是开始反攻的时候了,说:左链接就是left join呗。你觉得你描述的需求说清楚了?把两张表相同记录查出来,为什么要把相同记录放到两张表里面?两张表字段相同?
面试官:a表和b表有一个字段相同,懂了吧?比如说id。
我想:尼码不就是相当于课程表有8个学生成绩,学生表有10个学生,然后把所以学生成绩都查出来呗。这里面应该有主表从表的概念吧?应该是从表有外键指向主表的主键吧?
于是脱口而出:用内连接吧。
其实我没听明白他问什么,大概就是两表查询的意思,见到左连接不对,难道要内连接?于是就脱口而出!
面试官:知道in么?可不可以用in?(也可能是inner内连接)
我:不知道!
面试官:你简历写用过MySql是吧?那你用过Oracle和SqlServer么?
我:用过,三者的SQL语句差不多,大致通用,只是少部分有区别,不过近期用的是MySql数据库。
接下来语塞,不说话,面试官沉默。见到这般尴尬,我直接说了吧,这样面也没什么意思了:你们招Java程序员却一直问SQL,是在招DBA么?
面试官:我们是政府项目,对SQL要求很高,所以你先回去吧!
我问:没有下一面了么?
面试官:没有了!
这是我面试以来最气愤的一次,在面试过程中被打断了好几次,我觉得连最起码的尊重都不给我。明明是看过我的笔试卷子才喊我面试的,当场用黑色且不是红色笔在我卷子上判分:42分,这是几个意思?不就是想证明我low逼呗,笔试成绩没过关呗!还有,最让我气愤的是:这号称项目经理的,年纪看起来还很年轻,就算年纪和我一样大,就算他正常毕业,现在满打满算3年经验。你喊一个三年经验面一个一年经验的,能面出个什么鬼东西来?换做我来面他,我也能把他面到怀疑人生他信不?
回来百度了这家公司,居然网上一丁点资料都没有,百度的相关查询倒是蛮有趣,主动关联到:“培训”关键字。这家公司既没有官网,也没有见到任何网友发表这家公司相关面经,现在我来弥补这篇空白了。遇到这样的面试官,我想说:如果你们真的是招人的,那么你们缺乏对求职者最基本的尊重。如果你们是打找招聘为旗号,实质搞培训的,我想为这个行业对你们说一句:呸!