21xrx.com
2024-09-19 09:44:17 Thursday
登录
文章检索 我的文章 写文章
Java面试中常问的问题及示例代码
2023-06-16 15:01:52 深夜i     --     --
Java面试 多态性 线程同步 垃圾回收机制

近年来,随着Java的广泛应用,Java程序员也越来越受到关注,因此Java面试已经成为了一个非常重要的话题。Java面试是测试面试者Java编程语言及Web开发基础知识的过程。以下是一些Java面试中常问的问题及相应的代码案例。

1. 说一下Java中的多态性是什么?

Java中的多态性是指同一个接口可以有不同的实现方式。即相同的方法或类可以具有不同的行为。多态性可以通过继承和实现接口来实现。下面是一个关于多态性的代码示例:


// 定义一个Shape类

abstract class Shape {

  public abstract void draw();

}

// 定义一个Rectangle类

class Rectangle extends Shape {

  public void draw() {

    System.out.println("Draw a rectangle.");

  }

}

// 定义一个Circle类

class Circle extends Shape {

  public void draw() {

    System.out.println("Draw a circle.");

  }

}

// 测试代码

public class Test {

  public static void main(String[] args) {

    Shape shape = new Rectangle();

    shape.draw();

    shape = new Circle();

    shape.draw();

  }

}

2. 请谈一谈Java中的线程同步?

Java中的线程同步机制是用于防止多个线程对共享资源进行并发访问。Java中的线程同步可以通过synchronized关键字和Lock接口来实现。下面是一个线程同步的代码示例:


// 定义一个Counter类

class Counter {

  private int count = 0;

  

  // 通过synchronized关键字实现线程同步

  public synchronized void increment() {

    count++;

  }

  

  public int getCount()

    return count;

  

}

// 定义一个Worker类

class Worker extends Thread {

  private Counter counter;

  

  public Worker(Counter counter)

    this.counter = counter;

  

  

  public void run() {

    for (int i = 0; i < 1000; i++) {

      counter.increment();

    }

  }

}

// 测试代码

public class Test {

  public static void main(String[] args) {

    Counter counter = new Counter();

    Worker worker1 = new Worker(counter);

    Worker worker2 = new Worker(counter);

    worker1.start();

    worker2.start();

    try {

      worker1.join();

      worker2.join();

    } catch (InterruptedException e) {

      e.printStackTrace();

    }

    System.out.println(counter.getCount());

  }

}

3. 说一下Java中的垃圾回收机制?

Java中的垃圾回收机制是一种自动的资源管理机制,它可以自动地释放不再被引用的对象所占用的内存空间。Java的垃圾回收机制通过垃圾回收器来实现。下面是一个关于垃圾回收机制的代码示例:


public class Test {

  public static void main(String[] args) {

    Object obj1 = new Object();

    Object obj2 = new Object();

    Object obj3 = obj1;

    obj1 = null;

    obj2 = null;

    

    System.gc(); // 显示地调用垃圾回收器

    

    if (obj3 == null) {

      System.out.println("obj3 is null.");

    } else {

      System.out.println("obj3 is not null.");

    }

  }

}

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复