一、语雀-Java集合面试题
1、Java中的集合类有哪些?如何分类的?
2、你能说出几种集合的排序方式?
1. 实现Comparable
2. 借助Comparator
3. 通过Stream
3、什么是fail-fast?什么是fail-safe?
1. foreach遍历中不能使用remove/add
modCount是ArrayList中的一个成员变量。它表示该集合实际被修改的次数。
expectedModCount表示这个迭代器预期该集合被修改的次数。其值随着Itr被创建而初始化。只有通过迭代器对集合进行操作,该值才会改变。
2. fail-safe
但是,虽然基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容。
3. 什么是Copy-On-Write
4、遍历的同时修改一个List有几种方式?
5、Set是如何保证元素不重复的
6、ArrayList的subList方法有什么需要注意的地方吗?
✅ArrayList的subList方法有什么需要注意的地方吗?
7、ArrayList的序列化是怎么实现的?
8、hash冲突通常怎么解决?
9、HashMap、Hashtable和ConcurrentHashMap的区别?
✅HashMap、Hashtable和ConcurrentHashMap的区别?
| 特性/集合类 | HashMap | Hashtable | ConcurrentHashMap |
|---|---|---|---|
| 线程安全 | 否 | 是,基于方法锁 | 是,基于分段锁 |
| 继承关系 | AbstractMap | Dictionary | AbstractMap,ConcurrentMap |
| 允许null值 | K-V都允许 | K-V都不允许 | K-V都不允许 |
| 默认初始容量 | 16 | 11 | 16 |
| 默认加载因子 | 0.75 | 0.75 | 0.75 |
| 扩容后容量 | 原来的两倍 | 原来的两倍加1 | 原来的两倍 |
| 是否支持fail-fast | 支持 | 支持 | fail-safe |
10、HashMap在get和put时经过哪些步骤?
1. HashMap如何定位key
2. HashMap的key为null时,没有hashCode是如何存储的?
3. HashMap保证容量为2^n
11、HashMap是如何扩容的?
1. 链表重新链接
二、语雀-Dubbo面试题
1、什么是RPC,和HTTP有什么区别?
1. 什么是远程调用
2、什么是泛化调用?
3、Dubbo支持哪些调用协议?
4、Dubbo服务发现与路由的概念有什么不同?
5、Dubbo的缓存机制了解吗?
6、Dubbo如何实现像本地方法一样调用远程方法的?
7、Dubbo的整体架构是怎么样的?
8、Dubbo支持哪些序列化方式?
9、Dubbo的服务调用的过程是什么样的?
10、Dubbo支持哪些负载均衡策略?
11、Dubbo 支持哪些服务治理?
三、语雀-设计模式面试题
1、什么是设计模式?有什么好处?
2、设计模式的7大基本原则有哪些?
3、使用哪种设计模式可以提高代码可维护性?
4、使用哪种设计模式可以提高代码的复用性?
5、你在工作中是如何使用设计模式的?
6、请简述MVC模式的思想
7、单例模式的多种写法
1. 懒汉模式
2. 饿汉
3. 静态内部类
4. 枚举
5. 双重校验锁
volatile主要目的为禁止new Singletion()(不是原子性的)的指令重排。