后端开发刷题 | 面试篇1

接口和抽象类的区别:

接口(Interface)和抽象类(Abstract Class)都是Java中用于实现多态性的机制,但它们有一些根本上的不同。

  • 定义方式不同

接口是通过interface关键字定义的,抽象类是通过abstract class关键字定义的。

  • 实现方式不同

一个类可以实现多个接口,但只能继承一个抽象类。

  • 抽象方法的不同

接口中的方法都是抽象方法,抽象类中可以包含非抽象方法。

  • 属性的不同

接口中不能包含实例属性(实例变量),而抽象类中可以包含实例属性。

接口 抽象类
方法 抽象方法 既可以有抽象方法,也可以有普通方法
关键字修饰 interface abstract
定义常量变量 只能定义静态常量 成员变量
子类方法 所有方法必须实现 实现所有的抽象方法
子类继承 多继承 单继承
构造方法 不能有构造方法 可以有构造方法
接口实现 只能继承接口,不能实现接口

可以实现接口,并且不实现接口中的方法


Java 中的继承和 C++ 有什么不同:

C++ 中可以实现多继承,而 Java 只能实现单继承。

Java 只支持单继承,一个类只能继承一个父类。这是为了避免多继承可能引发的复杂性和歧义。
C++ 支持多继承,一个类可以同时继承多个父类。但多继承也可能导致菱形继承等问题。


Java 中有哪些数据结构?用过 HashMap 吗,说一下 HashMap 底层实现。

数据结构有数组、链表、栈、队列、堆、树、Map 等。
HashMap 在 JDK1.7 之前采用数组加链表的形式实现,在 1.8 之后使用了红黑树:通过底层数组存储对象节点,采用链地址法,把新增对象节点连接在当前地址的节点下面,且规定当链表长度大于 8 时,将链表转换成红黑树结构。


Java 中用的是值传递还是引用传递?

值传递。

在 Java 中,方法调用时传递的是变量的值,而不是变量本身。这意味着 Java 使用的是值传递。在 Java 中,对于基本数据类型,传递的是值本身;对于对象类型,传递的是对象的引用值。因此,有时候会有人说 Java 使用的是"引用传递",但更准确的说法是 Java 使用的是"值传递",只不过对于对象类型的值,传递的是引用值。


面向过程和面向对象有什么区别?

面向过程是一种以过程为中心的编程思想,在处理某件事的时候,以正在进行什么为主要目标,分步骤完成目标。

而面向对象的思想是将事物抽象为对象,赋予其属性和方法,通过每个对象执行自己的方法来完成目标。面向过程效率更高,而面向对象耦合低(易复用),扩展性强,易维护。

你可能感兴趣的:(面试,面试,职场和发展,java,后端)