21xrx.com
2025-03-29 03:20:48 Saturday
文章检索 我的文章 写文章
Java面试被问到的问题答不上来?看看这些实用代码案例吧!
2023-06-15 17:47:43 深夜i     7     0

Java作为一门广泛应用的编程语言,面试中经常会遇到各种问题。有时候,即使你理论知识掌握得非常好,但如果没有实际编程经验,面试时也很有可能被问倒。这篇文章分享一些常见的Java面试问题以及实用的代码案例,帮助你更好地准备面试。

1.什么是单例模式?如何实现?

单例模式是一种常见的设计模式,用于创建一个只有一个实例的类。在Java中,比较常见的实现方式是使用静态成员变量和getInstance()静态方法获取实例。以下是一个简单的单例模式实现示例:

public class Singleton {
  private static Singleton instance = null;
  private Singleton() {}
  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}

2.什么是线程安全?如何实现线程安全?

线程安全是指多个线程访问共享资源时不会引起数据的错乱或其他异常现象。在Java中,常见的实现方式包括使用synchronized关键字或Lock接口实现,以及使用并发包中的线程安全类。以下是一个使用synchronized实现线程安全的示例:

public class ThreadSafe {
  private static int count = 0;
  public synchronized static void increment() {
    count++;
  }
  public static void main(String[] args) {
    Runnable r = new Runnable() {
      public void run() {
        for (int i = 0; i < 10000; i++) {
          increment();
        }
      }
    };
    Thread t1 = new Thread(r);
    Thread t2 = new Thread(r);
    t1.start();
    t2.start();
    try {
      t1.join();
      t2.join();
    } catch(InterruptedException e) {
      e.printStackTrace();
    }
    System.out.println(count);
  }
}

3.什么是反射?如何使用反射?

反射是指在运行时动态获取类信息、调用对象方法和访问对象属性的机制。在Java中,可以使用Class类和相关的反射方法实现反射。以下是一个简单的反射示例:

public class ReflectionDemo {
  public static void main(String[] args) {
    String s = "hello";
    Class cls = s.getClass();
    System.out.println(cls.getName());
    Method[] methods = cls.getMethods();
    for (Method method : methods) {
      System.out.println(method.getName());
    }
    try {
      Field field = cls.getDeclaredField("value");
      field.setAccessible(true);
      char[] value = (char[]) field.get(s);
      System.out.println(value);
    } catch (NoSuchFieldException | IllegalAccessException e) {
      e.printStackTrace();
    }
  }
}

关键词:Java面试;单例模式;线程安全;反射。

  
  

评论区