面试问题记录:
1,hashmap扩容的时候,链表超长但不满足转变成红黑树的条件时:
【HashMap】链表和红黑树互相转换的几种情况和数组的扩容机制_hashmap红黑树转链表条件-CSDN博客
2,cglib与proxy区别
JDK 动态代理和 CGLIB 动态代理对比_动态代理jdk和cglib区别-CSDN博客
3,Java中线程池创建之后,里面有线程么?
没有线程。在调用submit方法时,会判断活动线程是否大于等于核心线程,如果不大于等于,则创建新的线程执行任务。
4,说说OpenFeign
openfeign是服务间进行远程调用的一个组件,远程调用涉及服务注册、服务发现、负载均衡、服务调用。openFeign使用ribbon进行负载均衡,一共有7个策略,常见的有随机、轮训、最小链接、只调用健康的服务、权重。
5,为什么需要用线程池,有什么好处?
池化技术,用于将资源复用。java8中的线程是跟os线程一一对应的,创建线程是很耗费资源,用了线程池减少了线程的重复创建,减少系统资源消耗,也增加了系统响应性能。
6,什么是双亲委派机制?
双亲委派机制是在java类加载时,类加载器会将类传递给父级类加载器加载,如果父级不加载则向下传递。
分类:
启动类加载器:加载核心类库
扩展类加载器:加载扩展库 (lib/ext下)
应用程序类加载器:加载应用程序类
7,Spring Cloud 常用组件? Nacos的原理是什么,Nacos挂了之后,服务还能调通么?
注册中心:nacos,eureka,zookeeper
负载均衡:ribbon
远程调用:feign,dubbo
降级,熔断:sentinel,Hystrix
网关:gateway
Nacos挂了之后,服务还能调通,服务调用时的节点信息会缓存到本地上,所以能基于缓存的数据进行调用。
Nacos原理:
8,为什么要使用Spring? Spring Bean的生命周期?
1,公司使用spring(焊条) 2,spring特性:ioc,di,aop
生命周期:
1)基于反射实例化对象
2)属性赋值,依赖注入
3)初始化,调用初始化方法,init-method,initializingBean的afterPropertiesSet方法
4)使用,被注入
5)销毁,调用bean的销毁方法,disposableBean接口的destroy方法,destroy-method方法
9,