21xrx.com
2024-11-22 09:58:38 Friday
登录
文章检索 我的文章 写文章
Java后端开发工程师面试题及代码案例
2023-06-19 05:37:15 深夜i     --     --
Java后端 面试题 代码案例

为了更好地体现Java后端开发工程师的技术水平和能力,公司在招聘Java后端开发工程师时经常会出一些面试题。下面就来介绍一些常见的Java后端开发工程师面试题以及相应的代码案例。

1. 实现单例模式

单例模式是指一个类只能被实例化一次。在Java中实现单例模式的方式有多种,这里就介绍两种常见的方式:饿汉式和懒汉式。

饿汉式:


public class Singleton {

  private static Singleton instance = new Singleton();

  private Singleton() {}

  public static Singleton getInstance()

    return instance;

  

}

懒汉式:


public class Singleton {

  private static volatile Singleton instance = null;

  private Singleton() {}

  public static Singleton getInstance() {

    if (instance == null) {

      synchronized(Singleton.class) {

        if(instance == null) {

          instance = new Singleton();

        }

      }

    }

    return instance;

  }

}

2. 实现HashMap

HashMap是一种常见的数据结构,它提供了快速的插入、查找、删除等操作。下面是一个简单的HashMap实现代码:


public class MyHashMap {

  private final int SIZE = 16;

  private List >[] buckets;

  public MyHashMap() {

    buckets = new ArrayList[SIZE];

  }

  public V get(K key) {

    int hashCode = key.hashCode();

    int index = hashCode % SIZE;

    List > bucket = buckets[index];

    if (bucket != null) {

      for (Entry entry : bucket) {

        if (entry.getKey().equals(key)) {

          return entry.getValue();

        }

      }

    }

    return null;

  }

  public void put(K key, V value) {

    int hashCode = key.hashCode();

    int index = hashCode % SIZE;

    List > bucket = buckets[index];

    if (bucket == null) {

      bucket = new ArrayList<>();

      buckets[index] = bucket;

    }

    boolean found = false;

    for (Entry entry : bucket) {

      if (entry.getKey().equals(key)) {

        entry.setValue(value);

        found = true;

        break;

      }

    }

    if (!found) {

      bucket.add(new Entry<>(key, value));

    }

  }

  private class Entry {

    private final K key;

    private V value;

    public Entry(K key, V value)

      this.key = key;

      this.value = value;

    

    public K getKey()

      return key;

    

    public V getValue()

      return value;

    

    public void setValue(V value)

      this.value = value;

    

  }

}

3. 实现快速排序

快速排序是一种常见的排序算法,它的平均时间复杂度为O(nlogn)。下面是一个简单的快速排序实现代码:


public class QuickSort {

  public void sort(int[] arr, int low, int high) {

    if (low < high) {

      int pivot = partition(arr, low, high);

      sort(arr, low, pivot - 1);

      sort(arr, pivot + 1, high);

    }

  }

  private int partition(int[] arr, int low, int high) {

    int pivot = arr[high];

    int i = low - 1;

    for (int j = low; j < high; j++) {

      if (arr[j] < pivot) {

        i++;

        int temp = arr[i];

        arr[i] = arr[j];

        arr[j] = temp;

      }

    }

    int temp = arr[i+1];

    arr[i+1] = arr[high];

    arr[high] = temp;

    return i+1;

  }

}

以上三个案例是Java后端开发工程师面试常见题目,其中第一个为实现单例模式,第二个为实现HashMap,第三个为实现快速排序算法。掌握这些常见的Java面试题,可以帮助工程师们更加熟练地掌握Java编程,提高技术水平。

  
  

评论区

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