![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试
weixin_43849539
这个作者很懒,什么都没留下…
展开
-
面试题整理(9)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. Spring框架用到的设计模式 1、工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例。 2、单例模式:Bean默认为单例模式。 3、代理模式:Spring AOP功能用到了JDK动态代理和CGLIB字节码生成技术。 4、模板方法:用来解决代码重复问题。比如:RestTemplate、JmsTemplate、JpaTemplate。 5、观察者模式:定义了对象键一种一对多的依赖关系原创 2020-08-06 23:37:09 · 139 阅读 · 0 评论 -
面试题整理(8)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. 什么是Spring Spring是一个轻量级的IOC和AOP容器框架,是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发。主要由以下七个模块组成: 1、Spring Core:核心类库,提供IOC服务。 2、Spring Context:提供框架式的Bean访问方式,以及企业级功能(JNDI、定时任务等)。 3、Spring AOP:AOP服务。 4、Spring DAO:对原创 2020-08-05 22:57:18 · 104 阅读 · 0 评论 -
面试题整理(7)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. notify()和notifyAll()的区别 notify()可能会造成死锁,而notifyAll()不会。 任何时候只有一个线程可以获取锁,也就是说只有一个线程可以运行synchronized中的代码,使用notityAll()可以唤醒所有处于wait状态的线程,使其重新进入锁的争夺队列中,而notify()只能唤醒一个。 wait()应配合while循环使用,不应使用if,务必在wait()调用前后都检查条原创 2020-08-04 22:37:00 · 87 阅读 · 0 评论 -
面试题整理(6)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. 并行与并发的区别 1、并行指多个事件在同一个时刻发生;并发指的是在某时刻只有一个事件发生,某个时间段内由于CPU交替执行,可以发生多个事件。 2、并行没有对CPU资源的抢占;并发执行的线程需要对CPU资源进行抢占。 3、并行执行的线程之间不存在切换;并发操作系统会根据任务调度系统给线程分配线程CPU执行时间,线程的执行会进行切换。 并行和并发是取决于操作系统对线程的调度和计算机硬件资源(CPU个数和核数)的,原创 2020-07-29 23:06:59 · 154 阅读 · 0 评论 -
面试题整理(5)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. 单例模式的双重检查锁为什么要加volatile? 因为对象创建的过程不是一个原子性操作。 对象创建过程分为三个步骤:1、申请内存。2、执行构造方法,给成员变量赋值。3、将创建的对象地址给引用变量。 其中步骤2,3是可能发生指令重排序的,如果发生3在2之前,就会出现检查发现引用变量不为null,之后直接返回实例的情况,这种情况下的实例中的成员变量只进行了初始化,还没有执行构造方法赋值,可能出现空指针异常。 加上原创 2020-07-28 17:17:52 · 105 阅读 · 0 评论 -
面试题整理(4)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. 什么是B+树? B+树是一种树的数据结构(可以类比平衡二叉树),特点是能保持数据稳定有序,其插入与修改拥有较稳定的对数时间复杂度。B+树元素自底向上插入,与二叉树相反。 1、非叶子节点不存data,只存key,可增大度。 2、数据只存在叶子节点。对于MyISAM,叶子节点存指针;对于InnoDB,普通索引叶子节点存主键,主键索引叶子节点存一行数据。 3、叶子节点本身依关键码的大小自小而大的顺序连接,区间访问原创 2020-07-27 15:56:47 · 189 阅读 · 0 评论 -
面试题整理(3)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. Spring MVC执行流程 1、用户发送请求到前端控制器DispatherServlet。 2、DispatherServlet收到请求后,调用HandlerMaping处理器映射器。 3、处理器映射器找到具体的处理器(可以通过xml配置、注解进行查找),生成处理器对象及处理拦截器(如果有则生成)一并返回给DispatherServlet。 4、DispatherServlet调用HandlerAdapt原创 2020-07-26 20:09:37 · 117 阅读 · 0 评论 -
面试题整理(2)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. Mybatis的缓存机制 首先是缓存的作用:如果缓存中有数据就不用从数据库中获取,减少了和数据之间的交互次数,大大提高系统的性能。 Mybatis的缓存分为一级缓存和二级缓存,一级缓存对应sqlSession,默认开启,二级缓存对应mapper的命名空间(namespace),默认不打开,使用二级缓存属性类必须要实现Serializable序列化接口(用来保存对象的状态)。 ps:看到过一个面试题就问Serial原创 2020-07-25 22:19:16 · 59 阅读 · 0 评论 -
面试题整理(1)
每天五道面试题!只记录答案,不标出源码,有什么不对的地方欢迎评论,共同进步。1. CopyOnWriteArrayList原理 原理:不同的线程访问同一资源时,只有在写操作时才会复制一份新的数据,否则都是访问同一数据,具体流程为先拷贝存储的数组,然后添加元素到拷贝好的数组中,然后用现在的数组去替换成员变量的数组。底层源码是add操作时通过synchronized加锁,保证只有一个线程进行变更,会将数组复制一份,操作副本,操作完成后替换数组。 优势:对于读多写少的数据使用这个很好,例如配置、黑名单、原创 2020-07-24 21:49:29 · 114 阅读 · 1 评论