9月16号面试总结(nantian)

1.spring的理解
Spring是一个一站式、轻量级的javaee框架。一站式指的是Spring支持在持久层、业务层、表现层的javaEE开发,轻量级指的是除4个核心包外,其他功能按需引入。Spring的核心是ioc,控制反转,代码控制权由调用方变为服务方,实现解耦的功能。调用方从Spring容器中获取对象,通过di进行依赖注入
spring IOC有哪几种实现形式:
实例化Bean的4中方式:
1.无参构造器
2.静态方法工厂
3.实体工厂
4.实现FactoryBean接口
Spring依赖注入:
1.setter注入
2.构造器注入
3.p命名空间注入
4.集合类型值注入

2.spring aop的理解
service层在实际开发中要处理事务,日志等操作,这些操作和业务代码无关,且大量重复,需将这些代码抽取出来。
使用java的动态代理技术解决,为service层的类创建代理对象,代理对象调用真实对象的方法时,在方法执行之前,之后,异常,最终都进行相应增强。
jdk动态代理:被代理对象必须实现接口
CGlib动态代理:要求类不能是final修饰,代理的方法必须是非final,非static,非private

3.hibernate与mybatis的区别
hibernate:完全基于ORM对象关系映射,在操作数据库前,将实体类与数据库表的关系建立,通过操作实体类对象来操作数据库,实现不用写sql语句,
hibernate一套代码兼容多种数据库
mybatis:持久层框架,持久层的零实现,不需要写实现类代码,直接通过接口操作数据库,自动将数据封装到对象,开发者自定义sql语句
但结果集字段名与属性自动名不一致时,使用resultmapping进行手动映射

4.collection结合有哪些
List Set Queue
List: : ArrayList LinedList list 有序不唯一 set无序唯一
Set:: HashSet LinkedHashSet TreeSet
map:HashMap LinkedHashMap TreeMap

5.多线程的理解
实现多线程的2种方式:继承Thread ,实现Runnable接口
生命周期:新生、就绪、运行、阻塞、死亡

6.如何实现线程安全
线程安全问题:线程同步,让操作保持原子性
同步代码块:把所有的同步操作放到同步代码块中 sychronized
同步方法:把普通方法用 synchronized 修饰,同步方法的同步监视器是this进行方法调用
线程间的通讯:thread.wait(),thread().notify

7.常用的设计模式
简单工厂模式、单例模式、代理模式、责任链设计模式

8.单例模式的简单实现
1.私有的无参构造器,避免外部创造实例
2.私有的静态变量;为什么要静态,因为静态方法必须调用静态变量;
3.公有的静态方法; 为什么要静态,类可以直接使用该方法

9.springcloud在项目中的使用
1.使用注册中心eureka 对注册服务eurekaClient和发现服务 discoveryClient 进行管理
2.使用openfeign实现系统间的通信,远程调用
3.实现eureka的高可用(配置集群)

10.activemq的实现原理
消息队列服务器,使用场景:
1.多模块解耦:高内聚,低耦合,使用solr进行索引库的实时更新
2.流量削峰(解决并发请求):将前端数据放到消息队列,后端依次从队列中获取消息处理
3.同步业务异步处理:用户测试业务,保存用户数据到数据库中,只需将用户邮箱放到队列,认证程序通过监听器,从队列中获取邮箱,发送认证。

posted @ 2019-09-16 20:51  WhisperHong  阅读(121)  评论(0编辑  收藏  举报