1、自我介绍:
2、自己负责模块流程:
3、如何保证redis 和 数据库数据一致(回答混乱,通过mq,)
(后面说下这块流程)
4、如何保证单点登录在别的机器上无法登录(回答在token中保存了用户ip)
5、你们项目组几个人
6、你在工作中用到过哪些集合类:(回答ArrayList,hashmap ,linkList 、hashSet )
7、hashset 和 ArrayList 有什么区别(只说了hashset去重无序,ArrayList没说出啥)
8、hashset 和 hashMap有什么区别(胡乱回答hashet可以为null值存在,hashMap不可以为null值存在)
9、项目定时任务怎么做的?(不是我负责的)
10、如何限流的?sintinel如何实现限流
11、sintinel设置了哪些参数
12:jvm算法: 简历回答垃圾回收:垃圾回收算法:(可达性分析 和 程序计数器)
13、可达性分析 和 程序计数器 结果有什么不同?
反问
总结失败经验:过于紧张,面试太少,头脑空白。
对比arraylist 和 LinkList
维度 ArrayList LinkedList 数据结构 动态数组 双向链表 随机访问 ✅ O(1) ❌ O(n) 头尾操作 ❌ 尾部插入高效,头部/中间低效 ✅ O(1) 内存效率 ✅ 紧凑 ❌ 分散 适用场景 读多写少,索引访问优先 写多读少,频繁增删优先
对比hashmap 和 hashtable
特性 HashMap HashSet 接口实现 实现 Map
接口(键值对存储)实现 Set
接口(唯一元素集合)存储方式 存储键值对( Key-Value
)仅存储元素(元素作为 HashMap
的键)数据冗余 键唯一,值可重复 元素唯一(依赖 HashMap
的键唯一性)内存占用 较高(需存储键和值) 较低(值统一为固定对象 PRESENT
)线程安全性 非线程安全 非线程安全(与 HashMap
一致)
hashset:
1. 基于哈希表的结构
- 依赖
HashMap
:HashSet
内部封装了一个HashMap
,元素作为HashMap
的键,值统一为固定对象PRESENT
。- 哈希冲突处理:通过链表或红黑树(JDK8+)解决冲突,但元素的存储位置由哈希值决定,而非插入顺序。
对比hashmap 和 hashtable对比
特性 Hashtable HashMap 线程安全性 线程安全 (方法用 synchronized
修饰)非线程安全(需手动同步) null 支持 不允许 键或值为 null
允许 一个 null
键和多个null
值继承关系 继承 Dictionary
类(已过时)继承 AbstractMap
类初始容量与扩容 默认初始容量 11 ,扩容为 2n+1 默认初始容量 16 ,扩容为 2n 哈希值计算 直接使用 key.hashCode()
对 key.hashCode()
二次哈希(减少冲突)迭代器 使用 Enumeration
(不支持快速失败)使用 Iterator
(支持快速失败)性能 低(同步锁开销) 高(无锁,哈希优化) 推荐使用场景 已过时,不推荐使用 主流选择(单线程或配合同步机制)