文档介绍:最近我们公司要招的人比较多,每天都要面上两三个人,从刚实习完的到工作了几年的都有。
我是个不爱照搬考题面试的人,就喜欢直接聊到哪算哪,一般过程是这样的:
1、先介绍下过去做过的项目,负责哪些模块。
这块一般会被当成开场白,因为泛泛介绍一下以后通常还会深入探讨细节。不过有一个人例外,他直接在这个阶段就打动我了。
他当时除了介绍他的项目和模块是干嘛的,还拿张纸给我画了他们的代码业务流程图,从哪个模块调用哪个模块,哪个系统调用哪个系统,先做什么再做什么,还包括了如果哪步出问题,他们是怎么处理的,有条有理,思维严谨,虽然没有涉及什么高级技术,我当时就下定决心这个人要了。后来入职的半个月也充分证明了这是我最正确的选择之一,他总能提前干完还一直缠着问还有没有活干了,比很多老员工效率要高。
2、介绍完毕,我通常会先就对方的项目介绍问清楚项目的来龙去脉,这个项目是些什么人在用,有哪些角色,每种角色能干什么事情。
这个阶段就有人被淘汰了,有的人表达得结结巴巴,不懂如何描述,或者前后不连贯,想到哪算哪,最后对他的项目干嘛用的还是一头雾水。感觉就是个照猫画虎干死活的,我肯定这样的人和产品需求人员沟通一定会出大问题,误会和返工少不了,因为他没法表达清楚他做的项目的业务。
3、开始就他用过的主流框架问些细节。
一般先问持久层,不外乎是hibernate mybatis或者jdbc,用jdbc的,先来解释下他们是怎么开启事务的,统一配好就不管了呢,还是会按需调整事务的特性。工作几年的我一般不再问事务有什么意义,一年以下的我会问事务有什么用,没有会怎么样。结果令我很意外,那些做了半年多项目的实习生们,只有一个人答对了,事务能保证一致性,出错会回滚,其他人都是些什么能让条理更清晰啊,性能更好啊......少年们,事务对于使用数据库的意义就像盐对于炒菜一样重要好不好,做为一个做了大半年增删改查项目的人,请不要老拿:我们就是做功能的,原理不清楚来应付。弄懂事务的意义10分钟就可以了吧。
当然也有人记得那个经典的银行转帐的例子来讲事务的作用,我很刁难地问了一个:如果出帐的帐户和入帐的帐户不在一个数据库里怎么办?然后就没有然后了
然后我会问的一般还有,事务开启了,有什么办法在事务过程中,出了异常也不回滚数据库操作。这个问题答不上来也没关系,因为需要这么干的时候不多,在分布式系统里可能会有这种需要。我主要是观察对方的反应,我最欣赏不知道的反应是立即请教怎么样能做到,最讨厌的反应是说不会有这种需要的,脸上带着一副懂这有什么用的不屑。
hibernate可问的问题还挺多的,但我不会问些什么save和saveOrUpdate有什么区别,我觉得这真是八股,一共就两方法,一个保存不了换一个试试就解决了,百度都不需要。我更想问,怎么样在代码中动态控制延时加载的效果,怎么样用hibernate实现只查一张表的部分字段而不是整个表get出来,这些对开发质量更有实在意义。
其他的问题也不一一描述了。
4、三大框架的高级用法我不会怎么问,我不需要你深入研究透这个框架,当然如果你真的研究透了绝对加分。我更希望你用得清晰,用得明明白白,而不只是“别人这么用的我也就这么照抄了”。
比如对于初级开发人员我有个喜欢问的很简单的问题是,你从你的控制层,调service层的一个保存数据的方法时,s