1.arrayList 和 LinkList有什么区别?
arrayList底层是基于数组结构的,因为数组有下标,所以查询块,但是数组涉及到扩容以及缩容所以增删比较慢。
LinkList底层是基于链表的,增删数据只需要断两个数据之间的节点就可以了所以增删比较快
2.hashSet可以重复吗?为什么?hashMap可以重复吗?
hashset不可以重复 因为底层数据结构是哈希表 是无序并且是唯一的(由链表保证元素有序,由哈希表保证数据唯一)
hashMap中的key 不可以重复,但是value可以重复
3.jdk1.8有什么特性?
3.1 Lambda表达式
3.2 函数式接口
3.3 default关键字
3.4 方法与构造函数引用
3.5 map实现 加入红黑树
4.springboot 和spring区别
首先spring 是一个一IOC 和 AOP 为核心的第三方开源框架 所有的配置都需要自己手动配置到XML文件中。开发过程相对繁琐、而springboot 基于spring 框架 ,以快速开发为理念开发的一种脚手架,spring boot 简化了spring 的配置,无序手动配置。
5.什么是Spring框架?
spring是一款轻量级开源框架,以 IoC(Inverse Of Control:反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核。还能整合开源世界众多著名的第三方框架和类库。
6.spring 的bean 是单例还是多例?
单例的 ,多例存在线程安全问题
7.spring 的两大核心是什么?
IOC (控制反转) 和 AOP (面向切面编程)
8.项目中什么场景下使用AOP?
需要增加额外功能时使用AOP 。或者日志记录,性能统计,安全控制,事务处理,异常处理
9.springboot常用注解
@Controller @Component @RequestBody @Pathvariable
@RequestMapping @RequestController @configuration @Controlleradvice
@exceptionHandler
10.简单介绍一下springboot
Spring boot是一个脚手架(而非框架),构建于Spring框架(Framework)基础之上,基于快速构建理念,提供了自动配置功能,可实现其开箱即用特性
11.springboot项目启动原理
SpringBoot 项目在启动时,首先基于启动入口类上的注解描述,进行自动配置并扫描启动类所在包以及子包中的类进行加载,然后检测类上是否有Spring框架中指定的注解描述(例如@Component,@Controller,@Service等)。假如有,则将类交给Spring框架中的BeanFactory工厂接口的实现类对象,此工厂对象会基于反射创建Bean的实例。
12.springboot核心配置文件有哪些,以及编码格式?
properties 文件 -ISO8859-1 , yml 文件 -UTF-8, xml 文件
13.springbootApplication注解的作用
@SpringBootApplication来标注这是一个springboot的应用,被标注的类是一个主程序, SpringApplication.run(App.class, args);传入的类App.class必须是被@SpringBootApplication标注的类。
14.简述springMVC框架
Spring Web MVC 是一种基于 Java 的实现了 Web MVC 设计模式的请求驱动类型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC 也是要简化我们日常 Web 开发的。
15.简述SpringIoc
SpringIoc容器是Spring框架的一大核心,容器将创建对象,把他们链接到一起,配置,并一起管理他们的整个生命周期(从创建到销毁)。
Spring提供了两种不同类型的容器
1.SpringBeanFactory容器,这是为Di提供基本支持的最简单的容器(懒汉式)
2.SpringApplicationContext 容器,这个容器包含李BeanFactoryContontainer的所有功能,因此推荐使用BeanFactoryFactory(饿汉式)
16.简述Spring Bean的生命周期
创建前准备->创建实例化->依赖注入->容器缓存->销毁实例
17.AutoWired注解的作用
Autowired可以更加准确的空手指应该在何处以及如何进行自动装配,以及进行实例化创建
18.Spring的事务
首先Spring本身是没有事务的,但是数据库支持事务,所以Spring框架使用的数据库的事务,因此Spring事务的特性以及隔离级别和数据库一致.
特性:
原子性,持久性,隔离性,一致性
隔离级别:
读已提交,读未提交,可重复读,串行化
19.AOP有哪几种实现方式
1.代理模式静态的实现AOP
2.aspectj静态代理实现AOP
3、jdk动态代理实现AOP
4、cglib动态代理实现AOP
常用的就是后两种方式实现AOP
20.依赖注入有哪几种方式
1.构造方法注入
2.接口注入
3.Setter方法注入
21.Spring Bean的几种作用域
singleton,pritotype,request,session,application
22.读取XML文件的几种方式
DOM,DOM4J,JDOM,SAX
23.Mybatis和MybatisPlus的区别
MybatisPlus是Mybatis的升级版,两者一起使用并不会相互影响.
Mybatis遇到一些复杂的Sql需要自己手动在XML文件中写Sql语句
MybatisPlus 只能进行单表查询,不需要写Sql语句,只需要在Mapper层继承BaseMapper<?>就可以实现。但是MybatisPlus不能控制Sql语句的优化。
24.Redis常用的数据类型
String
List集合
Set集合
Hash散列表
sort Set集合
25.常用的IO类
字符流有两个基类: Reader 和 Writer
字节流有两个基类: InputStream 和 OutputStream
26.Mysql优化
看帖子<关于Sql优化>
27.怎么创建索引
直接创建索引
CREATE INDEX index_name ON table(column(length))
修改表结构时添加索引
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
创建表时添加索引
CREATE TABLE `table` ( `id` int(11) NOT NULL AUTO_INCREMENT , `title` char(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `content` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL , `time` int(10) NULL DEFAULT NULL , PRIMARY KEY (`id`), INDEX index_name (title(length)) )
28.重写和重载的区别
重写:
重写发生在父子类的继承基础上,子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
重载:
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
29.http协议的请求方式
序号 | 方法 | 描述 |
1. | GET | 发送请求来获得服务器上的资源,请求体中不会包含请求数据,请求数据放在协议头中。另外get支持快取、缓存 、可保留书签等。幂等 |
2. | POST | 和get一样很常见,向服务器提交资源让服务器处理,比如提交表单、上传文件等,可能导致建立新的资源或者对 原有资源的修改。提交的资源放在请求体中。不支持快取。非幂等 |
3. | HEAD | 本质和get一样,但是响应中没有呈现数据,而是http的头信息,主要用来检查资源或超链接的有效性或是否可以可达、检 查网页是否被串改或更新,获取头信息等,特别适用在有限的速度和带宽下。 |
4. | PUT | 和post类似,html表单不支持,发送资源与服务器,并存储在服务器指定位置,要求客户端事先知 道该位置;比如post是在一个集合上(/province),而put是具体某一个资源上(/province/123)。所以put是安全的, 无论请求多少次,都是在123上更改,而post可能请求几次创建了几次资源。幂等 |
5. | DELETE | 请求服务器删除某资源。和put都具有破坏性,可能被防火墙拦截。如果是https协议,则无需担心。幂等 |
6. | CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。就是把服务器作为跳板,去访问其他网页 然后把数据返回回来,连接成功后,就可以正常的get、post了。 |
7. | OPTIONS | 获取http服务器支持的http请求方法,允许客户端查看服务器的性能,比如ajax跨域时的预检等。 |
8. | TRACE | 回显服务器收到的请求,主要用于测试或诊断。一般禁用,防止被恶意攻击或盗取信息。 |