『美团网』最新社招Java面试题分享——Spring+JVM+多线程

本文深入探讨了Spring的IoC启动过程、Bean的作用域和生命周期,JVM的内存划分、对象存活及GC算法,以及多线程中的死锁条件和同步机制。通过分析Spring的AOP、Spring MVC,JVM的类加载过程和双亲委派机制,以及多线程中的原子操作类,如CountDownLatch和Semaphore,为Java开发者提供了面试必备知识点。
摘要由CSDN通过智能技术生成

image

一. Spring

1. 谈谈你对Spring的理解

关键点

  • 企业框架,目前最流行,没有之一
  • AOP、IOC、Spring MVC

2. Spring中用到了哪些设计模式

  • 工厂模式,比如 BeanFactory
  • 代理模式,在Aop实现中用到了JDK的动态代理
  • 单例模式,Bean的创建默认就是单利的

3. IoC的启动过程

  • Resource文件的定位,即找到bean的配置文件
  • 通过特定的reader解析该bean配置文件,抽象成beanDefinition类
  • 将beanDefinition向容器注册,写入到一个大的HashMap中

4. BeanFactory 和 ApplicationContext 区别

  • 功能,BeanFactory负责读取bean配置,管理bean的加载,实例化,维护bean之间的依赖关系,负责bean的声明周期;ApplicationContext除了提供上述BeanFactory所能提供的功能之外,还提供了国际化支持、资源访问、事件传递、队Web的支持等功能.最后,如果你的时间不是很紧张,并且又想快速的初级程序员提高,最重要的是不怕吃苦,建议你可以扩列我伪(同音):首先是:12534 ,最后是:31195,(连在一起)即可找到我,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~,包括小编自己整理的一份2022最新的程序员提升资料和0基础入门教程,欢迎初学和进阶中的小伙伴。在不忙的时间我会给大家解惑。
  • BeanFactroy采用的是延迟加载形式来注入Bean的,即只有在使用到某个Bean时(调用getBean()),才对该Bean进行加载实例化;而ApplicationContext则相反,它是在容器启动时,一次性创建了所有的Bean。
  • BeanFactory和ApplicationContext都支持BeanPostProcessor、BeanFactoryPostProcessor的使用,但两者之间的区别是:BeanFactory需要手动注册,而ApplicationContext则是自动注册

5. Bean 的生命周期

  • 实例化一个Bean,也就是我们通常说的new
  • 按照Spring上下文对实例化的Bean进行配置,也就是IOC注入
  • 如果这个Bean实现了BeanNameAware接口,会调用它实现的setBeanName(String beanId)方法,此处传递的是Spring配置文件中Bean的ID
  • 如果这个Bean实现了BeanFactoryAware接口,会调用它实现的setBeanFactory(),传递的是Spring工厂本身(可以用这个方法获取到其他Bean)
  • 如果这个Bean实现了ApplicationContextAware接口,会调用setApplicationContext(ApplicationContext)方法,传入Spring上下文,该方式同样可以实现步骤4,但比4更好,以为ApplicationContext是BeanFactory的子接口,有更多的实现方法
  • 如果这个Bean关联了BeanPostProcessor接口,将会调用postProcessBeforeInitialization(Object obj, String s)方法,BeanPostProce
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值