公司高频面试题分享 入门Java必备

Java中重写和重载有哪些区别

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态

性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为

重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重写方

法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求。

方法重载的规则:

1.方法名一致,参数列表中参数的顺序,类型,个数不同。

2.重载与方法的返回值无关,存在于父类和子类,同类中。

3.可以抛出不同的异常,可以有不同修饰符


方法重写的规则:

1.参数列表必须完全与被重写方法的一致,返回类型必须完全与被重写方法的返回类型一致。

2.构造方法不能被重写,声明为 final 的方法不能被重写,声明为 static 的方法不能被重写,但是能够被再次

声明。

3.访问权限不能比父类中被重写的方法的访问权限更低。

4.重写的方法能够抛出任何非强制异常(UncheckedException,也叫非运行时异常),无论被重写的方法是

否抛出异常。但是,重写的方法不能抛出新的强制性异常,或者比被重写方法声明的更广泛的强制性异常,反之则

可以。


接口和抽象类有哪些区别

不同:

抽象类:

1.抽象类中可以定义构造器

2.可以有抽象方法和具体方法

3.接口中的成员全都是 public 的

4.抽象类中可以定义成员变量

5.有抽象方法的类必须被声明为抽象类,而抽象类未必要有抽象方法

6.抽象类中可以包含静态方法

7.一个类只能继承一个抽象类

接口:

1.接口中不能定义构造器

2.方法全部都是抽象方法

3.抽象类中的成员可以是 private、默认、protected、public

4.接口中定义的成员变量实际上都是常量

5.接口中不能有静态方法

6.一个类可以实现多个接口

相同:

1.不能够实例化

2.可以将抽象类和接口类型作为引用类型

3.一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要

被声明为抽象类

怎样声明一个类不会被继承,什么场景下会用

如果一个类被final修饰,此类不可以有子类,不能被其它类继承,如果一个中的所有方法都没有重写的需要,当前类没有子类也罢,就可以使用final修饰类。

Java中==和equals有哪些区别

equals 和== 最大的区别是一个是方法一个是运算符。

==:如果比较的对象是基本数据类型,则比较的是数值是否相等;如果比较的是引用数据类型,则比较的是对象

的地址值是否相等。

equals():用来比较方法两个对象的内容是否相等。

注意:equals 方法不能用于基本数据类型的变量,如果没有对 equals 方法进行重写,则比较的是引用类型的变

量所指向的对象的地址。







String、StringBuffer、StringBuilder区别及使用场景

Java 平台提供了两种类型的字符串:String 和 StringBuffer/StringBuilder,它们都可以储存和操作字符串,区别

如下。

1)String 是只读字符串,也就意味着 String 引用的字符串内容是不能被改变的。初学者可能会有这样的误解:

String str = “abc”;
str = “bcd”;

如上,字符串 str 明明是可以改变的呀!其实不然,str 仅仅是一个引用对象,它指向一个字符串对象“abc”。第

二行代码的含义是让 str 重新指向了一个新的字符串“bcd”对象,而“abc”对象并没有任何改变,只不过该对象已

经成为一个不可及对象罢了。

2)StringBuffer/StringBuilder 表示的字符串对象可以直接进行修改。

3)StringBuilder 是 Java5 中引入的,它和 StringBuffer 的方法完全相同,区别在于它是在单线程环境下使用的,

因为它的所有方法都没有被 synchronized 修饰,因此它的效率理论上也比 StringBuffer 要高。

#小白编程入门##Java开发##面试##字节面试##华为面试#
每天5个Java开发高频面试题 文章被收录于专栏

每天用半小时的时间来看几个面试经常问的面试题,日积月累你也会成为编程大牛!

全部评论
之前一直不太懂,现在懂了,感谢分享
1 回复 分享
发布于 2022-08-17 19:23 陕西

相关推荐

1. 自我介绍2. 介绍一下简历上的项目3  策略模式在我项目中的应用这是我第一次面试,当时紧张爆了,脑子一片空白,支支吾吾半天没说出来4. 看我答不上来让我说一下我的责任链模式是怎么实现的这个直接说成规则树的实现了,而且说的很混乱5. 讲一下常用的两种数据结构我说了一个链表,另一个太紧张了没憋出来6. linkedList是线程安全的么,底层是单向链表还是双向链表,如果在多线程环境下给你一个方法的参数就是linkedlist,你怎么做不是线程安全的,双向链表,我记得Java有一个方法可以传入LinkedList然后返回一个线程安全的版本(给方法的api忘了)7. 让我讲两种熟悉的算法我就说出来一个二分8. Spring循环依赖问题讲了Spring的三级缓存,也讲的比较混乱,但大体是答出来了感觉9. Spring如果自己注入自己会不会报错我认为不会,因为Spring的事务中方法内部还使用this调用他自己的方法导致事务失效时有一种解决办法就是通过Spring自己注入自己然后调用方法解决10. 我的项目中事务是如何使用的直接在方法上加@Translation注解10.方法A调用带有@Translation注解的B方法,B方法报错,AB会回滚么,A方法没有Translation注解A不会回滚,B会回滚11.docker怎么查看日志,怎么进入一个容器的内部docker logs 容器名, 第二个答一半感觉不对撤回了忘了面完发现我答得对自己给自己否定了12.问了我领域驱动的设计这里我坦白我理解的不是很好,我理解的是一个用户的一次操作在后端的整个流程就算一个领域,在这个流程中需要用到的数据集合就是界限上下文总结: 第一次面试太紧张了,从小老师随机提问抽查我都紧张害怕点我,还是学的不到位,还得沉淀沉淀不继续投了,感觉不咋正式,面试官没开摄像头也没要求我开摄像头,还迟到了五分钟,但是态度挺好的我卡壳了还一直鼓励我,应该是寄了,太急躁了沉淀沉淀了得
查看13道真题和解析
点赞 评论 收藏
分享
评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务