1、“==”和equals

2、“对象引用”和“对象”

3、Java多继承

Java基础面试题-LMLPHP

 4、面型对象

面相对象编程、面相过程编程都是一种编程范式。

5、抽象类和接口

6、Java中有哪些类

普通类可以继承抽象类,实现抽象类的抽象方法,也可以实现接口,实现接口中生命的方法,两者有什么区别呢?什么时候该用抽象类,什么时候该用接口呢?

7、方法重载

 8、方法重载和方法重写:

9、静态绑定&动态绑定:

10、静态&动态:

学习编程的过程中经常会遇见这两个字,但是我还没搞懂。

11、final & finally & finalize

12、String底层实现:

 13、String & StringBuffer & StringBuilder

14、intern()方法

15、包装类

Java基础面试题-LMLPHP

除了包装类,还有原子类呢。

16、擦除机制

17、值传递&引用传递

什么是值传递,什么是引用传递。为什么说Java中只有值传递。_为什么引用传递-CSDN博客

18、Exception & Error

// 受查异常,运行时异常,乱七八招的,不仅牵扯到异常的分类,还跟编译,虚拟机有关系

// 异常和错误两个事情

19、什么是反射,为什么需要反射

// 只是会用,理解起来还挺麻烦的(有空再看吧,先找个八股文背一背)

// 还是找视频好好看看Java反射机制吧

package com.example.demo.JavaBasics;

import java.lang.annotation.Annotation;
import java.lang.reflect.*;

public class ReflectionExample {
    public static void main(String[] args) throws Exception {
        // 获取类对象
        Class<?> clazz = MyClass.class;

        // 获取构造函数并创建对象
        Constructor<?> constructor = clazz.getConstructor();
        Object obj = constructor.newInstance();

        // 获取方法并调用
        Method method = clazz.getMethod("sayHello", String.class);
        method.invoke(obj, "Alice");

        // 获取字段并访问
        Field field = clazz.getField("publicField");
        System.out.println("Public Field Value: " + field.get(obj));

        Field privateField = clazz.getDeclaredField("privateField");
        privateField.setAccessible(true);
        System.out.println("Private Field Value: " + privateField.get(obj));

        // 获取注解
        Annotation annotation = clazz.getAnnotation(MyAnnotation.class);
        System.out.println("Annotation Value: " + ((MyAnnotation) annotation).value());

        // 动态代理
        InvocationHandler handler = new MyInvocationHandler();
        Class<?>[] interfaces = { MyInterface.class };
        Object proxy = Proxy.newProxyInstance(clazz.getClassLoader(), interfaces, handler);
        ((MyInterface) proxy).doSomething();
    }
}

class MyClass {
    public String publicField = "Public Field";
    private String privateField = "Private Field";

    @MyAnnotation("Hello Annotation")
    public void sayHello(String name) {
        System.out.println("Hello, " + name + "!");
    }
}

interface MyInterface {
    void doSomething();
}

class MyInvocationHandler implements InvocationHandler {
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("Dynamic Proxy: Before method invocation");
        Object result = method.invoke(proxy, args);
        System.out.println("Dynamic Proxy: After method invocation");
        return result;
    }
}

@interface MyAnnotation {
    String value();
}

 20、为什么反射的执行比较慢

// 如果能投理解透彻,为什么可以根据类名就可以获取这个类,那么就离理解反射为什么这么慢不远了。

21、动态代理 & 静态代理

// 太高深了,结合具体的应用场景

22、序列化 (protobuf)

23、深克隆 & 浅克隆

24、BIO & NIO & AIO

Docs

25、重写 equals 时为什么一定要重写 hashCode?

面试官:重写 equals 时为什么一定要重写 hashCode?-为什么重写equals必须重写hashcode

04-21 14:33