Java 中 100 多道数据结构和算法面试题
AWS 安全上线!
我一直在发布各种数据结构和算法面试题,主题涵盖数组、队列、堆栈、二叉树、链表、字符串、数字、ArrayList 等等。因此,我正在整理一些程序列表,创建一个索引帖。每当我添加新的程序时,我都会添加指向此帖的链接。以下是一些常见的数据结构和算法面试题。
如果你想练习并提升数据结构和算法程序,这篇文章对你很有帮助。我建议你先自己尝试一下,然后再查看答案。
堆
问题 1:使用数组实现堆栈。
你需要使用数组实现堆栈。你需要编写 push 和 pop 方法来演示堆栈的行为(后进先出)。
解决方案:编写一个 Java 程序,使用数组实现堆栈。
问题 2:使用链表实现堆栈:
你需要使用链表实现堆栈。你需要编写 push 和 pop 方法来演示堆栈的行为(后进先出)。
解决方案 : Java 程序,使用链表实现堆栈
问题 3:使用两个队列实现堆栈。
你需要使用两个队列来实现堆栈行为。你需要编写 push 和 pop 方法来演示堆栈行为(后进先出)。
解决方案:Java 程序使用两个队列实现堆栈
问题 4:使用另一个堆栈对一个堆栈进行排序
你需要使用一个栈对另一个栈进行排序。你可以使用栈的入栈和出栈操作来实现。
解决方案:使用一个栈对另一个栈进行排序。
队列
问题 5:在 Java 中使用数组实现队列。
您需要使用数组来实现队列。
解决方案:在 Java 中使用数组实现队列
问题 6:使用两个队列实现堆栈。
您需要使用链表来实现队列。
解决方案:Java 程序使用链表实现队列
链表
问题 7:在 Java 中实现单链表。
您需要实现单链表数据结构。您需要编写简单的程序来演示插入、删除操作。解决方案:Java 程序在 Java 中实现单链表。
问题 8:如何在 java 中反转链表。
您需要编写迭代和递归解决方案来反转链表。
解决方案:Java 程序,用于在 Java 中反转链表。
问题9:如何找到链表的中间元素。
您需要编写 Java 程序以最优化的方式查找链表的中间元素。解决方案:Java 程序查找链表的中间元素。
问题 10:如何找到链表末尾的第 n 个元素。
你需要编写一个 Java 程序,以最优化的方式查找链表中的第 n 个元素。
在问题 6 中,节点 7 位于链表中倒数第 3 个元素。
解决方案:如何查找链表中倒数第 n 个元素。
问题 11:如何检测链表中的循环。如果链表存在循环,则找到循环的起始节点。
你需要编写一个 Java 程序来检测链表中是否存在循环,如果存在循环,则需要找到链表的起始节点。
解决方案:如何检测链表中的循环。
如何在链表中找到循环的起始节点。
问题 12:如何检查链表是否是回文?
回文是指单词、短语、数字或其他符号或元素序列,正读和反读都一样。例如:12121 是回文,因为正读和反读都一样。“madam”也是回文。所以我们需要编写 Java 程序来检查链表是否是回文。
解决方案:Java 程序检查链表是否是回文。
问题 13:查找两个链表的交集?
给定两个 单链表,判断两个链表是否相交。如果相交,则求交点。 解决方案:两个链表的交集
问题 14:如何成对地反转链表?
您需要编写一个 Java 程序来成对地反转链表。 解决方案:Java 程序来成对地反转链表。
问题 15:在 Java 中实现双向链表?
您需要编写一个 Java 程序来实现 Java 中的双向链表。
解决方案:Java 中的双向链表
大批
问题 16:编写 Java 程序来查找数组中的最小和最大元素。
给定一个包含 1 到 n 的整数数组,但数组中 1 到 n 之间的数字有一个缺失。你需要提供一个最优解来找到缺失的数字。数组中的数字不能重复。
例如:
int[] arr1={7,5,6,1,4,2}; 缺失数字:3 int[] arr2={5,3,1,2}; 缺失数字:4解决方案:Java 程序查找数组中的最小和最大元素
问题 17:在数组中查找缺失的数字。
给定一个包含 1 到 n 的整数数组,但数组中 1 到 n 之间的数字有一个缺失。你需要提供最优解来找到缺失的数字。数组中的数字不能重复。例如:int[] arr1={7,5,6,1,4,2}; 缺失数字:3 int[] arr2={5,3,1,2}; 缺失数字:4解决方案:在数组中查找缺失的数字。
问题 18:在旋转和排序的数组中搜索元素。
给你一个已排序并旋转的数组,如下所示:int arr[]={16,19,21,25,3,5,8,10};如果你注意到数组是经过排序和旋转的,你需要在 o(log n) 的时间复杂度内搜索上述数组中的一个元素。解决方案:在旋转排序后的数组中搜索元素
问题 19:在已排序和旋转的数组中查找最小元素。
给你一个已排序并旋转的数组,如下所示:int arr[]={16,19,21,25,3,5,8,10}; 数组中的最小元素:3
如果你注意到数组是经过排序和旋转的,你需要在 o(log n) 的时间复杂度内找到上述数组中的一个元素。
解决方案:在已排序和旋转的数组中查找最小元素
问题 20:找出数组中第二大的数字
给定一个已排序并旋转的数组,如下所示:
例如:
int[] arr1={7,5,6,1,4,2}; 数组中第二大元素:6解决方案:Java 程序查找数组中的第二大数字。
问题 21:找出数组中出现奇数次的数字
给定一个整数数组。除一个数字外,其他数字出现的次数均为偶数。你需要找出出现次数为奇数的数字。你需要以 o(n) 的时间复杂度和 o(1) 的空间复杂度来求解。例如:int 数组[] = new int[]{20, 40, 50, 40, 50, 20, 30, 30, 50, 20, 40, 40, 20}; 出现奇数次的数字是:50解决方案: Java 程序查找数组中出现奇数次数的数字。
问题 22:找出火车站所需的最少站台数量
已知到达特定车站的列车到达和出发时间。你需要找出在任意时间点容纳列车所需的最少站台数量。
例如:到达[] = {1:00, 1:40, 1:50, 2:00, 2:15, 4:00} 出发[] = {1:10, 3:00, 2:20, 2:30, 3:15, 6:00} 上述场景所需的平台数量 = 4请注意,到达时间按时间顺序排列。解决方案: 找出火车站所需的最少站台数量。
问题 23:在数组中找到和最接近零的一对
给定一个包含 +ve 和 -ve 整数的数组,我们需要找到一个和接近于零的数对。例如:数组[] = {1,3,-5,7,8,20,-40,6}; 总和最接近零的一对:-5 和 6解决方案: 在 Java 数组中找到总和最接近零的一对。
问题 24:给定一个排序数组和一个数字 x,找到数组中和最接近 x 的对
给定一个已排序的数组,我们需要找到一个数对,其和接近数组中的数字 X。例如:数组[] = { - 40,- 5,1,3,6,7,8,20}; 总和最接近 5 的一对:1 和 3解决方案: 在 Java 数组中找到和最接近 X 的一对。
问题 25:从数组中找出所有元素对,其和等于给定数字
给定一个数组,我们需要找到所有和等于数字 X 的对。例如:数组[] = { -40, -5, 1, 3, 6, 7, 8, 20 }; 总和等于 15 的元素对:7、8 和 -5、20解决方案: 从数组中找出所有元素对,其和等于给定数字。
问题 26:给定一个由 0 和 1 组成的随机数组,您需要在数组中分离 0 和 1。
例如:arr[] = {0,1,0,0,1,1,1,0,1} 分离 0 和 1 数字后的数组: {0,0,0,0,1,1,1,1,1}解决方案: 在数组中分离 0 和 1。
问题 27:在数组中分离奇数和偶数
给定一个整数数组,你需要区分奇数和偶数。请注意:元素的顺序可以改变。例如:arr[] = {12, 17, 70, 15, 22, 65, 21, 90} 分离奇数和偶数后的数组: {12, 90, 70, 22, 15, 65, 21, 17}解决方案: 在数组中分离 0 和 1。
问题 28:给定一个仅包含零、一和二的数组。编写一个函数,以 O(n) 时间复杂度对给定数组进行排序。
例如:输入 : [1, 2, 2, 0, 0, 1, 2, 2, 1] 输出 : [0, 0, 1, 1, 1, 2, 2, 2, 2]
解决方案: 对 0、1 和 2 的数组进行排序。
问题 29:查找数组中的局部最小值
局部最小值小于其邻居
例如:
输入 : int [] arr = {10, 5, 3, 6, 13, 16, 7}; 输出:2 int []arr = {11,12,13,14}; 输出:11 int []arr = {10}; 输出:10 int []arr = {8,6}; 输出:6
问题 30:Java 中的滑动窗口最大值
给定一个整数数组和一个整数 k,从所有连续的大小为 K 的子数组中找出最大元素。
例如:
输入 : 输入:int[] arr = {2,6,-1,2,4,1,-6,5} 整数 k = 3 输出:6,6,4,4,4,5
解决方案: 找到数组中的局部最小值。
问题 31:计算排序数组中每个元素出现的次数(或频率)
给定一个包含重复项的有序整数数组。求出数组中每个唯一元素的频率。
频率定义为数组中任意元素出现的次数。
例如 :
输入 : 输入: int[] arr = {1, 1, 1, 3, 3, 4, 5, 5, 6, 6}; 输出: 1 的频率是:3 3 的频率是:2 4 的频率是:1 5 的频率是:2 6 的频率是:2
解决方案: 计算排序数组中每个元素出现的次数(或频率)。
问题 32:在数组中查找具有给定总和的子数组。
给定一个非负整数数组和一个数字。你需要打印所有子数组的起始和结束索引,使它们的和等于给定的整数。
例如:
输入 : 输入-int[] arr = {2, 3, 6, 4, 9, 0, 11}; int 数字 = 9 输出- 起始索引:1,结束索引:2 起始索引:5,结束索引:5 起始索引:5,结束索引:6
解决方案: 在数组中查找具有给定总和的子数组。
问题 33:查找数组中的峰值元素。
峰值元素是数组中大于/等于其邻居的元素,也就是说,对于第 i 个索引处的元素,索引 i-1 和 i+1 处的邻居元素必须大于等于第 i 个位置处的元素。
解决方案: 在数组中找到峰值元素。
问题 34:在数组中寻找领导者。
我们需要打印数组中所有存在的首元素。如果元素大于右侧元素,则该元素为首元素。
arr[]={14, 12, 70, 15, 99, 65, 21, 90} 这里 99 和 90 是领导元素
例如:
解决方案: 在数组中寻找领导者。
问题 35:计算已排序二进制数组中 1 的数量。
打印给定排序后的二进制数组中 1 的个数。
例如:
输入 : int[] arr = {0,0,0,1,1,1,1}; 输出:4 int[] arr = {0,0,1}; 输出:1
解决方案: 计算已排序二进制数组中 1 的数量。
问题 36:在整数数组中查找第一个重复元素。
查找整数数组中第一个重复元素。
例如:
输入 : 输入:array[] = {10, 7, 8, 1, 8, 7, 6} 输出:7 [7 是第一个实际重复的元素]
解决方案: 在整数数组中找到第一个重复元素。
问题 37:检查数组元素是否连续。
给定一个数组,我们需要检查该数组是否包含连续的元素。
例如:
输入:array[] = {5, 3, 4, 1, 2} 输出:true 由于数组包含从 1 到 5 的连续元素,输入:array[] = {47, 43, 45, 44, 46} 输出:true 由于数组包含从 43 到 47 的连续元素,输入:array[] = {6, 7, 5, 6} 输出:false 因为数组不包含连续的元素。
解决方案: 检查数组元素是否连续。
问题 38:Java 中的数组排列。
给定一个由不同整数组成的数组,打印该数组的所有排列。
例如:
数组:[10,20,30] 排列如下: [10,20,30] [10, 30, 20] [20,10,30] [20, 30, 10] [30, 10, 20] [30, 20, 10]
解决方案: java 中的数组排列。
问题 39:将数组旋转 K 个位置。
例如 :
N=6且k=2 如果 Arr[] = {1, 2, 3, 4, 5, 6} 且 k=2 那么旋转后的数组将是 {5, 6, 1, 2, 3, 4}
解决方案: 将数组旋转 K 个位置。
问题 40:买卖股票以实现利润最大化。
给定一个表示单日股价的整数数组,计算单笔交易可获得的最大利润。
因此,你需要找到一对 (buyDay, sellDay),其中 buyDay < = sellDay,并且该交易对能够最大化利润。
例如:
int arr[]={14, 12, 70, 15, 99, 65, 21, 90}; 通过在第 1 天(基于 0 的指数)买入并在第 4 天卖出可以获得最大利润。 最大利润 = 99-12 =87
解决方案: 买卖股票以实现利润最大化。
问题 41:找出两个元素之间的最大差异,使得较大的元素出现在较小的数字之后。
给定一个整数数组,找到两个元素之间的最大差异,使得较大的元素出现在较小的数字之后
例如:
int arr[]={14, 12, 70, 15, 95, 65, 22, 30}; 最大差异 =95-12 = 83
解决方案: 两个元素之间的最大差异,使得较大的元素出现在较小的数字之后。
问题 42:在按行和按列排序的矩阵中搜索。
给定按行和按列排序的矩阵,我们需要以最小的时间复杂度搜索元素。
解决方案: 在按行和列排序的矩阵中搜索。
问题 43:连续子数组的最大和。
最大和连续子数组的任务是在一维数组中找到具有最大和的连续子数组。
例如:
对于值序列 -2、1、-3、4、-1、2、1、-5、4;和最大的连续子数组是 4、-1、2、1,和为 6
解决方案: 连续子数组的最大和。
问题 44:在数组中找到总和为给定值的连续子数组。
给定一个正整数数组和给定值 X,找到和等于 X 的连续子数组。
例如:
arr[]={14, 12, 70, 15, 99, 65, 21, 90}; X =97。 索引 1 至 3 之间的和 元素为 12、17 和 15
解决方案: 在数组中找到总和为给定值的连续子数组。
问题 45:Java 中字符串数组中的最长公共前缀。
给定一个正整数数组和给定值 X,找到和等于 X 的连续子数组。
例如:
String[] strArr={"java2blog","javaworld","javabean","javatemp"}; 因此,上述字符串数组中的最长公共前缀将是“java”,因为上述所有字符串都以“java”开头。
解决方案: java 中字符串数组中的最长公共前缀。
问题 46:在 java 中查找集合(幂集)的所有子集。
给定一组不同的整数 arr,返回所有可能的子集(幂集)。
例如:
输入:nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]
解决方案: 在 java 中查找集合的所有子集。
细绳
问题 47:如何在 Java 中反转字符串?你能编写一个不使用任何 Java 内置方法的程序吗?
解决方案:有很多方法可以实现,其中一些是:- 使用 for 循环
- 使用递归
- 使用 StringBuffer
问题 48:编写一个 Java 程序来检查两个字符串在 Java 中是否是字母重排?
解答: 如果两个字符串包含相同的字符但顺序不同,则它们为字母重排的字符串。例如:Angel 和 Angle 就是字母重排的字符串。
检查字符串是否为字母重排的方法有几种。例如:
- 使用字符串方法
- 使用 array.sort
检查解决方案, 检查 Java 中的两个字符串是否为字母重排。
问题 49:编写一个程序来检查 java 中的字符串是否包含所有唯一字符?
解决方案: 这里有一些方法来检查字符串是否包含所有唯一字符
- 使用 HashSet
- 使用 String 的 indexOf 和 lastIndexOf 方法
- 通过使用字符的 ascii 值。
请参阅检查字符串是否具有所有唯一字符的完整解决方案。
问题 50:如何在 Java 中检查一个字符串是否是另一个字符串的旋转?
解决方案:假设 您想检查 str1 和 str2 是否相互旋转。
您可以在检查 java 中一个字符串是否是另一个字符串的旋转中找到完整的解决方案。
问题 51:如何在 java 中查找字符串中的重复字符?
解决方案: 这是一个在字符串中查找重复字符的解决方案。
- 创建一个 HashMap ,将字符串的字符作为键插入,将其计数作为值。
- 如果 Hashamap 已经包含 char,则将其计数增加 1,否则将 char 放入 HashMap。
- 如果 Char 的值大于 1,则表示它是该字符串中的重复字符。
请参阅程序中的解决方案以查找字符串中的重复字符。
问题 52:在 java 中查找字符串中第一个非重复字符?
解决方案: 有很多方法可以找到它。
其中一些是:
- 使用LinkedHashMap
- 使用 indexOf 和 lastIndexOf 方法。
请在“查找字符串中第一个非重复字符”处找到完整的解决方案。
问题 53:在 java 中查找字符串的所有子字符串?
解决方案: Java 程序用于查找字符串的所有子字符串
。 例如:如果输入为“abb”,则输出应为“a”、“b”、“b”、“ab”、“bb”、“abb”。
我们将使用 String 类的 subString 方法查找所有子字符串。
请参阅“查找字符串的所有子字符串”的完整解决方案。
问题 54:不使用 Java 中的任何内置方法查找字符串的长度?
解决方案:您可以使用 try catch 块来捕获 StringIndexOutOfBoundException,当出现此异常时,您可以简单地返回 i(您将获得异常的索引)。
请参阅不使用内置方法查找字符串长度的完整解决方案。
问题 55:编写一个程序来打印 Java 中字符串的所有排列?
解决方案:取出字符串的第一个字符,并以递归方式将其插入到剩余字符串的排列的不同位置。请参阅如何在 Java 中查找字符串的所有排列,获取完整解决方案。
二叉树
问题 56:如何遍历二叉树?
遍历二叉树有三种方法。
问题 57:编写一个算法来对二叉树进行层次遍历?
你需要编写 Java 程序来实现二叉树的层序遍历。你可以使用队列数据结构来实现层序遍历。
解决方案:二叉树的层次顺序遍历。
问题 58:编写一个算法来对二叉树进行螺旋顺序遍历?
你需要编写 Java 程序来实现二叉树的螺旋级序遍历
解决方案: 二叉树的螺旋顺序或锯齿形遍历。
问题 59:如何打印二叉树的叶节点?
您需要编写 java 程序来打印二叉树的所有叶节点。
上述二叉树的叶节点为 5、30、55、70
解决方案:打印二叉树的叶节点。
问题 60:如何计算二叉树的叶节点。
你需要编写一个 Java 程序来计算二叉树的叶子节点数。
问题 15 中使用的二叉树的叶子节点数为 5。解决
方案:计算二叉树的叶子节点数。
问题 61:如何打印二叉树中从根到叶的所有路径。
您需要编写一个程序来打印从根到叶的所有路径。
解决方案:打印二叉树中从根到叶的所有路径。
问题 62:如何查找二叉树中节点的级别
给定一个节点,你需要找到该节点的层级。例如:问题 14 中使用的节点 70 的层级为 3。
解决方案:在二叉树中查找节点的层级。
问题 63:如何在二叉树中找到最大元素。
你需要编写一个 Java 程序来查找二叉树中的最大元素。
解决方案:查找二叉树中的最大元素。
问题 64:如何在二叉树中找到最低公共祖先(LCA)。
你需要编写一个程序来在二叉树中查找 LCA。
解决方案:在二叉树中查找 LCA 的程序。
问题 65:如何进行二叉树的边界遍历。
编写一个 Java 程序来进行二叉树的边界遍历,如下图所示。
解决方案:二叉树的边界遍历。
问题 66:如何打印二叉树的垂直和?
您需要找到位于同一列的节点的总和。
解决方案:如何打印二叉树的垂直和。
问题 67:计算二叉树中总和等于目标的子树数量?
给定一棵 二叉树 和一个整数。你需要找到所有节点之和等于给定整数的子树的数量,即目标和。
解决方案:计算二叉树中总和等于目标的子树数量。
二叉搜索树
问题 68:什么是二叉搜索树?
二叉搜索树是一种特殊类型的 二叉树 ,具有以下属性。
- 小于根的节点将位于左子树中。
- 大于根的节点将成为右子树。
- 它不应该有重复的节点
- 左子树和右子树也都应该是二叉搜索树。
问题 69:您能编写算法来在二叉搜索树中插入节点吗?
解决方案:在二叉搜索树中插入节点
问题 70:您能编写算法来删除二叉搜索树中的节点吗?
解决方案:删除二叉搜索树中的节点问题 71:如何在二叉搜索树中找到最小和最大元素?
解决方案:二叉搜索树的最左边和最右边的节点分别是最小和最大节点二叉搜索树中的最小和最大元素。问题 72:如何在二叉搜索树中找到最低公共祖先(LCA)。
你需要编写一个程序在二叉搜索树中查找 LCA。解决方案: 在二叉搜索树中查找 LCA 的程序。
问题 73:在二叉搜索树中查找中序后继
你需要编写一个程序,在二叉搜索树中查找中序后继。解决方案: 二叉搜索树中的中序后继问题 74:将排序数组转换为平衡 BST
解决方案: 将排序后的数组转换为平衡二叉搜索树问题 75:将排序的链接列表转换为平衡的 BST
解决方案: 将排序的链接列表转换为平衡的 BST问题 76:在 Java 中检查二叉树是否为二叉搜索树
解决方案: 在 Java 中检查二叉树是否为二叉搜索树排序
问题 77:编写一个算法来实现冒泡排序?
解决方案:Java 中的冒泡排序问题 78:编写一个算法来实现插入排序?
解决方案:Java 中的插入排序问题 79:编写一个算法来实现选择排序?
解决方案:Java 中的选择排序问题 80:您能编写合并排序的算法吗?您知道合并排序的复杂性吗?
解决方案:Java 中的合并排序问题 81:您知道如何实现堆排序吗?
解决方案:在 Java 中实现堆排序问题 82:在 Java 中实现快速排序?
解决方案:在 Java 中实现快速排序问题 83:在 Java 中实现希尔排序?
解决方案:在 Java 中实现希尔排序问题 84:在 Java 中实现计数排序?
解决方案:在 Java 中实现计数排序问题 85:什么是二分查找?你能编写一个算法,使用二分查找在排序数组中查找元素吗?
解决方案:Java中的二分查找算法图形
问题 86:编写算法在图中执行深度优先搜索。
解决方案:Java 中的深度优先搜索问题 87:编写算法在图中执行广度优先搜索。
解决方案: Java 中的广度优先搜索问题 88:解释从源到所有其他顶点的 Dijkstra 算法。
解决方案: Java 中的 Dijkstra 算法
问题 89:解释 Bellman Ford 算法以找到最短距离
解决方案: Java 中的 Bellman Ford 算法
问题 90:解释 Kruskal 寻找最小生成树的算法
解决方案: Kruskal算法
动态规划
问题 91:给定两个字符串,找到最长公共子字符串。
解决方案:java 中的最长公共子字符串。
问题 92:给定两个字符串 A 和 B。找出给定字符串的最长公共子序列 (LCS) 的长度。
解决方案:Java 中的最长公共子序列
问题 93:给定一个矩阵,我们需要计算 MxN 矩阵从左上角到右下角的所有路径。您可以向下移动,也可以向右移动。
解决方案:计算矩阵中的所有路径
问题 94:Java 中的编辑距离问题
给定两个字符串 string1 和 string2,需要使用给定的操作以最少的步骤将 String1 转换为 String2。使用任何给定的操作都会使步骤增加 1。
允许的操作包括:
(i) 删除 :此操作允许从字符串中删除任意一个字符。
(ii) 插入 :此操作允许在字符串的任意位置插入一个字符。
(iii) 替换 :此操作允许用任何其他字符替换字符串中的任意一个字符
。
解决方案:Java 中的编辑距离问题。
问题 95:Java 中的硬币找零问题
给定待支付金额和支付货币。每种货币的供应量都是无限的,使用任意组合即可支付给定金额。请打印支付该金额的方式数量。
解决方案:Java 中的硬币找零问题
问题 96:到达最后一个索引所需的最少跳跃次数
解决方案:到达最后一个索引的最少跳跃次数。
各种各样的
问题 97:什么是算法以及如何计算算法的复杂度。
解决方案:如何计算算法的复杂度
问题 98:在 Java 中实现 trie 数据结构。
问题 99:在 Java 中计算阶乘尾随零的数量。
解决方案:在 Java 中计算阶乘尾随零的数量
问题 100:直方图中最大的矩形面积。
解决方案:计算直方图中最大的矩形面积
问题 101:检查 java 表达式中的括号是否平衡。
解决方案:检查 Java 表达式中的括号是否匹配。
问题 102:什么是记忆化。
解决方案:
通过将结果存储在数据结构(通常是 Hashtable、HashMap 或 Array)中,内存管理可以确保方法不会对相同的输入执行多次。Java
内存管理示例
来源:Java 数据结构与算法面试题
以上是关于数据结构和算法面试题的全部内容。如果您想添加任何新问题,请留言。
您可能还喜欢:
- 核心 Java 面试题
- Java 集合类面试题
- Java 字符串面试题
- Java OOP 面试题
- Java多线程面试题
- Java 异常处理面试题
- Java序列化面试题
- Web 服务面试题
- RESTful Web 服务面试题
- Spring面试题
- Spring Boot 面试题
- Hibernate 面试题