继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

百万架构师第二十二课:源码分析:Spring 源码分析:Spring经典面试答疑|JavaGuide

不止极客
关注TA
已关注
手记 41
粉丝 0
获赞 0

Spring面试解答

上半节:面试中需要注意的细节

  1. 动脑子,面试是一种交流
  2. 面试的时候,要用心去感受当时面试场景
  3. 了解自己,自己的长处、自己的短处 (巧妙地扬长避短)

了解

1. 公司的业务场景

2. 你是去面试什么岗位的?

Java高级工程师 实际工作经验是1年(如实填写)

1、请描述Spring IOC的工作原理

答:定位 加载 注册 BeanFactory BeanDefintion

1-3年 1+

ApplicationContext 主容器,存储了所有 beans 中的 <bean> 对应的对象<bean id="" class=""> 不能重复

3-5年 3+

ApplicationContext Aware 接口 IOCDI 对应关系

IOC 配置 构造器、依赖注入去赋值、 使用了工厂模式

构造方法注入、getter setter Map List Array Properties

认知面会更加广泛

Spring IOC 设计,给万能胶创造了可能

5年以上 5+ 架构师/高级工程师

ApplicationContext BeanFactory

注解XML 的区别

底层的原理 ( 面试时向面试官征求意见,也是对面试官的一种尊重 )

简历描述要符合自身的气质

  1. 简历用词要精准
  2. 应用场景

扬长避短(少小离家老大回,乡音未改鬓毛衰)

如果面试官问到一个自己不懂的问题的时候

这个技术目前没有深入地研究过,但是,我拥有比较强的 自学能力。懂不懂,其实只是时间问题。

下半节:面试题

1、作用域的问题

  • singleton
  • prototype 每次取的对象,注入一个时间戳
  • request
  • session

2、以您的经验来看,为什么要选择Spring框架,而不选择其他框架呢?

1、Spring 易于扩展

2、基于 Bean 来实现的(Object),也是基于 Bean 来扩展的

3、Java业界万能胶(松耦合(开发时),高聚合(运行时))

// IOC / DI / AOP

3、Spring框架的哪些地方是你不喜欢的?

之前的 Spring 实际上是不支持分布式的

我很不喜欢它的 XML 的配置,后来才有了 @Annotaion

Tom 老师是 Spring 忠粉,想我所想

“利用 Spring 编码,零配置”:会导致后面学习的人,对底层的原理不了解,给深入学习带来一些困难

Spring CloudSpring Boot

4、动态代理(CGLib 与 JDK)、优缺点、性能对比、如何选择

  • CGLib asm (自动生成一个类,去继承原来类) 更优的字节码重组方案
  • JDK 内置(必须要实现接口,因为生成代理对象之后要强制转型)

5、Spring中循环注入是什么意思,可不可以解决,如何解决;

  • 利用递归 + 缓存

6、spring 容器在启动和启动完成的时候 是否可以通过注册监听器监听到这个时刻。

  • 可不可以通过监听器注册到 listen 中,然后在启动和容器启动完成的时候做一个服务性的操作
    可以的
public class SystemLoaderListener extends ContextLoaderListener{
	private Logger log = Logger.getLogger(SystemLoaderListener.class);

    @Override
    public void contextInitialized(ServletContextEvent e) {
        super.contextInitialized(e);
    }

7、spring怎么保证 bean 不被回收?

  • IOC 容器的 Map 中,会一直持有对象的引用
  • Map 又是单例的, Map 本身不会被回收

8、不同数据源的事务如何处理

原理:在 Spring 中,事务是不支持跨数据源的。换句话说,一个事务不能同时操作两个数据库。

用大腿想一下: DataSouceConnection ,当创建语句集的时候开启事务

解决:使用中间件,做一些消息同步,利用分布式锁去实现分布式事务

9、Spring 如何保证 Controller 并发的安全?

Spring5 的新特性就开始考虑这个问题了,如果对并发有要求,推荐用 Spring Boot

10、系统架构师和高级工程师的区别?

系统架构师:
  • 具有全局的观念
  • 绝大多数时间不是在帮自己解决问题,而是帮别人解决问题
  • 必须具备预见能力
  • 架构的技术能力、视野范围、解决问题的能力过硬
高级工程师(高工):
  • 技高一筹(常用技术运用非常熟练)
  • 基本的代码封装、提炼
  • API文档的阅读能力
  • 自学能力


关于正则的问题

老师为什么要把 * 替换成 .*

. 代表的是任意字符

* 重复任意次数

.* 任意字符重复任意次数

微信公众号:不止极客

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP