21xrx.com
2024-11-22 11:05:53 Friday
登录
文章检索 我的文章 写文章
Java面试被问到的编程题都不会?这里有5道常见Java编程题及解析
2023-06-19 12:48:25 深夜i     --     --
Java编程 编程题 面试技巧

在Java开发的工作中,面试是一个不可避免的环节。在面试中,有各种各样的问题被问及,但是在一些情况下,面试者可能会遇到一些具有挑战性的Java编程题,这些编程题需要应聘者具备扎实的Java编程能力和实践经验。本篇文章将介绍5道常见的Java编程题,让你在面试中轻松应对。

问题1. 给定一个字符串,统计它每个字符出现的次数。

问题2. 给定两个有序数组,将它们合并成一个有序数组。

问题3. 求一个数的二进制表示中有多少个1。

问题4. 实现一个单例模式。

问题5. 将一个二叉树转变为它的镜像。

通过分别解析这些编程题,本篇文章将让你掌握掌握Java编程的要点,成为Java开发面试中的高手。

问题1. 为统计每个字符出现的次数,我们可以使用哈希表来实现。在Java中,哈希表可以通过HashMap类来实现,如下所示:


String str = "Hello, World!";

Map map = new HashMap<>();

for (char ch : str.toCharArray()) {

  if (map.containsKey(ch)) {

    map.put(ch, map.get(ch) + 1);

  } else {

    map.put(ch, 1);

  }

}

System.out.println(map);

问题2. 将两个有序数组合并的问题可以使用归并排序的思想来解决。具体实现过程如下:


public int[] mergeSortedArrays(int[] array1, int[] array2) {

  int[] merged = new int[array1.length + array2.length];

  int i = 0, j = 0, k = 0;

  while (i < array1.length && j < array2.length) {

    if (array1[i] < array2[j]) {

      merged[k] = array1[i];

      i++;

    } else {

      merged[k] = array2[j];

      j++;

    }

    k++;

  }

  while (i < array1.length) {

    merged[k] = array1[i];

    i++;

    k++;

  }

  while (j < array2.length) {

    merged[k] = array2[j];

    j++;

    k++;

  }

  return merged;

}

问题3. 求一个数的二进制表示中有多少个1可以使用移位运算的方法来实现。具体过程如下:


public int countOnes(int num) {

  int count = 0;

  while (num != 0) {

    count += num & 1;

    num = num >>> 1;

  }

  return count;

}

问题4. 单例模式是一种非常常见的设计模式,在Java中可以通过静态内部类来实现。具体实现如下:


public class Singleton {

  private Singleton() {}

  private static class SingletonHolder {

    private static final Singleton INSTANCE = new Singleton();

  }

  public static Singleton getInstance()

    return SingletonHolder.INSTANCE;

  

}

问题5. 将一个二叉树转变为它的镜像可以通过递归的方法来实现。具体过程如下:


public void mirror(TreeNode root) {

  if (root == null)

    return;

  

  TreeNode temp = root.left;

  root.left = root.right;

  root.right = temp;

  mirror(root.left);

  mirror(root.right);

}

通过以上的5个常见的Java编程题的解析,你已经可以为自己在面试中的表现更有信心了。如果你想进一步提高自己的Java编程能力,那就多多练习,熟能生巧。

  
  

评论区

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