【大厂面试题】4399一面 java后端校招最新面试题

java是怎么学习的?

学校有开设Java 的课程,除此之外,还看过《Java并发编程的艺术》、《深入理解Java虚拟机》、《Spring5 实战》、《MySQL技术内幕》、《Redis设计与实现》相关的书籍,同时为了增加Java 开发能力,做过 xxx 项目。

java语言的特点是什么?

主要有以下的特点:

  • 平台无关性:Java的“编写一次,运行无处不在”哲学是其最大的特点之一。Java编译器将源代码编译成字节码(bytecode),该字节码可以在任何安装了Java虚拟机的系统上运行。

  • 面向对象:Java是一门严格的面向对象编程语言,几乎一切都是对象。面向对象编程特性使得代码更易于维护和重用,包括类、对象、继承、多态、抽象和封装。

  • 内存管理:Java有自己的垃圾回收机制,自动管理内存和回收不再使用的对象。这样,开发者不需要手动管理内存,从而减少内存泄漏和其他内存相关的问题。

final关键字怎么用

final关键字可以用来修饰类、方法和变量,具有不同的作用:

  • 修饰类:将final关键字放在类的定义前,如final class MyClass {...}。被final修饰的类不能被继承。这通常用于创建一些不希望被修改或扩展的类,例如 Java 中的String类就是final类。

final class FinalClass {
    // 类的成员和方法
}
// 以下代码将无法编译
// class SubClass extends FinalClass {} 
  • 修饰方法:将final关键字放在方法的声明前,如public final void myMethod() {...}。被final修饰的方法不能被子类重写。这可以确保方法的实现不被修改,通常用于保证一些关键方法的行为在子类中不会改变。

class BaseClass {
    public final void finalMethod() {
        System.out.println("This is a final method.");
    }
}
class SubClass extends BaseClass {
    // 以下代码将无法编译
    // public void finalMethod() {
    //     System.out.println("Trying to override final method.");
    // }
}
  • 修饰变量:将final关键字放在变量的声明前,如final int myVariable = 10;。对于基本数据类型,被final修饰的变量一旦赋值就不能再修改其值;对于引用数据类型(如对象和数组),被final修饰的变量一旦引用了一个对象或数组,就不能再引用其他对象或数组,但可以修改对象或数组的内部状态。

// 修饰基本数据类型
final int number = 5;
// 以下代码将无法编译
// number = 10; 


// 修饰对象
final StringBuilder sb = new StringBuilder("Hello");
sb.append(", World"); // 允许修改对象的内部状态
// 以下代码将无法编译
// sb = new StringBuilder("Goodbye"); 
  • 修饰参数:在方法的参数列表中使用final关键字,如public void myMethod(final int parameter) {...}。被final修饰的参数在方法内部不能被修改。这可以防止在方法中不小心修改了传入的参数值。

public void printValue(final int value) {
    // 以下代码将无法编译
    // value = 10; 
    System.out.println(value);
}

使用hashmap时,如果只重写了equals没有重写hashcode会出现什么问题?

HashMap 存储元素是基于哈希表的原理。它通过 hashCode 方法计算元素的哈希值,将元素存储在对应的哈希桶中。当查找元素时,首先根据 hashCode 找到对应的哈希桶,然后在该桶中使用 equals 方法精确查找元素。

如果只重写了 equals 方法而未重写 hashCode 方法,那么即使两个对象在逻辑上相等(根据 equals 方法的判断),它们的 hashCode 可能不同,这样会导致两个逻辑上相等的对象可能被存储在 HashMap 的不同哈希桶中,因为它们的 hashCode 不同。

当尝试根据键来查找元素时,可能无法找到元素。因为 HashMap 首先根据 hashCode 找到哈希桶,而由于 hashCode 不同,会在错误的哈希桶中查找,导致查找失败,即使 equals 方法认为它们相等。

为了避免这个问题,当重写 equals 方法时,应该同时重写 hashCode 方法,以保证对象的逻辑相等性和存储查找的一致性。

深拷贝和浅拷贝的区别是什么?

图片

  • 浅拷贝是指只复制对象本身和其内部的值类型字段,但不会复制对象内部的引用类型字段。换句话说,浅拷贝只是创建一个新的对象,然后将原对象的字段值复制到新对象中,但如果原对象内部有引用类型的字段,只是将引用复制到新对象中,两个对象指向的是同一个引用对象。

  • 深拷贝是指在复制对象的同时,将对象内

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地僧009

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值