博客记录-day118-Java集合,Dubbo,设计模式面试题

113 阅读4分钟

一、语雀-Java集合面试题

1、Java中的集合类有哪些?如何分类的?

✅Java中的集合类有哪些?如何分类的?

image.png

image.png

2、你能说出几种集合的排序方式?

1. 实现Comparable

image.png

2. 借助Comparator

image.png

3. 通过Stream

image.png

3、什么是fail-fast?什么是fail-safe?

✅什么是fail-fast?什么是fail-safe?

image.png

1. foreach遍历中不能使用remove/add

modCount是ArrayList中的一个成员变量。它表示该集合实际被修改的次数。

expectedModCount表示这个迭代器预期该集合被修改的次数。其值随着Itr被创建而初始化。只有通过迭代器对集合进行操作,该值才会改变。

image.png

2. fail-safe

image.png

但是,虽然基于拷贝内容的优点是避免了ConcurrentModificationException,但同样地,迭代器并不能访问到修改后的内容。

3. 什么是Copy-On-Write

image.png

4、遍历的同时修改一个List有几种方式?

✅遍历的同时修改一个List有几种方式?

image.png

image.png

5、Set是如何保证元素不重复的

✅Set是如何保证元素不重复的

image.png

6、ArrayList的subList方法有什么需要注意的地方吗?

✅ArrayList的subList方法有什么需要注意的地方吗?

image.png

image.png

7、ArrayList的序列化是怎么实现的?

✅ArrayList的序列化是怎么实现的?

image.png

image.png

8、hash冲突通常怎么解决?

✅hash冲突通常怎么解决?

image.png

9、HashMap、Hashtable和ConcurrentHashMap的区别?

✅HashMap、Hashtable和ConcurrentHashMap的区别?

image.png

特性/集合类HashMapHashtableConcurrentHashMap
线程安全是,基于方法锁是,基于分段锁
继承关系AbstractMapDictionaryAbstractMap,ConcurrentMap
允许null值K-V都允许K-V都不允许K-V都不允许
默认初始容量161116
默认加载因子0.750.750.75
扩容后容量原来的两倍原来的两倍加1原来的两倍
是否支持fail-fast支持支持fail-safe

10、HashMap在get和put时经过哪些步骤?

✅HashMap在get和put时经过哪些步骤?

image.png

image.png

1. HashMap如何定位key

image.png

2. HashMap的key为null时,没有hashCode是如何存储的?

image.png

3. HashMap保证容量为2^n

image.png

11、HashMap是如何扩容的?

✅HashMap是如何扩容的?

image.png

1. 链表重新链接

image.png

二、语雀-Dubbo面试题

1、什么是RPC,和HTTP有什么区别?

✅什么是RPC,和HTTP有什么区别?

image.png

1. 什么是远程调用

image.png

2、什么是泛化调用?

✅什么是泛化调用?

image.png

3、Dubbo支持哪些调用协议?

✅Dubbo支持哪些调用协议?

image.png

image.png

4、Dubbo服务发现与路由的概念有什么不同?

✅Dubbo服务发现与路由的概念有什么不同?

image.png

5、Dubbo的缓存机制了解吗?

image.png

6、Dubbo如何实现像本地方法一样调用远程方法的?

✅Dubbo如何实现像本地方法一样调用远程方法的?

image.png

image.png

7、Dubbo的整体架构是怎么样的?

✅Dubbo的整体架构是怎么样的?

image.png

8、Dubbo支持哪些序列化方式?

✅Dubbo支持哪些序列化方式?

image.png

9、Dubbo的服务调用的过程是什么样的?

✅Dubbo的服务调用的过程是什么样的?

image.png

10、Dubbo支持哪些负载均衡策略?

✅Dubbo支持哪些负载均衡策略?

image.png

image.png

11、Dubbo 支持哪些服务治理?

✅Dubbo 支持哪些服务治理?

image.png

三、语雀-设计模式面试题

1、什么是设计模式?有什么好处?

✅什么是设计模式?有什么好处?

image.png

2、设计模式的7大基本原则有哪些?

✅设计模式的7大基本原则有哪些?

image.png

3、使用哪种设计模式可以提高代码可维护性?

✅使用哪种设计模式可以提高代码可维护性?

image.png

4、使用哪种设计模式可以提高代码的复用性?

✅使用哪种设计模式可以提高代码的复用性?

image.png

5、你在工作中是如何使用设计模式的?

✅你在工作中是如何使用设计模式的?

image.png

6、请简述MVC模式的思想

✅请简述MVC模式的思想

image.png

7、单例模式的多种写法

✅单例模式的多种写法

image.png

1. 懒汉模式

image.png

2. 饿汉

image.png

3. 静态内部类

image.png

4. 枚举

image.png

5. 双重校验锁

volatile主要目的为禁止new Singletion()(不是原子性的)的指令重排。 image.png

8、如何破坏单例模式?

✅如何破坏单例模式?

image.png

image.png

image.png

9、不使用锁如何实现线程安全的单例?

✅不使用锁如何实现线程安全的单例?

image.png