java面试问题

什么是面向对象,谈谈你的理解

在这里插入图片描述

jdk jre jvm

在这里插入图片描述
如果你只是像要运行java程序 那么你只要安装jre就行了
在这里插入图片描述

重写和重载

重载(Overloading)是指在同一个类中定义多个方法,这些方法的名称相同但参数列表不同。重载的目的是为了方便编程,可以根据不同的参数类型和个数来调用不同的方法,从而实现多态的效果。在重载中,方法的返回类型可以相同也可以不同,但是不能只有返回类型不同而参数相同,因为编译器无法根据返回类型来区分方法。

重写(Overriding)是指在子类中重新定义一个与父类中同名、同参数列表的方法。重写的目的是为了实现多态性,子类可以重写父类中的方法,并且可以根据自己的需要进行修改或扩展。在重写中,子类方法的返回类型和参数列表必须与父类方法相同或者是其子类,而且子类方法的访问修饰符不能低于父类方法的访问修饰符。

区别,重载和重写的区别在于它们针对的对象不同:重载针对同一个类中的方法,重写针对父类和子类之间的继承关系。另外,重载的方法可以有不同的返回类型,而重写的方法必须与父类方法的返回类型相同或是其子类型。

在这里插入图片描述

form表单的int/type 形式有几种值?

在这里插入图片描述
1:特殊表单 能传2进制字节文件
2:普通的表单数据
3:所有的文本数据 包括json

用这个一定是post 其实没有规定说get不可以 但是我们约定是post请求才有请求体

redis 事务

Redis事务没有回滚机制
Redis通过MULTI,EXEC,WATCH等命令来实现事务功能。、
事务首先以一个MULTI命令开始,然后将多个命令放入事务中,最后由EXEC命令将这个事务提交给服务器执行

可以将命令进行一个打包,只不过在他这里是一个队列,凭着一点可以解决两个问题提,
1多次命令发送返回的网络io,
2可以让批量命令按顺序的执行,不会让其他的客户端穿插在中间,影响这一堆命令中所操作的某一数据,
能解决这些问题的本质就是他打包批量执行

事务队列到底在服务端缓存还是客户端缓存?

无论是我们说的事务队列,还是管道他们一开始的命令打包,或者是入队,都是在客户端,==客户端指的是谁呢?==如果是Java代码就是在jedis,如果是cmd这种终端窗口,那么队列或者打包都是在终端中做的,只有在我们执行exec方法时,服务端才知道我们要执行的命令是什么。

事务使用的时候要结合watch关键字,但我们redis本身不结合watch关键字使用事务也不影响,但如果我们命令写错了入队是不成功的,他也不会执行之前队列的命令,他是变相的做到了要么都成功要么都失败,不解和watch关键字也能用,但违反了隔离性(一个事务的操作不应该被另一个事务影响)所以引入了watch关键字

watch底层实现原理 乐观锁

乐观锁不是锁,是一个版本控制的思想,
你监听的数据初始有一个默认的版本,当其他客户端对数据更改的时候就,你监听的这个数据的版本就不是原先那个默认版本了,在我们队列执行的时候发现版本不是默认版本,就知道不满足隔离性了。
在这里插入图片描述
连接池思想
用空间换时间,初始化连接数量,临时连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值