1、ArrayList 和 LinkedList 区别?
ArrayList是基于数组结构的,可以自动扩容,当达到数据的百分之80就会扩容,还有由于基于数组,对于查询数据与删除数据都是比较快的,添加比较慢。底层实现了序列化接口,
LinkedList基于链表,增加比较快,查询删除比较慢,要一步一步的遍历。
2、HashMap原理 ?
HashMap底层是基于数组与链表,是特殊的key,value结构,在使用put方法时,是将添加的key通过hash算法将hashcode进行添加到数组中,在调用get方法是,通过的是其中的equles方法进行比较,从数组中进行获得value值,hashMap是线程不安全的,其次就是在使用HashMap进行操作是将相同的key添加到进去,是符合null值的,且是唯一的null,不能多存,基于链表也是为了解决hash碰撞原理,如果在负载因子与扩容中是会自动扩容的。
3、SpringAOP和动态代理
SpringAOP是一种面向切面编程,通过对不同方法,进行添加与业务无关的代码,但是有时不得不存在的代码,就可以使用到动态代理解决,进行对方法的增强,从而形成一个切面,达到通用。
SpringAOP就是底层实现就是基于动态代理,
4、springBoot和原来的Spring有哪些区别?提供了那些方便
使用了SpringBoot相比较于Spring大大简化了配置操作,使用springBoot开发不在需要在添加大量的备注文件,SpringBoot内部会自动的加载需要的启动类Spring Boot可以建立独立的Spring应用程序;
内嵌了如Tomcat,Jetty和Undertow这样的容器,也就是说可以直接跑起来,用不着再做部署工作了;
无需再像Spring那样搞一堆繁琐的xml文件的配置;
可以自动配置Spring。SpringBoot将原有的XML配置改为Java配置,将bean注入改为使用注解注入的方式(@Autowire),并将多个xml、properties配置浓缩在一个appliaction.yml配置文件中。
提供了一些现有的功能,如量度工具,表单数据验证以及一些外部配置这样的一些第三方功能;
整合常用依赖(开发库,例如spring-webmvc、jackson-json、validation-api和tomcat等),提供的POM可以简化Maven的配置。当我们引入核心依赖时,SpringBoot会自引入其他依赖。
5、dubbo是做什么用的?原理是什么?
Dubbo是基于RPC协议分布式远程调用服务的框架,主要的工作就是在于对于分布式之间服务之间的通讯作用,原理是通过动态代理与scoke通信实现。
6、平时会写SQL的查询和优化吗?
SQL优化问题,
推荐使用Select(0) 代替select(*)
查询后返回到结果集只有一条数据时,推荐使用limit 1
添加索引
使用not null
使用小表join大表
7、你理解的链表是什么样的模型?优缺点是什么?
链表在于内存空间内,是空间上。顺序比链式节约空间。是因为链式结构每一个节点都有一个指针存储域;
基于链表,查询慢,但是在对于数据的添加删除操作过程中快
8、SpringMVC工作流程?
url访问,到达前端控制器,分发到处理映射器,找到对应的Controller,在返回到前端控制器,在通过前端控制器分发到处理适配器,调用controller后handle,返回给处理适配器一个逻辑地址,在将这个modeAndView返回给前端控制器,在通过视图解析器,将逻辑视图进行解析操作用过view进行视图的渲染操作。
9、Spring的AOP这一块有了解吗?有用到切面吗?
就是为了更清晰的逻辑,可以让你的业务逻辑去关注自己本身的业务,而不去想一些其他的事情,这些其他的事情包括:安全,事物,日志等。
事物。
10、代理的好处是什么?
就是你想要的功能,也就是上面说的 安全,事物,日志等。你给先定义好吧,然后在想用的地方用一下。
11、IOC容器概念是什么?好处是什么?
IOC控制反转,是将原本创建对象的工作交给Spring容器进行处理操作,
好处在于Spring帮我们进行对象的管理操作,保证了对象的唯一。
12、spring生命周期有了解吗?默认的是哪一个?
默认是单例模式
有单例,多例,request,session ,global session
生命周期包括创建到,初始化befor 到销毁等。
13、单例和多例的优缺点是什么?
列模式,在多线程情况下,线程不安全,单例主要要考录到全局化的参数多例。
14、Mybatis#和{}
占位符与原样输出。
15、Mysql索引失效情况
使用不等于like通配符,还有就是使用了函数运行,都是会导致索引失效。