Java集合相关面试题
导学
1 算法复杂度分析
1.1 为什么要进行复杂度分析?
/**
** *求**1~n**的累加和
** @param* *n
** @return
*/
public int sum(int n) {
int sum = 0;
for ( int i = 1; i <= n; i++) {
sum = sum + i;
}
return sum;
}1.2 时间复杂度
1.2.1 案例
1.2.2 大O表示法

1.2.3 常见复杂度表示形式


1.2.4 时间复杂度O(1)
1.2.5 时间复杂度O(n)
1.2.6 时间复杂度O(logn)

1.2.7 时间复杂度O(n * log n)
1.3 空间复杂度
2 List相关面试题
2.1 数组
2.1.1 数组概述



2.1.2 寻址公式

2.1.3 操作数组的时间复杂度




2.2 ArrayList源码分析
2.2.1 成员变量

2.2.2 构造方法


2.2.3 ArrayList源码分析

2.2.4 面试题-ArrayList list=new ArrayList(10)中的list扩容几次

2.2.4 面试题-如何实现数组和List之间的转换


2.3 链表
2.3.1 单向链表


2.3.2 单向链表时间复杂度分析


2.3.3 双向链表


2.3.4 双向链表时间复杂度分析

2.3.5 面试题-ArrayList和LinkedList的区别是什么?
3 HashMap相关面试题

3.1 二叉树
3.1.1 二叉树概述



3.1.2 二叉搜索树



3.1.3 红黑树

3.2 散列表
3.2.1 散列表(Hash Table)概述



3.2.2 散列函数和散列冲突

3.2.3 散列冲突-链表法(拉链)

3.2.4 时间复杂度-散列表



3.3 面试题-说一下HashMap的实现原理?

3.4 面试题-HashMap的put方法的具体流程
3.4.1 hashMap常见属性

3.4.2 源码分析


3.5 面试题-讲一讲HashMap的扩容机制


3.6 面试题-hashMap的寻址算法



3.7 面试题-hashmap在1.7情况下的多线程死循环问题






3.8 面试题-HashSet与HashMap的区别

3.9 面试题-HashTable与HashMap的区别
3 真实面试还原
3.1 Java常见的集合类
3.2 List
3.4 HashMap
Last updated
