7天八股速记之Java 后端——Day 1

接口和抽象类的区别

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

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

Java 中的继承和 C++ 中的继承在概念上是相似的,但在语法和实现细节上有一些不同之处。以下是 Java 中的继承和 C++ 中的继承的主要不同点:

  1. 语法差异

    • 在 Java 中,继承使用关键字 extends,例如:class ChildClass extends ParentClass {...}
    • 在 C++ 中,继承使用关键字 :,例如:class ChildClass : public ParentClass {...}
  2. 默认访问控制

    • 在 Java 中,如果子类没有显式指定访问修饰符,子类只能继承父类的 publicprotected 成员,而不能继承 private 成员。
    • 在 C++ 中,默认情况下子类继承父类的所有成员,无论是 publicprotected 还是 private
  3. 多继承

    • Java 不支持多继承,一个类只能继承自一个父类。
    • C++ 支持多继承,一个类可以同时继承自多个父类。
  4. 虚函数和方法重写

    • 在 Java 中,所有的成员函数默认都是虚函数(即可以被子类重写),如果不希望子类重写,可以使用 final 关键字修饰。
    • 在 C++ 中,默认情况下成员函数不是虚函数,需要使用 virtual 关键字声明虚函数,而且在子类中重写父类的虚函数时,不需要显式添加 virtual 关键字。
  5. 构造函数和析构函数

    • 在 Java 中,子类的构造函数必须调用父类的构造函数,可以使用 super() 关键字来调用父类的构造函数。
    • 在 C++ 中,子类的构造函数可以显式调用父类的构造函数,也可以省略,如果省略,则默认调用父类的默认构造函数;析构函数也类似。

总的来说,Java 中的继承和 C++ 中的继承在语法和部分实现细节上有所不同,但在概念上都是为了实现代码的重用性和扩展性而设计的。

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

Java 中常用的数据结构包括:

  1. 数组(Array):一组按顺序存储的相同类型元素的集合,通过索引访问元素。

  2. 链表(Linked List):一种线性表数据结构,由节点组成,每个节点包含数据元素和指向下一个节点的引用。

  3. 栈(Stack):一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作。

  4. 队列(Queue):一种先进先出(FIFO)的数据结构,支持在队尾插入元素,在队头删除元素。

  5. 堆(Heap):一种特殊的树形数据

你可能感兴趣的:(求职招聘,面试直通车,Java后端八股,java,面试,职场和发展,经验分享)