一.Spring的优点:
1.低嵌入式设计,代码污染低。
2.Spring中的DI机制将对象之间的依赖关系交给对象处理,减少了组件的耦合性。
3.spring中的AOP功能可以将遍布于应用各处的代码进行统一管理,在不改变源代码的基础上进行增强处理。
二.Spring对AOP的理解:
1.AOP一般称为面向切面,可以将遍布于应用各处的代码进行统一管理,在不改变源代码的基础上进行增强处理。
2.AOP的实现关键在于代理模式,分为静态代理(拦截器)和动态代理(JDK动态代理和CGLIB动态代理)
- Spring是什么:
Spring是一个轻量级的IOC和AOP容器框架。
常见的配置方式有三种:基于XML配置,基于注解配置,基于java。
- Spring对IOC的理解:
IOC就是控制反转,是指创建对象控制权的转移,即应用程序在运行时依赖IOC容器来动态注入对象所需要的外部资源。
- Spring IOC的几种注入方式:
- setter注入
- 构造器注入
- 注解注入
- Spring如何处理线程并发问题:
用Threadlocal进行处理,Threadlocal会为每一个线程提供一个独立的线程副本,从而隔离了多个线程访问数据时的冲突。
- 什么是spring的自动装配
spring启动IOC时,扫描注解,就会自动查找对应的bean。
- 基于注解方式注入有哪几种,区别是什么
- @Autowired 按照类型注入,如果查询条件不止一个就会按照名称查找。
- @Resource 按照名称注入,当匹配不到与名称对应的bean,就用Autowired。
- Spring框架用到了哪些设计模式(了解三种就可以):
- 工厂模式 BeanFactory 用来创建对象的实例。
- 单例模式 Bean默认为单例模式。
- 代理模式 springAop功能自带拦截器。
- Springboot的核心配置文件?区别是什么?
- Application 用于Springboot项目的自动化配置。
- Bootstrap 一些加密解密的场景
使用SpringCloud Config时,需要在bootstrap中添加配置
息。
- Springboot的核心注解是什么?由哪几个注解组成?
@SpringbootApplication是核心注解包含以下三个注解:
- springbootConfiguration 实现配置文件的功能
- EnableAutoConfiguration 打开/关闭自动化配置的功能
- ComponentScan spring组件扫描
- 什么是mybatis框架:
Mybatis是一个半ORM框架,内部封装了JDBC,开发时只需注意sql语句即可。
- Session和cookie的区别:
Session是储存在服务端的。
Cookie是储存在客户端的。
- 项目开发流程:
需求调研
设计阶段
代码实现
测试阶段
运行阶段
维护阶段
- 线程的状态:
新建
就绪
运行
阻塞
死亡
- Spring事务:
编程式事务:灵活,但是不好维护,用得少。
声明式事务:耦合度低,侵入性低,推荐使用。
十七:spring中的隔离级别:
默认 读未提交 读已提交 可重复读 串行化
十八:springCloud的核心组件:
- 服务注册:只有一个服务注册到服务中心,才能被其他服务发现调用。
Eureka Nacos
2.负载均衡:将网络流量平均分发到多个服务器上,以提高系统整体的响应速度和可用性。
Ribbon Feign
区别在于:
(1)注解不同。
(2)Ribbon需要自己构建请求,发送请求,比较繁琐。
Feign则是采用接口的方式,将其他服务的方法定义成抽象方法。
3熔断器:通过Hystrix线程池去访问服务,不同的服务有不同的线程池,实现了隔离。
- 服务网关:让用户可以通过一个接口访问不同的模块。
Gateway Zuul
区别在于:
(1)Gateway是springcloud的一个子项目。
(2)Zuul是netflix公司的子项目。
(3)Gateway仅适合springcloud。
(4)Zuul可以用非springcloud的服务。
- Mybatis执行流程:
- 加载mybatis.Xml文件。
- 接口从sql中的id去找mappedStatment,传入参数。
- 生成的sql语句交给数据库执行并返回结果。
- 将得到的结果进行转换输出。
二十. java集合类框架的基本接口有哪些:
Connection(list,set)是元素集合,list有序,不包含重复元素,set无序,可以包含重复元素,其中ArrayList和LinkedList实现了list,HashSet实现了Set。
Map(HashMap,HashTable)键值对集合
其中HashTable安全,效率低。HashMap不安全,效率高。
二十一. tcp和udp的区别:
- tcp是面向连接的,udp是无连接的。
- tcp是可靠传输,udp是不可靠传输。
- tcp是面向字节流进行传输,udp是面向报文进行传输的。
二十二. &和&&的区别:
&表示and的意思(两边都转换成二进制在进行运算)。
&&表示两边结果都为真时,结果才为真,只要有一边是false,那么结果就是false。
二十三. 数组和String中有.length这个方法吗?
- 数组中没有.length这个方法,但是有.length属性。
- String有.length这个方法,用来计算字符串的长度。
二十四. MVC的体系结构:
Model:存储数据
View:视图层
Controller:控制层,负责数据的交互
二十五. 页面传参的几种方法:
- 表单 最基本的。
- 带参数的url传参 例:url?参数名=?
- 请求request 通过request中的getAttribute和setAttribute读写
- Session 通过session中的getAttribute和setAttribute读写
- Application 通过Application中的getAttribute和setAttribute读写
二十六. jdk和jre的区别:
Jdk是开发工具 jre是运行环境
二十七. ==和equals的区别:
==比较的是内存地址 equals比较的是值
二十八. final在java中的作用
被final修饰的类不能被继承,不能被重写。
二十九. 列举一下String类中的常用方法:
- charAt 根据索引获取字符。
- Endwith 判断字符串是否已指定内容结尾。
- Indexof 查询内容在字符串中第一次出现的位置。
- Getbytes 将字符串转成byte数组。
三十. 列举files中的常用方法:
- .Exits 是否存在
- .delete 删除
- .remove 移动
- .copy 复制
- .read 读
- .write 写
三十一. List转Array和Array转list?
- list.toArray(new String[list.size])
- ArrayList<String> list=new ArrayList<>(Arrays.aslist())
三十二. 理解springboot过滤器吗?
Springboot过滤器可以拦截所有的web接口,除了白名单的自身的内部接口可以通过以外,其他的均需要进行token验证。
三十三. 文件上传用哪种类型: post
三十四. java创建对象的几种方式?
- new 语句创建。
- 运用反射,调用java.lang.Class
- 调用对象的.Clone方法
其中1和2是调用构造函数,三是在内存上对已有对象进行克隆
三十五. 什么是反射和泛型:
- 反射:把一个类中的各个成分映射成一个java对象。
- 泛型:本质是参数化类型,把操作的数据类型指定成一个参数。
三十六. springboot加载顺序:
- .propertise文件
- Yml文件
- 系统环境变量
- 命令行参数
三十七. ArrayList和Vector的区别:
都实现了list接口,有序的集合,允许重复。
ArrayList 不安全,效率高,按照1.5倍扩容。
Vector 安全,效率低 按照一倍扩容。
三十八. HashMap和HashTable的区别:
HashMap和HashTable底层都实现了map接口。
HashMap允许存放空值,由于线程是不安全的,在只有一个线程访问的情况下,效率要高于HashTable。
HashTable的方法是同步的,线程安全,继承于Dictionary类。
三十九. HashMap和HashSet的底层实现?
HashSet底层通过包装HashMap来实现,HashSet在添加一个值时,其实是把这个值作为HashMap中的key来进行保存。
HahMap的底层通过初始化一个entey数组来实现key,value的保存。
四十. 能否让HasnMap线程同步?
可以,通过 Map Connections.SynchronizedMap(Map m)实现。
四十一. 字节流和字符流有什么区别:
计算机中都是以二进制的形式存在的(字节形式)
输出流(OutputStream Writer)
把对应的中文字节得到对应的字节,将字节写入到输出流,在将字节转为字符进行输出。
输入流(IntputStream Reader)
将字符串转换为字节进行写入。
解释一下什么是序列化?以及Serializable接口的作用?
(1)当我们把一个java对象变成一个字节流进行传输时,被传输的对象必须实现Serializable接口,javac进行特殊编译处理,编译的类才可以被writeObject操作。
这就是序列化。
- Serializable的作用:
Tomcat重启时把session对象序列化到硬盘,这个对象必须实现序列化。
如果该对象通过分布式系统进行网络传输,被传输的对象必须实现序列化。
四十二. java中堆和栈的区别:
栈中用于保存一些局部变量和方法帧,在函数中定义的一些基本类型的变量和对象的引用变量都是在栈中进行分配。
堆用用于保存一些new出来的对象和数组。
四十三. cookie和session的区别?
- cookie可以将用户的信息保存在游览器上。
- Session可以将用户的信息保存在服务器上。
四十四. jsp和servlet的区别?
Jsp侧重视图页面
Servlet主要用于逻辑控制
四十五. JDBC访问数据库的步骤?
- 加载驱动类
- 通过DriverManager对象获连接对象Connection对象
- 获取会话
- 通过会话进行增删改查
- 关闭连接
四十六. 事物的四大特性:
原子性 隔离性 持久性 一致性
四十七. 什么是主键,什么是外键?
主键是为了给该属性附上唯一约束。
外键是为了建立表和表之间的联系。
四十八. Spring支持几种bean的作用域:
- singleton bean在ioc中只有一个实例。
- Property 一个bean可以有多个实例。
- Request 每次http请求都会创建一个bean。
- Session 在一个Http Session中,一个Bean对应一个实例.
- Global-session 在一个全局HttpSession中,一个Bean对应一个实例。
四十九. 排序的方法有哪些:
- 冒泡排序
- 插入排序
- 选择排序
- 快速排序
五十. JSP九大内置对象?
Request 用户端请求
Response 响应请求
Config servlet架构部件
Out 传送回应输出
Page jsp页面
Pagecontext 管理网页属性(上下文)
Exception 错误
Application 正在执行的内容
Session 会话
五十一. 四大作用域:
Session
Application
Request
Pagecontext