我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > 面试官的面试见闻
总共48087条微博

动态微博

查看: 2007|回复: 0

面试官的面试见闻

[复制链接]
admin    

1244

主题

544

听众

1万

金钱

管理员

  • TA的每日心情

    2021-2-2 11:21
  • 签到天数: 36 天

    [LV.5]常住居民I

    管理员

    跳转到指定楼层
    楼主
    发表于 2014-09-23 12:57:37 |只看该作者 |倒序浏览
    最近我们公司要招的人比较多,每天都要面上两三个人,从刚实习完的到工作了几年的都有。


    我是个不爱照搬考题面试的人,就喜欢直接聊到哪算哪,一般过程是这样的:


    1、先介绍下过去做过的项目,负责哪些模块。
    这块一般会被当成开场白,因为泛泛介绍一下以后通常还会深入探讨细节。不过有一个人例外,他直接在这个阶段就打动我了。
    他当时除了介绍他的项目和模块是干嘛的,还拿张纸给我画了他们的代码业务流程图,从哪个模块调用哪个模块,哪个系统调用哪个系统,先做什么再做什么,还包括了如果哪步出问题,他们是怎么处理的,有条有理,思维严谨,虽然没有涉及什么高级技术,我当时就下定决心这个人要了。后来入职的半个月也充分证明了这是我最正确的选择之一,他总能提前干完还一直缠着问还有没有活干了,比很多老员工效率要高。


    2、介绍完毕,我通常会先就对方的项目介绍问清楚项目的来龙去脉,这个项目是些什么人在用,有哪些角色,每种角色能干什么事情。
    这个阶段就有人被淘汰了,有的人表达得结结巴巴,不懂如何描述,或者前后不连贯,想到哪算哪,最后对他的项目干嘛用的还是一头雾水。感觉就是个照猫画虎干死活的,我肯定这样的人和产品需求人员沟通一定会出大问题,误会和返工少不了,因为他没法表达清楚他做的项目的业务。


    3、开始就他用过的主流框架问些细节。
    一般先问持久层,不外乎是hibernate mybatis或者jdbc,用jdbc的,先来解释下他们是怎么开启事务的,统一配好就不管了呢,还是会按需调整事务的特性。工作几年的我一般不再问事务有什么意义,一年以下的我会问事务有什么用,没有会怎么样。结果令我很意外,那些做了半年多项目的实习生们,只有一个人答对了,事务能保证一致性,出错会回滚,其他人都是些什么能让条理更清晰啊,性能更好啊......少年们,事务对于使用数据库的意义就像盐对于炒菜一样重要好不好,做为一个做了大半年增删改查项目的人,请不要老拿:我们就是做功能的,原理不清楚来应付。弄懂事务的意义10分钟就可以了吧。
    当然也有人记得那个经典的银行转帐的例子来讲事务的作用,我很刁难地问了一个:如果出帐的帐户和入帐的帐户不在一个数据库里怎么办?然后就没有然后了



    然后我会问的一般还有,事务开启了,有什么办法在事务过程中,出了异常也不回滚数据库操作。这个问题答不上来也没关系,因为需要这么干的时候不多,在分布式系统里可能会有这种需要。我主要是观察对方的反应,我最欣赏不知道的反应是立即请教怎么样能做到,最讨厌的反应是说不会有这种需要的,脸上带着一副懂这有什么用的不屑。


    hibernate可问的问题还挺多的,但我不会问些什么save和saveOrUpdate有什么区别,我觉得这真是八股,一共就两方法,一个保存不了换一个试试就解决了,百度都不需要。我更想问,怎么样在代码中动态控制延时加载的效果,怎么样用hibernate实现只查一张表的部分字段而不是整个表get出来,这些对开发质量更有实在意义。


    其他的问题也不一一描述了。


    4、三大框架的高级用法我不会怎么问,我不需要你深入研究透这个框架,当然如果你真的研究透了绝对加分。我更希望你用得清晰,用得明明白白,而不只是“别人这么用的我也就这么照抄了”。
    比如对于初级开发人员我有个喜欢问的很简单的问题是,你从你的控制层,调service层的一个保存数据的方法时,service一般会返回什么类型的值。有的人回答boolean,有的人回答String,boolean的我会追问那如何获得保存后的数据库记录主键,String的会追问保存失败以后应该返回什么。这个问题确实太简单了,做法很多,但是我想看的是对方的思考方式是否有条理,合理,而不是逮着什么方便就怎么写。有的新手会对着自己的代码想,这样写好吗,换个写法是不是更优雅合理,有的人却是能实现就行了,让他想想其中的道理时,就真的一头雾水。
    这个问题我最讨厌的回答是:太久了,已经忘了。这你都能忘你还能记得什么!你的项目真的是你做的么?
    最喜欢的回答:我们封装了一个返回结果的基本类,里面有一些处理结果标识和通用的异常定义,不同的方法会返回不同的子类,子类中定义了调用端所需的各种信息对象DTO。没有人类似这么答过,我自己YY而已。


    5、接下来是知识广度,从缓存到集群到分布式调用,nosql,MQ队列,maven、svn,看他们对这些技术了解多少,也许因为项目经历所限,你没机会用过这些技术,但是随便上一些技术网站,都能了解到现在流行什么,这些技术是为了解决什么问题存在的,你看这些技术也说明你注意到了一些问题的存在。视野开阔的人,说明他的求知欲强。也许应聘者很多关于各种技术的回答是错的,但是我能看出来他是想过还是没想过,是有自己的一套认知还是胡说八道。你说错没关系,我们团队里有懂的人,他以后会给你把观点改正过来,但是想都没想过,差距就显而易见。
    我隔壁办公室的一个项目经理招人的时候和我最大的差别就在这,他要那些尽可能答得正确的,懂得多的,有经验的,因为他们团队没有架构师,全靠程序员的知识准确性保证质量,他得依赖招来的人的知识准确度。我不缺解决问题的人,尤其不缺依靠搜索引擎就能解决问题的人,我只要你能够思考问题就行。


    接下来说说我对各层次的人的印象,我这里是杭州。


    新手:在公司呆过半年以上,做过一两个简单项目。
    这类有好多都是只会简单增删改查,框架细节不知,java基础的集合也了解甚少,只会用用最常见的两三个,甚至有一半以上说不清request和session的区别,还有事务的作用。


    工作两三年的:分化严重,有的思维很清晰,知道自己的发展瓶颈,渴望有更好的项目锻炼。有的日复一日,年复一年,毫无进步,就是一只井底之蛙,熟练地用着自己的三板斧,稍微变化一下跳出熟悉的条条框框,就迷茫了。


    研究生:这个有点特别,我一共遇到两个,差别截然相反,他们都还没毕业,一个对互联网大型分布式系统已经很了解,看得出来不但有项目经验还基础扎实,抵得上工作两三年的人,而且有好机会,在大公司实习过,并且表现不错,还想有更好的选择。另一个就停留在很初级的阶段,只能做最简单的增删改查,还是在读研途中报的培训学的,虽然就培训生的水准来说,他学得相当不错,原理常识也基本都懂得,只可惜自我定位不对,要价高得离谱,放弃。


    老手:一般三五年以上,有的也是日复一日年复一年,还不如要一两年的。有的就懂得相当多,兴趣已经从如何实现需求有所转移,比如如何管理技术团队,如何提高开发效率,提高代码质量。


    最后我得补充,我的面试方式不一定具有通用参考价值,面试官都是各具个性的,有时我眼中欣赏的东西换个地方不一定会被欣赏,我不喜欢的可能有人会喜欢,最重要的,还是自身技术过硬,眼界开阔,思维表达清晰吧。


    最后的最后我得说:我们公司招聘已经满员了,不用求报名。

    科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
    2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
    3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
    4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
    5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
    6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
    7、科帮网管理员和版主有权不事先通知发贴者而删除本文


    JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

    快速回复
    您需要登录后才可以回帖 登录 | 立即注册

       

    关闭

    站长推荐上一条 /1 下一条

    发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
    快速回复 返回顶部 返回列表