1.jdk和jre的区别
jdk是开发工具包,jdk包含java源码和编译器javac,
内部包含开发和运行环境
jre是运行工具包,为java提供运行环境,编写需要j
dk,运行只需要个jre就行
2.==和equals的区别
== 作用域基本类型和引用类型是不一样的,
基本类型比较的是值,引用类型比较的是地址
equals 在引用类型中若是没有重写Object类时,则默认使用Object类的equals方法,则仍然
利用“==”比较两个对象的内存地址,若是重写Object类的equals方法,则调用子类重写后
的方法可以进行内容或值的比较
equals内部使用的也是==
3.final的作用(和finallyde1区别)
final修饰的方法不能被重写,修饰的类不能被继承,修饰的变量叫常量。不能被修改
修饰的类为最终类,不能被继承
final的好处是提高了性能,在多线程中可以安全的实现共享
finally:是在异常处理中的捕获异常中使用的,往往写在catch之后
finally在异常中往往是关闭物理资源的,如果没有可以不写
4.String是基本类型吗
不是,String是引用类型,是个对象
5.对象的特征有哪些
封装:将事务的属性和功能隐藏起来,只保留特定的方法与外界练习
继承:子类使用父类的属性和方法
多态:同一个函数名,引用不同的对象,所表达的内容不同,输出结果不同,父类引用指向不同的子类
输出结果不同
6.什么是异常
异常:异常就是程序遇到了问题,然后跳出当前程序,然后抛出提醒
编译期异常:在编译期间的异常,必须要进行处理,需要使用try-catch捕获
运行期异常:在运行是的异常,一般不用处理。直接抛出
捕获异常:在方法中进行捕获,此异常必须进行处理
抛出异常:直接抛给方法,对此异常不进行处理
throw:在方法中,是一定会出现的异常,其后只能定义一个异常
throws:在方法名之后,是可能出现的异常,以后可以定义多个异常
7.什么是乐观锁和悲观锁
悲观锁:为了数据的安全, 会进行锁定,只允许一个线程调用,而阻塞其他线程,先锁定在修改,多写少读
乐观锁:本质是无锁的,多个线程同时操作数据,但只有一个能成功操作
cas:
8.死锁和活锁的区别
死锁:一直处在等待状态,线程之间相互占用着其他线程的资源,形成的阻塞状态
活锁:没有阻塞状态,但由于一些原因无法完成,从而一直重复的运行
9.什么是串行,并行,并发,分布式
串行:在同时要执行两个线程时,当一个线程执行时,要等这个线程执行完毕后,才能执行第二个线程
并行:多个线程在多个cpu上执行时,可同时执行,但当线程数大于cpu时,使用串行
并发:一个cpu执行多个线程,每个线程执行固定的时间,从而实现宏观上的同时执行,通过穿插执行的
串行并发:一个cpu并发多个线程
并行并发:多个cpu并发多个线程
分布式:实际就是将一个系统分成几个系统,然后分成的系统之间还相互联系
多线程:多个线程能同时运行
高并发:高并发就是在一定时间内大量的请求访问
10.说说内部类是什么
内部类:在一个类中定义一个类那么这个类就是内部类
内部类分为:
成员内部类:定义在成员的内部类,往往是在成员变量的位置
可以引用外部类的方法和变量
使用场景:A需要引用B,B同时需要引用A
静态内部类:定义的和成员内部类差不多,在成员内部类钱加静态static
不能直接访问外部类的方法和变量,需要使用new对象,否则只能引用外部类中的 静态
方法和变量
使用场景:A需要引用B,而B不需要引用外部类A
局部内部类:局部内部类定义在外部类的方法中只能在方法中使用
使用场景:只在方法中使用,一次性的
匿名内部类:不需要添加类名class,往往与匿名对象使用
往往使用的是继承其他类或实现接口,不能有构造方法,而且参数要使用final
使用场景:需要实现接口单不需要他的引用
11.this和super的区别:
this:可以引用自己本身类中的数据和方法,也可以引用父类中数据和方法,但不能引用父 类中的构造方法。
super:可以在子类中引用父类数据,方法,构造方法,不能引用本子类的。
12.什么是流,包含什么
流:流是个抽象概念,数据的输入和输出就是流
流可以分成两大类:字符类和字节流,字节流包括字节输入流和字节输出流,字符流包括 字节字符输出流和字节输入流
字节流和字符流的区别:
字节流:以一个字节进行传输,可以对所有数据进行传输
字符流:按两个字节进行传输,只能以二进制的方式传输
序列化和反序列化:
序列化:将java对象转化成二进制的形式
反序列化:将二进制的形式转化会java对象
13.什么是ioc,使用的是什么容器
ioc:控制反转,表示的是对象的创建和管理都要交给spring容器来管理,其实ioc只是一种 理念,真正实现ioc的其实是依赖注入di。
java容器:java容器其实就是一个程序,管理着对象和对象之间的联系,控制着对象的生命 周期。
java容器类:list,arraylist,hash,hashmap,map。。。。。
14.数据库连接池的理解
数据库连接池:数据库连接池就是,在程序初始化后,创建多个对象链接数据库,使用时引 用,不使用时放入到池中。
线程池:池都是一样的概念,创建多个线程到内存中,使用时引用,不使用时放在池中。
使用池的好处:节约了资源,不用每次使用都创建,提高了效率
15.springmvc的工作流程
1.客户向前端控制器发送请求,前端控制器接收请求
2.前端控制器使用url访问处理器映射器,处理映射器将查询的数据返回给前端控制器
3.前端控制器将数据再交给处理器适配器,处理器将数据和视图返还给前端控制器
4.前端控制器将视图交给视图解析器,然后解析完返还给前端控制器
5.前端控制器在吧视图交给视图渲染后,返还给客户
16.事务的四大特性
原子性:就是操作要么全部完成,要么全部失败
一致性:数据修改完成后,数据发生了改变,但数据本质是不变的
隔离性:数据在修改时,数据是相互隔离不受影响的
持久性:数据修改成功后,数据就永久修改了
什么是回滚
回滚:返回到事务开始的数据
回滚点(savepoint):返回到自己设定的点上
什么是脏读,什么是幻读,什么是不可重复读
脏读:一个事务在读取数据时,读取到的数据是其他事务回滚前的脏数据
幻读:一个事务在查询完数据后,另一个事务添加了一事务的数据,从而使一数据第二次查 询比第一次查询的数据多了
不可重复读:一个事务第一次读的数据和第二次读的数据不同(被第二个事务修改了)
17.二十四种设计模式
(理解不了,跳过)
https://blog.csdn.net/weixin_46460843/article/details/118740236
18.常见的数据类型:
栈:遵循的是先进后出的原则,当数据进入后会被放入底部,在进行添加和删除是只能从一 端开始,不能从中间进行
队列:遵循的是先进先出的原则,当数据进入后会被放在顶部,和栈一样是只能在一段进行 增加和删除
数组:在内存开辟一部分空间,用来存储元素,对数据的查找通过下标来查找,特点是查找
快,增删慢
链条:是由一系列的节点(元素)组成,节点包含两大部分,数据域和指针域,链条的特点
是查找缓慢,增删快
红黑树:红黑树本质就是二叉查找树,和二叉查找树的区别就是不会出现由于数据较小,从 而形成链条
19.什么是向上转型和向下转型
属于多态的范畴
向上转型:就是把自己子类看成父类,进行继承后发生重写,重写的数据输出,其他数据输 出还是父类的数据
向下转型:就是指向子类,在发生向上转型后,子类还向引用自己的方法,那么就会使用向 下转型
20.string和stringbuilder
string:string的长度是固定的,每次拼接都会生成新的对象,拼接效率缓慢,对字符串操作 方便
stringbuilder:stringbuilder的长度默认是16,在超出是会进行扩容,所以stringbuilder拼接不 用创建新的对象,一直是同一个,拼接效率快,但对字符串操作不方便
21.抽象类和接口的区别
抽象类通过abstart创建,而接口通过interface创建
抽象类使用extends继承,接口时通过inplanents继承
抽象类能创建main方法,接口不能
抽象类能有构造方法,接口不能
抽象类中中可以有抽象方法还可以有普通方法,接口中只能有抽象方法
22.什么是泛型:
泛型:简单的来说就是参数化类型,把他看作是一个参数,可以被不同的类型重用
泛型通配符:在接收时,无法确定数据的数据类型,可以使用?,?就是通配符
泛型通配符的上下限:
泛型的上限:就是父类及其子类的类型,extends
泛型的下限:自己及其父类的类型:super



