21xrx.com
2024-09-17 03:29:37 Tuesday
登录
文章检索 我的文章 写文章
Java 面试题大集合,附带常见面试代码案例
2023-06-15 14:09:45 深夜i     --     --
Java 集合类

Java 是一门运用广泛的编程语言,在众多企业和公司的技术面试中也占据了重要的一席之地。本文将整理 Java 面试中常见的问题,并给出相应的代码案例,以供读者参考。

1. Java 中有哪些常用的集合类?它们之间有什么区别?

Java 中常用的集合类有 List(列表)、Set(集合)、Map(映射表)等。它们之间的主要区别在于:

- List:有序、可重复的列表集合。

- Set:无序、不可重复的集合。

- Map:有序、键值对的映射表。

代码案例:


// List 示例

List list = new ArrayList<>();

list.add("Java");

list.add("Python");

list.add("C++");

System.out.println(list);  // [Java, Python, C++]

// Set 示例

Set set = new HashSet<>();

set.add("Java");

set.add("Python");

set.add("C++");

System.out.println(set);   // [Java, Python, C++]

// Map 示例

Map map = new HashMap<>();

map.put("Java", 1);

map.put("Python", 2);

map.put("C++", 3);

System.out.println(map);   // {Java=1, Python=2, C++=3}

、List、Set、Map、代码案例

2. Java 中常用的排序算法有哪些?它们的时间复杂度是怎样的?

常用的排序算法有:

- 冒泡排序(Bubble Sort)

- 选择排序(Selection Sort)

- 插入排序(Insertion Sort)

- 快速排序(Quick Sort)

- 归并排序(Merge Sort)

- 堆排序(Heap Sort)

其时间复杂度如下表所示:

排序算法 | 平均时间复杂度 | 最坏时间复杂度

--------|--------------|-------------

冒泡排序 | O(n^2)    | O(n^2)

选择排序 | O(n^2)    | O(n^2)

插入排序 | O(n^2)    | O(n^2)

快速排序 | O(nlogn)   | O(n^2)

归并排序 | O(nlogn)   | O(nlogn)

堆排序  | O(nlogn)   | O(nlogn)

代码案例:


// 快速排序代码

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

  if (low < high) {

    int pivot = partition(arr, low, high);  // 基准元素的位置

    quickSort(arr, low, pivot - 1);      // 左数组排序

    quickSort(arr, pivot + 1, high);     // 右数组排序

  }

}

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

  int pivot = arr[low];  // 基准元素

  while (low < high) {

    while (low < high && arr[high] >= pivot)

      high--;

    arr[low] = arr[high]; // 比基准元素小的元素放到左边

    while (low < high && arr[low] <= pivot)

      low++;

    arr[high] = arr[low]; // 比基准元素大的元素放到右边

  }

  arr[low] = pivot;  // 分割完成后,把基准元素放到中间

  return low;     // 返回基准元素的位置

}

关键词:Java 排序算法、时间复杂度、快排、代码案例

3. Java 中如何创建线程?有哪些线程的状态?

Java 中创建线程的方式有两种:

- 继承 Thread 类并重写 run() 方法。

- 实现 Runnable 接口并实现 run() 方法。

线程的状态包括以下五种:

- 新建状态(New):通过 new 关键字创建线程。

- 就绪状态(Runnable):线程调用 start() 方法后被加入到线程调度队列中。

- 运行状态(Running):当 CPU 开始调度该线程时,处于运行状态。

- 阻塞状态(Blocked):当线程等待某个事件时,例如 I/O 操作或等待锁,则进入阻塞状态。

- 结束状态(Terminated):线程运行结束时,处于结束状态。

代码案例:


// 通过实现 Runnable 接口创建线程

class MyRunnable implements Runnable {

  public void run() {

    System.out.println("MyRunnable线程运行...");

  }

}

public class Test {

  public static void main(String[] args) {

    Thread thread = new Thread(new MyRunnable());

    thread.start();

    System.out.println("主线程运行...");

  }

}

关键词:Java 线程、创建线程、线程状态、代码案例

  
  

评论区

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