1 排序算法,速度最快,时间复杂度
https://blog.csdn.net/qq_37433657/article/details/83715648
快速排序:
https://blog.csdn.net/shujuelin/article/details/82423852
插入排序:
https://blog.csdn.net/qq_42857603/article/details/81605124
2 动态代理(个人还有不理解的)
https://blog.csdn.net/qq_32532321/article/details/81874990
1.基于JDK的动态代理
2.基于CGILB的动态代理
在业务中使用动态代理,一般是为了给需要实现的方法添加预处理或者添加后续操作,但是不干预实现类的正常业务,把一些基本业务和主要的业务逻辑分离。我们一般所熟知的Spring的AOP原理就是基于动态代理实现的。
3 两个数据库表如何关联
内连接与外连接的区别:
内连接:自然连接,只有两个表相匹配的行才能在结果集中出现。返回的结果集选取了两个表中所有相匹配的数据,舍弃不匹配的数据。
外连接:连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行,还包含左连接,右连接和全连接。
左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。
右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。
全外连接:左外连接 union 右外连接。
补充:union进行表求并集后去掉重复的元素,
Union all 只是将两个集合求并集就返回(可以有重复)
4 包装类
https://zhuanlan.zhihu.com/p/65538963
1编码过程中只接收对象的情况,比如List中只能存入对象,不能存入基本数据类型;比如一个方法的参数是Object时,不能传入基本数据类型,但可以传入对应的包装类; 比如泛型等等。
2基本数据类型没有toString()方法等
基本数据类型和包装类的区别
1定义不同。包装类属于对象,基本数据类型不是
2声明和使用方式不同。包装类使用new初始化,有些集合类的定义不能使用基本数据类型,例如 ArrayList<Integer>
3初始值不同。包装类默认值为null,基本数据类型则不同的类型不一样
4存储方式和位置不同,从而性能不同。基本数据类型存储在栈(stack)中,包装类则分成引用和实例,引用在栈(stack)中,具体实例在堆(heap)中。可以通过程序来验证速度的不同。
基本数据类型与包装类的对应关系
byte → Byte
short → Short
int → Integer
long → Long
float → Float
double → Double
char → Character
boolean→ Boolean
5 equals和==
1)==是运算符号,equals是方法
2)
==
作用于基本数据类型
作用于对象
判断值的大小
比较的是两个对象的地址值
equals
不可用于基本数据类型
若无重写,则与==相同
若有重写,比较字符串内容是否相同
6 spring boot框架
它不是spring解决方案的一个替代品,而是spring的一个封装。所以,你以前可以用spring做的事情,现在用spring boot都可以做。现在流行微服务与分布式系统,springboot就是一个非常好的微服务开发框架,你可以使用它快速的搭建起一个系统。
特点:
1:创立独立的Spring应用程序
2:嵌入的Tomcat,无需部署war文件
3:简化Maven配置
4:自动配置Spring
5:提供生产就绪功能,如指标,健康检查和外部配置
6:绝对没有代码生成和对XML没有配置要求
7 ArrayList和LinkedList的区别、优缺点以及应用场景
https://blog.csdn.net/TTTZZZTTTZZZ/article/details/84916281
ArrayList和LinkedList的大致区别如下:
ArrayList是实现了基于动态数组的数据结构,LinkedList是基于链表结构。
对于随机访问的get和set方法,ArrayList要优于LinkedList,因为LinkedList要移动指针。
对于新增和删除操作add和remove,LinkedList比较占优势,因为ArrayList要移动数据。
8 StringBuffer与StringBuilder的区别
https://blog.csdn.net/longfulong/article/details/78700239
1、StringBuffer 与 StringBuilder 中的方法和功能完全是等价的,
2、只是StringBuffer 中的方法大都采用了 synchronized 关键字进行修饰,因此是线程安全的,而 StringBuilder 没有这个修饰,可以被认为是线程不安全的。
3、在单线程程序下,StringBuilder效率更快,因为它不需要加锁,不具备多线程安全而StringBuffer则每次都需要判断锁,效率相对更低
9 基本数据类型
byte, short, char, int, long, float, double, Boolean 他们的比较都是使用==,比较他们的值
10 二叉树(前中后序排序)
11 栈和循环链表的关系
12.1 知识迁移 用两个栈模拟队列的操作
栈A与栈B模拟队列Q,A为插入栈,B为弹出栈
若B不为空,直接弹出B的数据若B为空,则依次弹出栈A的数据,放入栈B中,在弹出栈B 的数据12.2 知识迁移 用两个队列实现栈
假设使用队列Q1,Q2模拟栈S,Q1为入队列,Q2出队列
思路:Q1压栈,入队列,出队列需考虑两种情况
若队列Q1中只有一个元素,则让Q1中元素出队列并输出若队列Q1中不止一个元素,则队列Q1中所有元素出队列,入队列Q2,最后一个元素不入队列 B,输出该元素,然后将队列Q2,所有元素入队列Q1思路:先将数据存到第一个队列里面,然后数据出队一直出队到地二个队列里面,直到第一个队列里面剩余一个数据,这个时候出队 即可达到先进后出的特性