vlambda博客
学习文章列表

JAVA 高频算法面试题汇总


一、字符串(String)类算法面试题

1) String, StringBuilder 和 StringBuffer 三者有什么不同?

2) 为什么String类型在Java中是不可变的?

3) 在Java语言中,如何split string?

4) 为什么char数组能比String更好的去存储password?

5) 写一个函数判断一个字符串是否是回文串?

6) 写一个函数实现从字符串中删除任意给出的字符

7) 分别用递归和非递归的方法,打印出一个字符串的所有全排列

8) 写一个函数,从给出的字符串中求出由这些字母构成的最长的回文串。

9) 如何从一个字符串中找出第一个非重复的字符?

10) 如何并发计算一个给定的字符在字符串中出现的次数?

11) 写出一个函数判断两个字符串是否可以通过改变字母的顺序变成一样的字符串

12) 如何转换以一个数字化的字符串变成一个整数?

二、数组(Array)类算法面试题

1) 一个包含1-100数字的数组中,有一个数字丢失了,如何快速的找出它?

2)一个包含1-100数字的数组中,有一个数字重复了,如何快速的找出它?

3)一个包含1-100数字的数组中,有多个数字重复了,如何快速的找出他们?

4) 给出两个数组,如何找出那些出现在第一个数组中,但是没有出现在第二个数组中的数字?

5) 如何找出第二大的数在一个整数数组中?

6) 找出所有和等于给出数组的两两组合的pair对

7) 用Java实现如何从一个数组中移除重复的元素?

8) 如何找出最大和最小的数字在一个数组中?

9) 如何找出最大的两个数在一个数组中?

三、链表(Linkedlist)类算法题

1) 如何找出一个单向链表的中间元素?

2) 如何找出单向链表中的倒数第3个元素?

3) 如何判断一个单项链表是否与环? 如果有环,如何找出环的起始位置?

4)如何翻转一个链表?

5) 比较链表和数组这两个数据结构的不同点


文章的答案下方找小姐姐获取

四、二叉树(Binary Tree)类算法题

1) 如何找出树的深度?

2)写一个函数打印出树的中序遍历

3) 打印出书的所有叶子节点

4) 用Java写一个方法,判断一棵树是否是二叉搜索树

5) 用Java判断一棵树是否是平衡树

五、查找和排序类(Searching and Sorting)

1) 写一个程序用快排原地排序一个数组

2) 用Java或者C++写一个程序去实现二分搜索算法

3) 如何使用Comparator, 在Java内实现对对象的排序

4) 用Java写一个程序去实现插入排序

5) 用Java写一个程序去实现冒泡排序

六、数(Numbers)

1) 写一个程序去判断一个数是否是2的幂次

2) 写一个程序去判断一个数字是否是回文的

3) 写一个程序判断一个整数是否是水仙花数?

4) 写一个程序,找出给出数字的所有素因子

5) 写一个函数去计算第n个斐波那契数?是否能用递归和非递归两种方法?


文章的答案下方找小姐姐获取