6.新国都一面
- 自我介绍:
请简要介绍您的个人背景、工作经历、技术专长以及为什么对这个职位感兴趣。
-
Java有哪些集合:
-
List:ArrayList、LinkedList、Vector、Stack
-
Set:HashSet、LinkedHashSet、TreeSet
-
Map:HashMap、LinkedHashMap、TreeMap、Hashtable、Properties
-
Queue:PriorityQueue、ArrayDeque、LinkedList
-
Collection:包含所有集合类型
-
Deque:双端队列,如ArrayDeque、LinkedList
-
SortedSet:有序集合,如TreeSet
-
SortedMap:有序映射表,如TreeMap
-
-
ArrayList和LinkedList区别,数组为什么能随机访问,ArrayList怎么扩容的,原数组怎么办,GC流程是怎么样的:
-
区别:ArrayList基于动态数组实现,LinkedList基于双向链表实现。ArrayList随机访问效率高,LinkedList插入和删除效率高。
-
数组为什么能随机访问:因为ArrayList底层使用数组存储元素,数组支持随机访问。
-
ArrayList扩容:当ArrayList的容量达到当前容量和负载因子的乘积时,会进行扩容。扩容后,新数组的大小是旧数组的1.5倍。原数组不会立即被GC,因为旧数组中的元素可能还被引用。
-
GC流程:
-
标记阶段:标记出所有可达对象。
-
清除阶段:清除未被标记的对象。
-
整理阶段:移动活动对象以减少内存碎片。
-
-
-
SpringBoot自动配置:
-
SpringBoot通过
@EnableAutoConfiguration
注解启用自动配置。 -
它会读取
classpath
下的META-INF/spring.factories
文件,加载所有可用的配置类。 -
这些配置类会被SpringBoot的自动配置机制识别,并根据条件进行相应的配置。
-
-
Spring IoC:
-
IoC(Inversion of Control,控制反转)是Spring的核心理念之一。
-
通过依赖注入(DI),实现了将对象的创建和绑定交给Spring容器管理。
-
容器在运行时动态地将依赖关系注入到对象中,而不是由程序代码直接创建和绑定依赖关系。
-
-
Spring Bean生命周期,循环依赖:
-
生命周期:
-
实例化(Instantiation):当容器第一次使用Bean时,会创建一个新的Bean实例。
-
属性设置(Population):如果Bean需要依赖其他Bean,Spring容器会在实例化后,根据依赖注入规则,将这些依赖注入到Bean中。
-
初始化(Initialization):如果Bean实现了
InitializingBean
接口或使用@PostConstruct
注解,会在属性设置后执行初始化方法。 -
使用(Usage):Bean可以被Spring容器或应用程序使用。
-
销毁(Destruction):如果Bean实现了
DisposableBean
接口或使用@PreDestroy
注解,会在使用后被销毁。
-
-
循环依赖:如果两个或多个Bean之间存在循环依赖,Spring容器会通过三级缓存(singletonFactories、earlySingletonObjects、singletonObjects)来解决循环依赖问题。
-
-
SpringMVC工作流程:
-
接收请求:客户端发送HTTP请求到SpringMVC前端控制器(DispatcherServlet)。
-
解析请求:DispatcherServlet解析请求,提取请求路径和参数。
-
查找HandlerMapping:根据请求路径查找对应的HandlerMapping。
-
执行Handler:根据HandlerMapping找到对应的Handler(通常是Controller中的方法)。
-
处理返回值:Handler处理请求,返回ModelAndView。
-
渲染视图:DispatcherServlet将ModelAndView发送给视图解析器(ViewResolver)。
-
响应客户端:视图解析器找到对应的视图,渲染视图并返回给客户端。
-
-
JWT(JSON Web Tokens)如何工作:
-
三部分组成:
-
头部(Header):包含类型(Type)、算法(Algorithm)等信息。
-
载荷(Payload):包含用户信息、创建时间、过期时间等。
-
签名(Signature):使用HMAC算法
-
**对称加密:**使用相同的密钥进行加密和解密
-
密钥泄露怎么办:
-
如果密钥泄露,需要立即更换密钥,并通知所有使用该密钥的服务和客户端
-
对所有已签名的Token进行重新签名,以保证安全。
-
确保新密钥的安全存储,防止再次泄露
-
监控Token的使用情况,及时发现异常。
-
-
八股文分类整理 老哥们点点赞,订阅一下,纯福利做数据。