跳至主要內容
胖虎Docs
首页
最新Java面试题
Java基础
数据类型
集合
异常
字符串
JVM
数据结构和算法
My SQL
Redis
Mybatis
Spring
Springboot
Java
Java基础
Java多线程
JVM虚拟机
JUC系列
JDK新特性
数据结构与算法
数据结构
常用算法
数据库
MySQL
Redis
Mongodb
Elasticsearch
微服务
Springcloud
Springcloudalibaba
企业级开发框架
Spring
Spring Boot
Mybatis
Mybatis Plus
SSM整合
Spring Security
中间件
MQ
Dubbo
Sharding JDBC
Zookeeper
Nginx
工具
Docker
Git
IntelliJ IDEA
Maven
数据结构和算法
PangHu
小于 1 分钟
目录
1. 如何实现一个栈(Stack)?请使用数组和链表分别实现,并比较它们的优缺点。
2. 如何实现一个队列(Queue)?请使用数组和链表分别实现,并解释它们的时间复杂度。
3. 什么是双端队列(Deque)?如何在Java中实现一个双端队列?
4. 什么是优先队列(Priority Queue)?如何在Java中使用PriorityQueue实现它?
5. 如何在Java中实现一个循环队列(Circular Queue)?
6. 什么是哈希表(Hash Table)?如何在Java中实现一个简单的哈希表?
7. 如何解决哈希冲突?请解释链地址法和开放地址法的优缺点
8. 什么是链表?如何在Java中实现单链表和双向链表?
9. 如何反转一个单链表?请使用迭代和递归两种方法实现。
10. 如何在O(1)时间复杂度内删除链表的节点?
11. 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数
12. 给定一个字符串,找出其中不含重复字符的最长子串的长度
13. 判断一个字符串的排列是否是另一个字符串的子串。
14. 旋转数组:给定一个数组,将数组向右旋转k步
15. 反转链表:反转一个单链表
16. 环形链表:判断链表中是否有环,并找到环的入口。
17. 合并两个有序链表:将两个升序的链表合并为一个新的升序链表
18. 链表的中间节点:找到链表的中间节点。
19. 二叉树的最大深度:给定一个二叉树,找出其最大深度
20. 二叉树的层次遍历:从上到下按层打印二叉树,每一层打印到一行
21. 验证二叉搜索树:判断一个二叉树是否是有效的二叉搜索树。
22. 二叉树的最近公共祖先:找出二叉树中两个节点的最近公共祖先
23. 快速排序:实现快速排序算法
24. 合并区间:给定一组区间,合并所有重叠的区间
25. 搜索旋转排序数组:在旋转排序数组中搜索一个给定的目标值
26. 第K大的元素:在一个未排序的数组中找到第K大的元素
27. 爬楼梯:一个人要爬n阶楼梯,每次可以爬1阶或2阶,计算有多少种不同的爬楼梯方法
28. 最长上升子序列:在一个给定的数组中找到最长的上升子序列的长度
29. 背包问题:给定不同重量和价值的物品,求在给定容量的背包下,能取得的最大价值
30. 最大子序和:找到一个具有最大和的连续子数组(最少包含一个元素)
31. 多数元素:找出数组中出现次数超过一半的元素
32. 求众数的投票算法:用摩尔投票法找出数组中的众数