Java开发岗高频面试题全解析

我是祖国的花朵
小米服务端工程师,CSDN认证博客专家(访问量180W+),CSDN学院讲师,GitChat分享者。
在学生时代拿过多家知名大厂和国企的Offer。目前在小米担任服务端工程师,负责安全风控、登录取号和二次号判断等与帐号安全相关服务的开发与维护。
较强的总结能力,丰富的被面试和面试经验,讲解面试题目代入感强,可以站在多个角度来思考面试,总结面试考察点。
立即订阅 5843学习

第2章 第2节 业务逻辑面试和HR面试


大家好,很高兴我们可以一起交流学习。在上一节中,我们介绍了如何制作以及投递简历,相信聪明的你已经可以制作一个比较优秀的简历了。有了通关文牒,就可以进入与面试官的PK环节了。本节中,我们就来介绍下与面试官PK都有哪些环节吧。

Java岗位的面试一般包括2-3轮的技术面试1轮HR面试技术面试主要在考察我们对所做项目的理解与掌握,以及对Java相关技术包括算法的掌握。HR面试主要是考察候选人的价值观,积极性等。


技术面试:

技术面试包括业务逻辑面试,基础技术面试和算法面试

  • 业务逻辑面试:业务逻辑面试其实就是对你简历上所写的项目的考察。

  • 基础技术面试:基础技术面试主要是在考察Java开发相关的技术栈。

  • 算法面试:算法面试就是每轮技术面试都会进行的”手撕算法“环节。


关于基础技术面试和算法面试,我们会在接下来的章节中详细阐述与解析,争取覆盖到每一个高频技术知识点。本小节中,我们先来介绍下如何应对业务逻辑面试吧。

如何应对业务逻辑面试:

业务逻辑面试主要根据你的项目进行考察。在面试的最开始,面试官会找一个你的简历上的项目让你进行讲解。在讲解期间,面试官会针对你所做的东西进行深度挖掘,包括:为什么要这么做?优缺点分析,假如重新让你做一次,你打算怎么做?这个系统的数据来源和去向等等。

这个环节主要考察大家对自己做过的项目(实习项目或者校内项目)是否有一个清晰的认识。

当面试官要求我们对项目进行介绍的时候,我们可以在纸上把整体项目架构画出来(所以面试别忘了带纸和笔哦),边画图边介绍(当然需要在面试之前多加准备)。就比如,你的系统里边的有如下几个模块,那么你应该可以使用箭头来将其连接起来,这样你的系统就是一个完整的体系化的系统,数据的流向也会很清晰。

图片说明

那么,我们该如何准备项目呢?

在做项目的时候就应该多思考总结对项目的数据来源、整体运行框架都应该熟悉,并且可以在白纸上流畅的画出各个模块。比如说你在某公司实习过程中,就可以进行总结,而不必等到快离职的时候匆忙的去总结该项目。

那么,你又要问了,我的项目都是负责一个简单的功能,没有涉及到系统整体的大模块功能该怎么办?

答:

  • 如果你是在实习,可以咨询老员工呀,尤其是你的导师,他可以给你分析分析。
  • 如果你是在做校内项目,可以请教下师兄师姐。
  • 如果你已经参加工作了,兄弟,那你就需要自行解决了,一个功能模块不应该满足你的好奇心。

然后,问题又来了,我没有实习经历,第一次在找实习,我的简历上应该写哪些项目?

答:当然是校内项目啦,研究生在实验室一般是需要做项目的。如果你是本科生或者没有实验室项目可做的研究生,这种情况下,我们可以结合所学知识,比如Spring,MyBatis以及MySQL等技术来搭建自己的项目,自己提需求自己实现。

曾经,我在学习Java的时候,做了一个简单的图形化界面的学生管理系统将设计模式和数据库等技术融入进去,并且进行了多个版本的迭代更新。我将整个完善开发过程记录在博客中,到现在依然是我的博客热门文章之一。所以说,只要你肯动手,项目自然就搞起来了,然后简历上自然就有干货项目经历了。

这里再次重申下业务逻辑面试的准备目标:

可以清晰明确的在白纸上画出系统架构以及数据流向等,在面试之前建议大家先准备好项目架构图哦~

HR面试

HR面试是非技术面试,考察的是候选人的价值观,上进心,对待工作的态度等。这个环节只要按照正常的节奏,稍加准备即可通过,切忌满口胡言,半开玩笑,大大咧咧,以为我都通过了N轮技术面试了,你能拿我怎么样?殊不知,一些公司的HR在招聘上具有一票否决,前面技术面试再优秀,都可以直接否定的。

这里给大家列出几个常见的HR面试问题以及简单的答案。当然HR面试中的回答一般没有固定的准确答案,大家根据实际情况灵活应变即可。

(a)自我介绍:

答:可以使用3-5句话简单介绍自己的背景,在学校的项目,在哪里实习过,平时喜欢写博客或者钻研技术,现在准备找一份Java岗位的工作。

(b)你有把所学知识用到实际中的经历吗?

答:找一个自己的项目中使用到一个具体的技术点的问题,比如说这个项目我使用了单例模式,在某个项目中进行了线程同步等都可以的。

(c)实习过程中遇到了哪些困难?怎么解决的?

答:实习初期不适应节奏,公司级别的项目开发量大,流程比较严格。通过加班,多记笔记,请教老员工,积极接受思考问题的新思维等,逐渐适应了节奏。

(d)遇到特别棘手的问题怎么解决?

答:在我遇到特别困难的问题时,我一般会采用分析法。我会在纸上详细的分析自己所遇到的问题,包括产生问题的原因,原有的方案,预期实现的目标,怎么实现,每一步都缺少什么东西,每一步的难点在哪里,我会把相关东西都梳理一遍,这样可以帮助我更好的分析和解决问题。

(e)说一件最能证明你能力的事情

答:可以列出实习中遇到的困难,如何有效保质保量的完成,也学习到了分析问题和解决问题的思路与方法等。

(f)你平时是怎么学习的?

答:当我接触到一门新的技术,我首先是找一本入门书籍看看,之后会下载相关的视频教程。读书和看视频结合的方式来学习新技术,在学习的过程中,会动手练习相关简单Demo,总结一些学习笔记,进行新技术的实际入门。

(g)最近都在看哪些书?

答:列出一些正在学习的书籍,也可以包括一些时间管理或者与人沟通的书籍。比如,因为意识到有效沟通的重要性,所以在看与人沟通方面的书籍来学习。说出具体看书的动机会给自己的面试增加亮点。

(h)你对职业生涯有规划吗?

答:目前我所接触到的都是比较简单的基础,正处于一个夯实基础的阶段。我觉得工作前几年都是处于一个经验积累,技术提升的阶段。工作一段时间后,我会根据兴趣和擅长技术点来选择一个比较明确的方向,然后向着目标前进。(大概就是向着一些积极上进的方向来回答即可)。


总结:

在本小节中,我们主要交流了一些技术面试中的通用必备技能。从下一节开始,我们将步入本专栏的技术讲解部分,希望大家可以学的充实。

天之道,损有余而补不足,是故虚胜实,不足胜有余。投资自己才是投资未来,通过本专栏的学习,希望大家都可以找到一份满意的工作,早日叩开职业生涯的大厂之门。

如果有我表述不清楚或者表述有误的地方,欢迎大家在文章下边指出,我会及时改正。另外,大家有任何话题都可以在下边留言,我们一起交流探讨。