前言:
此刻我们对“面试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开发工程师一般问什么问题