文章目录
- 恒生电子面试
-
- 一面 2021.5.31 下午两点
-
- 1. 自我介绍
- 2. 工作过程中印象最深的一件事情
- 3. 该事情有没有做复盘
- 4. java 集合(八股文)
- 5. 深拷贝和浅拷贝
- 6. java四种引用方式
- 7. java 1.8 新特性
- 8. 数据库索引类型
- 9. 数据库组合索引 什么情况下有效,什么情况下失效,如果通过函数包裹索引字段,查询是否走索引
- 10. 数据库慢sql优化
- 11. 平常排查思路 内存泄漏
- 12. redis的哨兵模式和主从模式的区别
- 13. 多个线程如何保证顺序执行
- 14. 线程池的了解
- 15. dubbo的分层基本十层
- 16. sychornized和recentLock区别
- 17. spring源码中用到的设计模式
- 17. 为什么来杭州
- 18. 期望薪资多少
- 二面
- 结语
恒生电子面试
一面 2021.5.31 下午两点
1. 自我介绍
巴拉巴拉
2. 工作过程中印象最深的一件事情
说一件工作中印象最深刻的事情,并且会问问你排查的细节
3. 该事情有没有做复盘
关于印象最深刻事情的复盘以及后期如何处理
4. java 集合(八股文)
就是八股文的面试
4.1. 说说list set map 的理解
- list (对付顺序的好帮⼿): 存储的元素是有序的、可重复的。
- set(注重独一无二的性质):存储的数据是无序的、不可重复的。
- Map(用Key搜索的专家):使用键值对(Key-Value)存储,类似数学上的函数 Key是无序的、不可重复的 Value是无序的、可重复的
4.2. arrayList和LinkedList的不同
- 是否线程安全
ArrayList
和LinkedList
都是不同步的,也就是不能保证线程安全 - 底层数据结构
ArrayList底层使用的是Object
数组LinkedList
底层使用的是双向链表 - 插入和删除是否受元素位置的影响
ArrayList
采用的是数组存储,所以插入和删除元素的时间复杂度受元素位置的影响,比如:执行add(E e) 方法 ArrayList会默认将需要插入的元素插入到列表的尾部,这种情况下的时间复杂度是O(1)。但如果是在指定位置i
插入和删除元素的话,时间复杂度就是O(n-i)。因为在进行上述操作的时候集合中的第i个元素和第i个元素之后的(n-i)个元素都要执行向后/前移一位的操作LinkedList
采用的是链表存储,所以插入和删除元素不会受元素位置的影响
- 是否支持随机快速访问
LinkedList
不支持随机快速访问,因为其实链表结构,需要从头开始查找到指定位置ArrayList
支持随机快速访问,因为它是数组结构,可以根据下标直接查找对应位置
- 内存空间占用
- ArrayList的空间浪费体现在每个list列表的结尾都会预留一定的容量空间
- LinkedList的空间浪费体现在它的每一个数据都比ArrayList要消耗更多的空间(因为要存放前一个和后一个元素指针)
4.3. hashmap 1.7和1.8的不同
4.4 concurrentHashmap讲讲
HashMap?ConcurrentHashMap?相信看完这篇没人能难住你!
5. 深拷贝和浅拷贝
- 浅拷贝(shallowCopy)只是增加了一个指针指向已存在的内存地址,
- 深拷贝(deepCopy)是增加了一个指针并且申请了一个新的内存,使这个增加的指针指向这个新的内存。
6. java四种引用方式
- 强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出OutOfMemoryError错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间会回收该对象
- 软引用:在使用软引用时,如果内存的空间足够,软引用就能继续被使用而不会被垃圾回收器回收只有在内存不足时,软引用才会被垃圾回收器回收。
- 弱引用:具有弱引用的对象拥有更短的生命周期。因为当JVM进行垃圾回收时,一旦发现弱引用的对象,无论当前内存空间是否充足,都会进行回收,不过因为垃圾回收器是一个优先级较低的线程,所以并不一定能迅速发现弱引用对象
- 虚引用 顾名思义,就是形同虚设,如果对一个对象仅仅持有虚引用,那么它相当于没有任何引用,在任何时候都有可能被回收
引用类型 | GC回收时间 | 用途 | 生存时间 |
---|---|---|---|
强引用 |