龙空技术网

我做java面试官时,常问的问题

贠学文 1696

前言:

此刻我们对“面试java开发工程师一般问什么问题”大概比较着重,姐妹们都需要分析一些“面试java开发工程师一般问什么问题”的相关资讯。那么小编也在网上收集了一些对于“面试java开发工程师一般问什么问题””的相关内容,希望姐妹们能喜欢,看官们快快来了解一下吧!

大家好,我是贠学文,点击右上方“关注”,每天为您分享java程序员需要掌握的知识点干货。

凌晨四点的北京

前不久,我写了一篇《如何成为一个优秀面试官》的文章,具体可点击如下链接阅读:

如何成为一个优秀的面试官

那么今天,在为大家分享下我在做java面试官的时候,经常问的问题。我曾经面试过很多中级、高级、资深java工程师,以及技术组长。在面试这些不同的级别的工程师的时候,我问的问题大体上都是相同的,只不过对于不同的级别,我对应聘者给我的回答的要求,是不同的。那下面就来说下我常问的问题。

1. 介绍自己最近做过的项目

这个问题,主要考察应聘者对于自己做过的项目的熟悉程度,以及对项目中的难点做剖析。我面试过很多应聘者,真的就连自己做过的项目都说不明白,那这种人就可以直接pass了。

2. 基础知识的考察

说出如下图所示代码的输出结果及原因:

此题主要考察的就是最基础的hashcode方法以和equals方法的使用,以及HashMap如何判断key是否重复。如果应聘者能够准确的回答,并且把原因都说的很清楚,那最起码可以证明,他的基础是没问题的。

记得曾经面试过一个高级java工程师,他的解决问题的能力、沟通表达、思维逻辑都特别的好,唯独就这个问题回答的不是很好,基础有些不太好。当然了,我最后还是让他面试通过了,但是最后我也跟他说了如下这番话:可以看得出来,你的解决问题的能力、沟通表达、思维逻辑都很好,但是到了你这个级别,连hashcode方法以和equals方法都说不明白的话,我觉得有点不太应该,所以你回去一定要多掌握掌握这些基础的东西,如果这些特别基础的东西都掌握的不太清楚的话,你就没有办法保证你写的代码一定没有问题。我们这些java工程师,其实拼到最后,拼的就是基础,如果你基础掌握的不好,你在后面提升自己的过程中,一定会遇到瓶颈的。

其实这个问题,还可以延伸出来以下问题:

1、hashmap的线程安全问题

2、如何高效的使用hashmap

3、什么样的数据适合用hashmap存储,什么样的数据适合用自定义的对象存储

可能后面两个问题,对中级的来说有些超纲了,答不上来也无所谓,但是你一旦答上来了,就是一个加分项。

有很多面试官,都喜欢问hashmap的红黑树结构、链表闭环的问题,concurrenthashmap如何加锁的问题。这些问题我从来不会去问,因为这些问题都是纯纯的八股文的问题,工作中根本用不到,没什么意义。我问的问题,都是可以在工作中用到的东西,这些问题,才能看出一个人的真实水平。

3. 解决问题的能力的考察

问题:如果一个后端的接口,在刚刚投产运行时,执行的效率很快,但是随着用的时间越来越长,它的执行效率变得越来越慢,你能想到有哪些情况会导致这个问题,并且如何解决?

其实这个问题能延伸出来的内容特别多,下图是我列举出来的可以延伸出来的内容,但是这些也并不是全部。

对于上图中提到的java本地的synchronized锁,我觉得有两点是比较重要的,一个是锁的粒度的问题,一个是可重入的问题,如果这两点了解的不清楚的话,在用的时候可能会出现问题,而对于这两点,我通常会用下面两道编程题来考察应聘者的掌握情况:

4. 对面向对象思想理解的考察

问题:如果后端有十个接口,这十个接口都在调用同一个公共方法,这个公共方法做的事情又比较多,现在有一个接口的业务发生了变化,需要调整这个公共接口,但是需要调整的只是其中一小部分。那么你如何利用面向对象的思想解决这个问题?使得既能满足业务的需求,又可能保证代码的可维护性和可扩展性?

大家也来思考下这个问题怎么做比较好呢?

5. 对代码习惯的考察

问题:是否有在平时地工作中积累一些自己认为比较好的代码规范?

记得我刚刚毕业进入第一家公司的时候,我就在工作中总结了很多的代码规范,比如:如何做解耦合、枚举的使用,map与自定义类的适合使用的场景等等。在总结这些规范的过程中,也让自己的编码水平得到了很大的提升。

但是我现在我在面试时问这个问题的时候,很多人都回答,用的是阿里的编码规范,但是我觉得,阿里的规范是很好,但是那终究是别人总结出来的东西,有些事情,只有你真的自己做过了,你才能在过程中受益。而且,我相信,只要你真的用心的做这件事了,你一定可以总结出来一些很好的,但是阿里规范中没有的规范。

6. 给应聘者一个展示自我的空间

问题:是否有在平时地工作过程中,遇到过一些疑难的,并且是自己独立解决的bug。

可能在前面的提问中,都是由我来主导这个面试的流程,那现在通过这个问题,把主导权交给应聘者,给应聘者一个展示自我的空间,看看你能发挥成什么样。

7. 考察应聘者的发展潜力

问题:对自己的未来有什么规划,并且为这个目标去努力?

我始终相信,一个对自己的未来有明确规划的人,他的能力一定比没有规划的人强很多,发展潜力也会很大。因为人需要有梦想,有了梦想,才会努力。

8. 通过一些外部信息来进一步综合考察

问题:以你现在的技术能力,在你们现在的团队中,可以排到第几?

问题:目前面试了几家,感觉如何,是否有收到offer?

8. 给应聘者一个提问自己的机会

尊重每一个应聘者,无论他的技术能力如何。

往期精彩:

如何成为一个优秀的面试官

java中为什么要设计与面向对象理念违背的基本类型?

史上将String常量池讲得最透彻的文章

String为什么不可变

作者介绍:

贠学文,具有多有经验的java开发工程师,业余时间利用头条分享技术知识点与自己对技术的感悟,帮助对自己未来感到迷茫的程序员,在技术上得到提升。结识一些志同道合的朋友,相互促进,共同进步。

标签: #面试java开发工程师一般问什么问题