• 2018-02-24电话面试总结


    记一次电话面试。

    先抛出题目:

    1. 应用怎么知道spring已经加载好了
    2. beanfactory  factorybean区别
    3. mybatis 防止sql注入
    4. redis在项目中是做什么的,有哪几种基本的对象类型,缓存如何保持数据一致性
    5. 多线程交换两个线程的数据方式
    6. 你最深入学习的项目

    下面是具体回顾细节:

    • 应用怎么知道spring已经加载好了
            spring上下文初始化完后会触发事件,发出通知;使用自定义的类继承实现ApplicationListener.onApplicationEvent()即可。
    • beanfactory  factorybean区别
            BeanFactory是个 Factory ,也就是 IOC 容器或对象工厂, FactoryBean 是个 Bean 。在 Spring 中,所有的 Bean 都是由                            BeanFactory( 也就是 IOC 容器 ) 来进行管理的。但对 FactoryBean 而言,这个 Bean 不是简单的 Bean ,
              而是一个能生产或者修饰对象生成的工厂 Bean, 它的实现与设计模式中的工厂模式和修饰器模式类似。
    • mybatis 防止sql注入
           通过转义符号#会对传入的数据进行PreparedStatement预编译。
            通过$则不进行转义
    • redis在项目中是做什么的
            作为内存缓存
    • 有哪几种基本的对象类型
            对象类型有
            String,
            Hash,
            List,
            Set,
            Sorted set,
            pub/sub,
            Transactions
    • 缓存如何保持数据一致性
            缓存内容与数据库的一致性,这里一般有两种做法:
    只在数据库查询后将对象放入缓存,如果对象发生了修改或删除操作,直接清除对应缓存(或设为过期)。
    在数据库新增和查询后将对象放入缓存,修改后更新缓存,删除后清除对应缓存(或设为过期)。
    • 多线程交换两个线程的数据方式
                静态数据变量可以交换数据
                通过Exchanger也可以进行交换。
    • 你最深入学习的项目
                讲了下CAS的项目的设计。
     
    总结:
    从面试官问的问题可以联想出来的问题:
    • ApplicationListener.onApplicationEvent()什么时候被调用,被谁调用。
    • spring 的启动的时候的调用链是怎么样的
    • factorybean应用场景
    • beanfactory初始化流程
    • redis的每个数据类型的作用及其应用场景
    • Exchanger项目的应用场景
     
    • spring 的启动的时候的调用链是怎么样的ApplicationListener.onApplicationEvent()什么时候被调用,被谁调用。 
      答:入口启动代码如下
    ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:application-context.xml");

    容器启动 时序图 

    参见链接:http://blog.csdn.net/yamorn/article/details/44078377 
    org.springframework.context.support.AbstractApplicationContext.finishRefresh()中发出了事件通知

    • factorybean应用场景
      •  org.springframework.beans.factory.FactoryBean<T>是一种特殊的Bean,跟普通Bean不同,其返回的对象不是指定类的一个实例,而是该FactoryBean的getObject方法所返回的对象。
      • FactoryBean 通常是用来创建比较复杂的bean,一般的bean 直接用xml配置即可,但如果一个bean的创建过程中涉及到很多其他的bean 和复杂的逻辑,用xml配置比较困难,这时可以考虑用FactoryBean。
      • FactoryBean有三个实现方法:
        • Object getObject():返回本工厂创建的对象实例。此实例也许是共享的,依赖于该工厂返回的是单例或者是原型。
        • boolean isSingleton():如果FactoryBean返回的是单例,该方法返回值为true,否则为false
        • Class getObjectType():返回对象类型。对象类型是getObject()方法返回的对象的类型,如果不知道的类型则返回null。
      • 当使用ApplicationContext的getBean()方法获取FactoryBean实例本身而不是它所产生的bean,则要使用&符号+id。比如,现有FactoryBean,它有id,在容器上调用getBean("myBean")将返回FactoryBean所产生的bean,调用getBean("&myBean")将返回FactoryBean它本身的实例。
      •  经典的factorybean应用场景:搭配InitializingBean的afterPropertiesSet使用,在初始化bean的时候执行。
      • 具体的例子见:https://www.jianshu.com/p/b9439edb8408
    • beanfactory是什麽。
      • BeanFactory接口定义了ioc容器的最基本的形式,并且提供了ioc容器所应该遵守的基本的服务契约,同时,这也是我们使用ioc容器所应该遵守的最顶层和最基本的编程规范,这些接口定义勾画了ioc的基本轮廓,很显然,在Spring的代码实现中,BeanFactory只是一个接口类,并没有
      • ApplicationContext是 spring 中较高级的容器。它扩展了BeanFactory接口,它可以加载配置文件中定义的 bean,将所有的 bean 集中在一起,当有请求的时候分配 bean。 另外,它增加了企业所需要的功能,比如,从属性文件从解析文本信息和将事件传递给所指定的监听器。这个容器在 org.springframework.context.ApplicationContext interface 接口中定义。

    面试总结:

    面试开始的时候找了一会儿建立,很致命,在约好时间前要找到自己的简历。
    面试的时候的介绍要自己准备准备,面试官会按照这个来准备问题来问。

     
  • 相关阅读:
    javascript数组
    Javascript prototype理解
    Javascript中的类的创建
    Div拖动效果
    javascript, position
    getSelection();
    网页的宽和高
    javascript apply & call
    Hibernate数据丢失更新问题及解决 凡人
    招聘软件/网页UI设计师
  • 原文地址:https://www.cnblogs.com/alcc/p/8467691.html
Copyright © 2020-2023  润新知