首页编程java编程java后端面试题 java后端开发面试题

java后端面试题 java后端开发面试题

编程之家2026-06-04653次浏览

今天给各位分享java后端面试题的知识,其中也会对java后端开发面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

java后端面试题 java后端开发面试题

Java面试有哪些问题

一般来说面试我都记下印象深刻的面试题,其他感觉都没什么好记的,但是今天这个面试的过程感觉是我职业生涯中比较有意思的一次面试,遂分享出来。

今天顶着大太阳出去面试,找了好久终于找到了这家公司的位置,貌似是集体办公区域,就是一层楼有N个公司在办公,也没什么隔断。心想创业公司吧,这样也正常。在这之前已经面过三家公司都挺顺利,公司规模都还可以,还有一家一面也是过了等二面。之所以来这家公司面呢是因为对公司的产品还挺感兴趣的,想来看看。

然后到地方后面试官先给了我一份卷子做,都是些很简单的题,写完后等了好久面试官来了,开始进行面试。面试官先看了下我的简历,然后说你怎么两年才做这么4个项目,尤其是第一家才1个项目。我说外包公司项目多,没必要挨个写上,写上最近一家公司的项目,和之前公司代表性的项目就行了。然后他就教育了我一番,说怎么写这么点儿呢,很容易让人觉得你啥都没做,做过的都得写上。我之前一直以为我这种两年多经验的写一页简历足够了,不过他说了下我觉得确实可以考虑考虑多写一些。。。不过老实说我在想。。难道他毕业四五年了还把刚毕业的项目往简历上写?

吐槽完项目。面试官不知道为什么看着我的简历以为是培训班出来的,然后就旁敲侧击的问我毕业是否有参加过什么培训啊。我满脸黑线,我简历写的我第一份工作毕业就进去的,而且我项目都是专业领域性很强的项目,这是从哪儿看出来的。然后这面试官又问我那你大学都学什么课程啊,我又耐着性子解释了一圈。然后他看问不出啥的就没问了。然后就问了一个项目有关的正常问题。开始问我技术了。

第一个技术就问我spring框架,然后问我spring主要注重哪些技术,我说了就依赖注入和自动化配置,然后这人问我如何学习spring,我说看了spring实战,深入理解spring架构,然后还看了源码,然后这人说你看了官方文档吗,我说看了小部分,然后他说你怎么不多看官方说明文档呢,我说我更多喜欢直接看看源码设计,而且官方文档更多就是说明书的意思,我觉得用来入门还行,要真正了解肯定还是要深入底层去看下。然后争论了一番后他问我springboot自动化配置如何实现的。我从实现原理,源码流程说了一圈,我估计他应该不懂这块儿,然后我说完后他和我说你觉得看这些东西用处大吗,你为什么不看官方文档。我当时真是满脸黑线,合着这官方文档在他眼中是圣经啊。然后又问我springboot如何实现的tomcat启动,我源码解释了一圈后我估计他还是不懂源码这块儿,所以又和我死磕说你这些东西为什么不看官方文档说明呢。。嗨,我第一次看到对官方文档如此执着的人..。。当然了他举了个有意思的例子,说比如你买了个冰箱,你不看说明书你怎么知道如何使用呢。。我真的很想说我看过这台冰箱深入介绍的几本书并且连内部零件构造都了解你觉得我不会用这台冰箱吗。。

然后框架就没问了,老实说我觉得可能是他也不太了解。。然后就问我sql了,说有没有用过索引,sql优化。我说了一些,然后他说下mysql索引类型呢?我说你指的哪种类型,是hash/b+tree,还是聚集索引/非聚集索引,还是普通索引/唯一索引/主键索引/.....这种。然后我估计他对前两个应该不了解,然后恼羞成怒的来了句你觉得我问的是哪个?我去,这个我哪能知道。然后我就说了下 hash/b+树索引,然后这个人来了句b+树你觉得是什么,是一种算法,还是xxx,我当时很无语,名字都叫树了这难道不应该是一种数据结构吗。然后又解释了一圈我感觉他可能也不了解这块也就没问了。然后问我算法。

java后端面试题 java后端开发面试题

其实就简单的问了句,你了解哪些排序,我说冒泡排序,插入排序,快排,堆排序.....,然后这面试官嘲讽的笑了一声,我赶紧回想了哪个有问题,结果想了下没想到哪个字说的有问题我就问你为什么笑,然后他说堆排序是什么东西。老实说听到这句话我是真的很想直接走的,但是想下这对不起我请的一上午假。然后我很克制的说了句,你不知道不代表没有,这是任何一本讲数据结构与算法的书都应该会讲到的东西,建议去百度下。然后这个时候我估计他本就有点儿恼羞成怒的心情被彻底点着了,然后开始问我jmm。哦对了,他看着我写笔试题的时候排序那儿说了句这是什么排序。(我觉得快排方法应该还是挺好认的)

jmm问我五大数据区域,我说了后最后我提了一下直接内存,然后这人我估计也不懂,然后就开始说我问你这个了吗?我让你说五大区域你为什么提这个?你有听清楚我的问题吗?我当时就???,合着我这多提了一嘴直接给戳高潮了。。。然后赶紧闭嘴了,让他接着问后面的问题。

然后问了我期望薪资,我说了个期望薪资,结果这人说,你觉得你在项目中能承担部门负责人?还是项目经理?合着我期望的薪资在这家公司是部门负责人才有的待遇,看这意思应该是觉得我漫天要价。我觉得我要再说我已经有的三个offer都比我刚提的要多怕不是能让他当场爆炸。。当然了,为了不自讨没趣我就说我只能承担个中级开发吧。。。

最后问我有什么想问的,我就照例问了下公司技术栈,然后他说后端用java nodeJs,我就问为什么后端会用两种技术栈?然后他回答道,这么用肯定是处于公司技术考量啊,巴拉巴拉的,反正最后也没说个明白为啥会用两种技术。。然后这个时候提了一嘴既然采用nodeJs是觉得更加方便为什么不考虑考虑使用Python。老实说我觉得我这句话作为大家都是技术人员,技术探讨性的问题应该很正常吧,结果这句话不知道为什么又把他戳高潮了,他直接回到为什么要用Python?我在严肃的和你讲公司技术栈,你觉得这样好吗?你觉得这样提问好吗?你这样随意的一问觉得合适吗?

最后伴随着这几个疑问,面试结束了。。。老实说我被面的有点稀奇古怪的,尽管他问的问题我觉得我应该全都回答上了,但看他的样子似乎很不高兴。。。面完后我的内心状态应该如下吧

Java开发面试题

1、面向对象的特征有哪些方面?

java后端面试题 java后端开发面试题

答:面向对象的特征主要有以下几个方面:

-抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。

-继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性,同时继承也是封装程序中可变因素的重要手段(如果不能理解请阅读阎宏博士的《Java与模式》或《设计模式精解》中关于桥梁模式的部分)。

-封装:通常认为封装是把数据和操作数据的方法绑定起来,对数据的访问只能通过已定义的接口。面向对象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装;我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口(可以想想普通洗衣机和全自动洗衣机的差别,明显全自动洗衣机封装更好因此操作起来更简单;我们现在使用的智能手机也是封装得足够好的,因为几个按键就搞定了所有的事情)。

-多态性:多态性是指允许不同子类型的对象对同一消息作出不同的响应。简单的说就是用同样的对象引用调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象向外界提供的服务,那么运行时的多态性可以解释为:当A系统访问B系统提供的服务时,B系统有多种提供服务的方式,但一切对A系统来说都是透明的(就像电动剃须刀是A系统,它的供电系统是B系统,B系统可以使用电池供电或者用交流电,甚至还有可能是太阳能,A系统只会通过B类对象调用供电的方法,但并不知道供电系统的底层实现是什么,究竟通过何种方式获得了动力)。方法重载(overload)实现的是编译时的多态性(也称为前绑定),而方法重写(override)实现的是运行时的多态性(也称为后绑定)。运行时的多态是面向对象最精髓的东西,要实现多态需要做两件事:1).方法重写(子类继承父类并重写父类中已有的或抽象的方法);2).对象造型(用父类型引用引用子类型对象,这样同样的引用调用同样的方法就会根据子类对象的不同而表现出不同的行为)。

2、访问修饰符public,private,protected,以及不写(默认)时的区别?

答:

修饰符

当前类

同包

子类

其他包

public√√√√

protected√√√×

default√√××

private√×××

类的成员不写访问修饰时默认为default。默认对于同一个包中的其他类相当于公开(public),对于不是同一个包中的其他类相当于私有(private)。受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。Java中,外部类的修饰符只能是public或默认,类的成员(包括内部类)的修饰符可以是以上四种。

3、String是最基本的数据类型吗?

答:不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。

4、float f=3.4;是否正确?

答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f=(float)3.4;或者写成float f=3.4F;。

5、short s1= 1; s1= s1+ 1;有错吗?short s1= 1; s1+= 1;有错吗?

答:对于short s1= 1; s1= s1+ 1;由于1是int类型,因此s1+1运算结果也是int型,需要强制转换类型才能赋值给short型。而short s1= 1; s1+= 1;可以正确编译,因为s1+= 1;相当于s1=(short)(s1+ 1);其中有隐含的强制类型转换。

6、Java有没有goto?

答:goto是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字)

7、int和Integer有什么区别?

答:Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。

java面试经历

一般来说面试我都记下印象深刻的面试题,其他感觉都没什么好记的,但是今天这个面试的过程感觉是我职业生涯中比较有意思的一次面试,遂分享出来。

今天顶着大太阳出去面试,找了好久终于找到了这家公司的位置,貌似是集体办公区域,就是一层楼有N个公司在办公,也没什么隔断。心想创业公司吧,这样也正常。在这之前已经面过三家公司都挺顺利,公司规模都还可以,还有一家一面也是过了等二面。之所以来这家公司面呢是因为对公司的产品还挺感兴趣的,想来看看。

然后到地方后面试官先给了我一份卷子做,都是些很简单的题,写完后等了好久面试官来了,开始进行面试。面试官先看了下我的简历,然后说你怎么两年才做这么4个项目,尤其是第一家才1个项目。我说外包公司项目多,没必要挨个写上,写上最近一家公司的项目,和之前公司代表性的项目就行了。然后他就教育了我一番,说怎么写这么点儿呢,很容易让人觉得你啥都没做,做过的都得写上。我之前一直以为我这种两年多经验的写一页简历足够了,不过他说了下我觉得确实可以考虑考虑多写一些。。。不过老实说我在想。。难道他毕业四五年了还把刚毕业的项目往简历上写?

吐槽完项目。面试官不知道为什么看着我的简历以为是培训班出来的,然后就旁敲侧击的问我毕业是否有参加过什么培训啊。我满脸黑线,我简历写的我第一份工作毕业就进去的,而且我项目都是专业领域性很强的项目,这是从哪儿看出来的。然后这面试官又问我那你大学都学什么课程啊,我又耐着性子解释了一圈。然后他看问不出啥的就没问了。然后就问了一个项目有关的正常问题。开始问我技术了。

第一个技术就问我spring框架,然后问我spring主要注重哪些技术,我说了就依赖注入和自动化配置,然后这人问我如何学习spring,我说看了spring实战,深入理解spring架构,然后还看了源码,然后这人说你看了官方文档吗,我说看了小部分,然后他说你怎么不多看官方说明文档呢,我说我更多喜欢直接看看源码设计,而且官方文档更多就是说明书的意思,我觉得用来入门还行,要真正了解肯定还是要深入底层去看下。然后争论了一番后他问我springboot自动化配置如何实现的。我从实现原理,源码流程说了一圈,我估计他应该不懂这块儿,然后我说完后他和我说你觉得看这些东西用处大吗,你为什么不看官方文档。我当时真是满脸黑线,合着这官方文档在他眼中是圣经啊。然后又问我springboot如何实现的tomcat启动,我源码解释了一圈后我估计他还是不懂源码这块儿,所以又和我死磕说你这些东西为什么不看官方文档说明呢。。嗨,我第一次看到对官方文档如此执着的人..。。当然了他举了个有意思的例子,说比如你买了个冰箱,你不看说明书你怎么知道如何使用呢。。我真的很想说我看过这台冰箱深入介绍的几本书并且连内部零件构造都了解你觉得我不会用这台冰箱吗。。

然后框架就没问了,老实说我觉得可能是他也不太了解。。然后就问我sql了,说有没有用过索引,sql优化。我说了一些,然后他说下mysql索引类型呢?我说你指的哪种类型,是hash/b+tree,还是聚集索引/非聚集索引,还是普通索引/唯一索引/主键索引/.....这种。然后我估计他对前两个应该不了解,然后恼羞成怒的来了句你觉得我问的是哪个?我去,这个我哪能知道。然后我就说了下 hash/b+树索引,然后这个人来了句b+树你觉得是什么,是一种算法,还是xxx,我当时很无语,名字都叫树了这难道不应该是一种数据结构吗。然后又解释了一圈我感觉他可能也不了解这块也就没问了。然后问我算法。

其实就简单的问了句,你了解哪些排序,我说冒泡排序,插入排序,快排,堆排序.....,然后这面试官嘲讽的笑了一声,我赶紧回想了哪个有问题,结果想了下没想到哪个字说的有问题我就问你为什么笑,然后他说堆排序是什么东西。老实说听到这句话我是真的很想直接走的,但是想下这对不起我请的一上午假。然后我很克制的说了句,你不知道不代表没有,这是任何一本讲数据结构与算法的书都应该会讲到的东西,建议去百度下。然后这个时候我估计他本就有点儿恼羞成怒的心情被彻底点着了,然后开始问我jmm。哦对了,他看着我写笔试题的时候排序那儿说了句这是什么排序。(我觉得快排方法应该还是挺好认的)

jmm问我五大数据区域,我说了后最后我提了一下直接内存,然后这人我估计也不懂,然后就开始说我问你这个了吗?我让你说五大区域你为什么提这个?你有听清楚我的问题吗?我当时就???,合着我这多提了一嘴直接给戳高潮了。。。然后赶紧闭嘴了,让他接着问后面的问题。

然后问了我期望薪资,我说了个期望薪资,结果这人说,你觉得你在项目中能承担部门负责人?还是项目经理?合着我期望的薪资在这家公司是部门负责人才有的待遇,看这意思应该是觉得我漫天要价。我觉得我要再说我已经有的三个offer都比我刚提的要多怕不是能让他当场爆炸。。当然了,为了不自讨没趣我就说我只能承担个中级开发吧。。。

最后问我有什么想问的,我就照例问了下公司技术栈,然后他说后端用java nodeJs,我就问为什么后端会用两种技术栈?然后他回答道,这么用肯定是处于公司技术考量啊,巴拉巴拉的,反正最后也没说个明白为啥会用两种技术。。然后这个时候提了一嘴既然采用nodeJs是觉得更加方便为什么不考虑考虑使用Python。老实说我觉得我这句话作为大家都是技术人员,技术探讨性的问题应该很正常吧,结果这句话不知道为什么又把他戳高潮了,他直接回到为什么要用Python?我在严肃的和你讲公司技术栈,你觉得这样好吗?你觉得这样提问好吗?你这样随意的一问觉得合适吗?

最后伴随着这几个疑问,面试结束了。。。老实说我被面的有点稀奇古怪的,尽管他问的问题我觉得我应该全都回答上了,但看他的样子似乎很不高兴

好了,文章到此结束,希望可以帮助到大家。

反比例函数图像与性质教案(一次函数图像)李世石退役战赢ai 李世石退役之战再怼AI,目前1比0领先!网友为什么质疑AI实力