颍上人才网
颍上职场资讯
颍上面试技巧
正文:Java面试流程详解:如何准备面试及确认候选人是否符合招聘要求
Java面试流程详解:如何准备面试及确认候选人是否符合招聘要求
来源:网络整理2025-03-12

在这篇回答中,以我常规的面试流程为例,来讲一下在 java 方面大致会问到哪些问题,以及怎样去确认候选人是否达到招聘要求。

先说面试前的准备。有些面试官会在拿到简历后直接提问,并且是在候选人进行自我介绍的时候才匆匆浏览简历。然而,我并非如此。

询问招人的项目经理,该岗位所需的技术有哪些,例如是否必须掌握 Spring boot,是否优先考虑有数据库调优经验,是否需要具备 2 到 3 年的相关经验等。弄清楚这些后,我就能在面试中更好地组织自己的问题。

2 浏览候选人的简历,找出不利点和加分项。

不利点包含以下方面:候选人的学历为非计算机相关专业;候选人的经历看上去像是培训班经历;候选人的项目看上去像是自学的;候选人最近半年没有在做 Java;候选人有超过 3 个月的未在职时间;候选人频繁跳槽。

加分项包含以下几种情况:有过获奖的经历;像我一样出过书;拥有大厂的工作经历;最近的项目在技术方面与招聘需求很匹配等。

这里要说明,即便在简历里察觉到再多的不利之处,面试也依然会进行,然而这些不利之处会被记录在最后的面试结论里。

最重要的是,要整理候选人在 Java 项目中所使用的技术。

如果候选人使用了 spring boot、redis、kafka 等技术,那么就将其划下来,在面试时会对这些技术进行询问。

面试前我大概会花费 5 分钟来进行上述准备。这是很有必要的,既体现了对招聘项目组的负责,也体现了对候选人的负责。在这个时间点,候选人很大概率已经到达会议室了。

下面开始面试。

首先是进行寒暄,询问是否需要喝水,询问过来时是否方便。这样做的目的是能够让候选人放松下来。

然后进入自我介绍阶段。如果候选人未主动提及以前的项目和公司状况,我会进一步进行提问。

候选人通常会提及自身的年龄、工作经历以及之前所在的公司和所掌握的技术。在这种情况下,倘若候选人所述的工作情况与简历内容不一致,那么我会将重点放在询问上,以此来排查虚假简历。

3 随后进入到介绍项目的阶段,这可以说是正式面试的开始。

在这个过程里,我期望候选人花费 2 到 3 分钟的时间,大概地介绍之前项目的相关情况,包括用到的技术以及涉及到的亮点。然而,有不少候选人会过度谈论项目的需求,却忽略了项目所用到的技术和两点钟这个方面。在这种情况下,我就会进行打断,并着重提出疑问,比如这个项目中到底用到了哪些技术?如果候选人的简历上写了还用到了分布式组件来实现高并发,那我就会着重询问一些相关情况。你的简历上写了用到某些技术,结合你的项目需求,说一说使用这些技术的必要性。

通过项目介绍,我开始询问候选人在该项目中对相应技术(即招聘所需技术)的使用情况,并且不会过多涉及技术细节。

如果候选人做过这个项目,通常能够说出使用该技术的原因。例如,当项目并发量达到 5000tps 时,就会使用 nginx 进行分布式部署;由于支付模块是异步的,所以会用 kafka 做消息队列等。然而,如果候选人的项目是编造的,那么很大概率上他只会提及技术,而无法说明为何要使用这些技术。通过这种方式能够确认技术的项目经验。

然后大致询问一下项目的开发流程,接着再询问上线流程。如果候选人不知道该如何表述这些流程,我会进行引导。

比如询问,你们的项目是通过 github 来管理代码,还是通过其他方式来管理呢?是用 Maven 来管理项目,还是用 gradle 来管理呢?用(jenkins)来进行部署发布的是什么呢?测试工具是什么呀,比如 junit 或者其他的自动化测试工具。在这方面,我只是询问使用什么,不会进一步询问如何使用。这样问的目的,一方面是要考核候选人的项目开发能力,另一方面也是为了排查虚假项目。

随后是针对候选人在简历上所写技术的提问。这块提问会按以下层次进行:若看到候选人写了用 Redis 做缓存,第一层会问为何要用,原因通常是数据库压力大所以需要;第二层会问如何用,方法通常是使用 Jedis 或 RedisTemplate 等组件;第三层会要求结合一个需求来告知如何使用。无非是,遇到xx缓存需求,设置键是什么,值是是什么。

如果招的是初级开发,问到这个程度就可以了。要是应聘高级开发,我会深入提问,像你用到的 Redis 数据结构是什么,以及如何做持久化。要是招资深开发或架构,我会问得更深入些,比如如何搭建 redis 集群,redis 集群失效了该怎么办,redis 怎样与数据交互,有没有碰到缓存穿透问题。

候选人简历上所写的值钱技术,像 kakfa、mycat 等,我都会逐一进行询问。需注意,这里的询问并非单纯问语法,而是结合项目来询问如何使用这些技术。并且,我还会时常到网上查看一些 redis 面试题,不过我不会直接提问,而是让候选人结合项目阐述相关技术(例如防穿透)在其项目中是如何实现的。

在结合简历上的项目以及进行技术提问这个阶段,我内心会有一些期望。对于初级开发,我的期望是他们能够掌握 Spring boot 的增删改查操作;对于高级开发,我的期望则是他们要有基本的分布式组件使用经验等。因此,我并不在意候选人有多少问题没有回答上来,我更在意的是候选人的基本盘是否稳固。

在进行初级开发的时候,我通过结合项目进行提问。我发现候选人能够使用 Spring boot + JPA(以及其他组件和注解)来进行增删改查操作,从技术层面来看,其实候选人已经成功了一半。即便后面在技术问题上回答得不是特别好,但只要不是太差,通常是能够通过面试的。然而,如果候选人在基本盘技术方面表现得不稳定,处于可上可下的状态,那么就需要通过后面的问题来进一步确认是否能够通过面试。

我(面试官)会在 7 之后自由发文。我通常会从 Java 核心方面问问题,也会从数据库方面问问题,还会从(Spring Boot)框架方面问问题,以及从分布式组件方面问问题。这些问题在网上都能找到,所以我就不一一详细说明了。

我会将这些问题划分成基础、调优和高深这三类。初级开发只需回答出基础类的问题。高级开发则要回答到调优的程度。而更高级的岗位需要知晓高深类的问题。因为不同级别的开发在工作中所对应的职责是不一样的。

Java 核心方面,像 final 的用法,treeset 与 hashSet 的差别等,这些能够直接背诵出答案的内容,属于基础范畴。Spring boot 方面,常见的 jpa 注解或者 Spring boot 方面的注解以及与 Spring boot 开发流程相关的问题,也都属于基础问题。

java面试会问算法吗_java面试会问的问题_java面试会问前端吗

调优方面的问题较为容易理解。例如,你是通过何种方式排查 OOM 问题的呢?你又是怎样排查数据库性能问题的呢?接着可以进一步展开对数据库索引以及缓存等用法的探讨。

高深的方面包含底层源码,例如 ArrayList 的底层源码。同时也包含解决实际问题的经验,像你排查 Redis 超时问题的方式,以及排查 kafka 重发导致不幂等问题的方法。

这里多啰嗦几句。从我的面试结果来看,大多数初级开发仅能回答出基础类问题。虽然这样能满足要求,但通过背题或提前准备,初级开发也有能力回答出更高层次的问题。倘若能回答出这些更高层次的问题,那这就会成为初级开发的加分项。

不少高级开发以及工作经验在 7 年以上的资深开发,从他们的简历来看项目经验较为丰富。然而,他们依然难以说好调优或比较高深的问题,这就使他们处于不利的境地。因为面试官是通过面试来确定候选人的能力的,即便平时项目做得很好,如果在面试中说不好,那么候选人的能力一定会被低估。而能力被低估的后果,要么是过不了面试,要么是薪资被降低。

同时,我虽自认面试能力尚可,但偶尔也会遗漏一些看似会说但实际能力不达标的候选人。例如,某个岗位是依据 4 年经验来确定工资的,某位候选人在我面试时能够展现出这种能力,然而进入项目组之后,却被发现仅具备 2 年的开发能力。遇到这种情况时,项目经理会在私下里跟我讲。不过我不会有什么事,因为我经过面试之后,项目经理还会再进行一轮面试。如果招进来的人能力不符合要求,他也有责任。

我仅从面试官的角度来记录所见到的情况。至于如何提升面试经验,大家可查看我的相关文章。我若有空,也会多撰写此类文章。

到这里,我该问的问题基本上都问完了。我结合项目对候选人的技术进行了确认,还从 java 核心、数据库、框架和分布式组件等多个角度综合确认了候选人的能力。不过,我自认为自己比较为候选人着想,所以之后我会给候选人一个可以自由发挥的机会。

我会提出两个问题。其一,你具备哪些能够促使你应聘成功的突出之处?其二,你还有哪些技术方面的亮点此前未曾有机会进行阐述?同时,我会给出几个方向,例如 oom 调优、数据库调优、分布式组件的使用以及底层源码的分析等。

如果候选人能说出有具体的亮点或优势,我会记录在案。

如果是外企面试,我会对英语能力进行考核。具体来说,就是用英语进行自我介绍,同时介绍自己最熟悉的技术以及最熟悉的项目。

最后询问一些非技术方面的问题,例如期望的工资以及到岗的时间。倘若候选人的简历中存在不利因素,像频繁跳槽这种情况,我会询问其原因。在这个时候,我只是进行记录,不会发表任何观点。

有一个例行公事的问题。我的问题已经问完了。你有什么问题呢?等这件事结束后,技术面试就结束了。

此时通常会让候选人稍作等待,我会依据面试中的提问来撰写面试报告,而面试报告一般由三部分构成。

结合岗位需求,分别说明候选人在 java 核心方面的情况,是达标、勉强达标还是不达标;说明候选人在数据库方面的情况,是达标、勉强达标还是不达标;说明候选人在框架方面的情况,是达标、勉强达标还是不达标;说明候选人在分布式组件方面的情况,是达标、勉强达标还是不达标。为了量化,一般还会给出例子,比如会写这位候选人的能力和组里某位同事的能力很相似。

列出加分项和不利点。前文提及,加分项包含能加班、年轻、有大厂经历、有海外经历、拿过奖、出过书或博客等有助于候选人应聘成功的要点。不利点则有最近频繁跳槽、最近半年的项目背景技术与所需不匹配、有长时间不在职等。

需要强调的是,候选人在面试中的表现情况会被记录。如果候选人有一些不利因素,比如说话太冲,回答问题条理性不强等,这些不利因素也会被记录下来。

第三部分是结论。结论有以下几种情况:通过;不通过;可上可下,有继续面试的价值;虽然本组不适合,但可以推荐给其他组面试。

人家到现场来一次不容易,所以若通过,或者处于可上可下的状态,或者有继续面试的价值,项目经理通常会再去面试。若可让其他组面试,也会有其他面试官过去沟通。这意味着,若到现场面试,在技术面试结束后未继续被面试,那么面试结果或许就不好。后面项目经理如何进行面试,这与技术面试没有关系,也就不再继续深入阐述了。

做个广告,如果你是 Java 初学者,想要快速上手 Spring boot 和分布式组件,那么可以参考我最近出的这本书。

也写了这么多了,最后做个总结。

本文以我作为技术面试官的经历为例,讲述了一次面试的大致流程。此次未详细展开写具体询问哪些问题,因为这些问题很容易通过查询得知。不过,文中写了结合项目来综合考核候选人能力的问法。

大家从文本中可以看出,面试能力与实际技术开发能力并非相同。即便技术能力一般,但如果面试能力较强,依然能够通过面试;反之,如果技术能力较强但面试能力较弱,也可能无法通过面试。

本人知晓如何考核候选人能力,同时也知晓候选人高效准备面试的技巧,然而这与当前问题无关,故而不再详细阐述。对此感兴趣的朋友可查看我其他文章。倘若此回答的点击量较大,我会再次进行更新。

最后祝广大朋友都顺利通过面试,早日实现技能和薪资双丰收。

我的公众号包含大量面试文章,我还出了多本 Python 和 Java 方面的书籍,会定期在公众号里发布书的电子版。请大家关注我的公众号,谢谢。

温馨提示:本内容地址http://m.ysjob.cc/article/articledetail-236359.html转载请注明,以上Java面试流程详解:如何准备面试及确认候选人是否符合招聘要求资讯信息来自颍上人才网(颍上地区最大的颍上人才网颍上人才网

 
 ©2003-2018 颍上人才网  
客服电话:  QQ: