版权申明

原创文章:本博所有原创文章,欢迎转载,转载请注明出处,并联系本人取得授权。 版权邮箱地址:banquan@mrdwy.com

SpringIOC启动顺序

  1. 加载并且保存Spring配置文件路径信息然后保存到configLocation中

  2. 刷新Spring上下文环境

  3. 创建并且载入DefaultListableBeanFactory(即BeanFactory)

  4. 根据DefaultListableBeanFactory创建XMLBeanDefinitionReader,用于后面读取xml配置文件信息

  5. 创建BeanDefinitionDelegate代理类,用于解析xml配置信息

  6. 解析xml中配置的等不同的标签信息,以便于可以使用不同的解析器进行解析

  7. 通过XMLBeanDefinitionReader结合location路径信息读取Resources资源信息

  8. 使用BeanDefinitionDelegate代理类解析Bean元素并且依次进行实例化操作,实例化完毕之后将Bean信息注册(put)到BeanDefinitionMap中以便于可以下次继续使用

大表在生产环境不停机数据迁移

1、业务系统实现双写;

2、分批次同步历史数据;

3、同步完成后进行数据比对;

具体的实现没想好,预计另外开一篇文章来写了,暂时这边留个坑

检查java代码单元测试覆盖率

可以使用Sonar,这个我用过居然不记得了😂

Mock框架

这个直接用EasyMock 、Mockito之类就好了,我忘记名字了,没答上来😭

如何创建线程,有哪些方法

这个简单 可以new Thread()、或者实现Runnable接口,然后new 这个实现类,一般推荐用第二种,不知道为啥面试的时候鬼使神差的去谈到了线程池,又忘记线程池是哪个类了,ExecutorService!!! 然后创建线程池简单就直接用Executors,不过这个工具类的几种实现都有各自的局限性,推荐手动创建线程池,例如

public final static ExecutorService POOL = new ScheduledThreadPoolExecutor(INIT_QUEUE_NUM, new BasicThreadFactory.Builder().namingPattern("thead_pool-%d").daemon(true).build());  

反射如何执行方法

method.invoke() 这个记错了,记成excute了🙃

设计理发店排队程序使用设计模式

这个问题没想太清楚,其实功能实现很简单,但是具体用到哪个设计模式一下没反应过来,大概是想要我用组合模式吧,题目大概是说一个理发店有三个理发师,然后最多允许七位顾客来排队,多余的顾客谢绝接待这样子,这边需要使用一个队列作为顾客池,容量设置最大值7,新增顾客超过容量则需要向客户端报错,理发店需要自动工作,分配顾客池的顾客给三个理发师,因此理发师需要有个正忙的状态,分配的工具类会根据各个理发师的状态分配顾客给理发师,具体的设计可能再挖一个坑另开一篇文章写了,这里暂时只记录😀 ps.因为需要手写代码理发店,所以有一些类、方法等命名当然要用到英文,理发店。。英文是barber shop,嗯,我写成了cut hair house😄

Java性能问题诊断工具

嗯,大概有jps、jstack、jmap、jstat、jhat、hprof、jvisualvm等jvm自带工具,另外有第三方工具JMC、JFR 、Tprofiler、Jprofiler、Arthas等

MySQL查询数据库表名查询表字段命令

> use database;
> show tables;
> desc table_name;

一个JavaBean,只提供了get方法,没有提供set方法,如何修改私有属性的值

我觉得这个题目比较偏门,当时没答出来,百度了一番,是可以利用反射来实现修改类属性的访问权限,代码样例

// 创建一个JavaBean类的对象
PrivateField privateField = new PrivateField();  
// 获取对象的Class
Class<?> clazz = privateField.getClass();  
// 获取指定名字的私有域
Field field = clazz.getDeclaredField("username");  
// 设置压制访问类型检查,只有这样,才能获取和设置某个具体类的Field对应的值。
// 参数为 true时 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
// 如果为true是,能够正常运行,如果为false则会抛出异常信息:java.lang.IllegalAccessException
field.setAccessible(true);  
System.out.println(field.get(privateField));  
// 设置私有域的值
field.set(privateField, "123456");  
// 输出被改变的属性值
    System.out.println(field.get(privateField));
}

其它还有很多暂时想不起来了,想起来再更新吧,晚安、好梦。