Java最新简答题

2023-02-24 15:53:57 浏览数 (1)

1.get与post请求区别?

区别1:

get重点在从服务器上获取资源,post重点在向服务器发送数据;

区别2:

get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?"连接,多个请求数据间用"&"连接,如http://127.0.0.1/Test/LogI

n.action?name=admin&password=admin,这个过程用户是可见的;

post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的;

区别3:

Get传输的数据量小,因为受URL长度限制,但效率较高;

Post可以传输大量数据,所以上传文件时只能用Post方式;

区别4:

Get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等;

Post较get安全性较高;

区别5:

get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码。

post支持标准字符集,可以正确传递中文字符。

2.rabbitmq的常见作用有哪些?

1.服务间解耦

2.实现异步通信

3.流量削峰

3.RabbitMQ的工作模式有哪些?

1.简单模式  2.工作者模式  3.广播模式  4.路由模式  5.通配符模式  6.RPC  7.消息确认模式

4.Redis的常用存储结构有哪些

String,字符串,是 Redis 的最基本的类型,一个 key 对应一个 value。是二进制安全的,最大能存储 512MB。

Hash,散列,是一个键值(key=>value)对集合。string 类型的 field 和 value 的映射表,特别适合用于存储对象。每个 hash 可以存储 232 -1 键值对(40多亿)

List,列表,是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。最多可存储 232 - 1 元素 (4294967295, 每个列表可存储40多亿)。

Set,集合, 是 string 类型的无序集合,最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

Sorted set,有序集合,和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。Redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

5.redis缓存雪崩,缓存穿透

缓存雪崩,即缓存同一时间大面积的失效,这个时候又来了一波请求,结果请求都怼到数据库上,从而导致数据库连接异常。

缓存穿透,即故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。

6.Redis持久化机制

Redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。

RDB,简而言之,就是在不同的时间点,将Redis存储的数据生成快照并存储到磁盘等介质上。

AOF,则是换了一个角度来实现持久化,那就是将Redis执行过的所有写指令记录下来,在下次Redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。

RDB和AOF两种方式也可以同时使用,在这种情况下,如果Redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。

7.SpringCloudAlibaba常用组件以及作用

1.Gateway网关:路由,用户鉴权

2.Nacos注册中心:服务注册,发现组件,统一配置中心

3.Sentinel熔断:服务流量控制和服务降级

4.Feign:远程调用

5.Seata:分布式事务

6.Ribbon:负载均衡

8.事务的四大特性

事务具备以下四个属性,简称 ACID 属性:

A  原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。

B 一致性(Consistency):当事务完成时,数据必须处于一致状态。

C  隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。

D  永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

9.Spring五个隔离级别

1、DEFAULT (默认)

这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与JDBC的隔离级别相对应。

2、READ_UNCOMMITTED (读未提交)

这是事务最低的隔离级别,它允许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。

3、READ_COMMITTED (读已提交)

保证一个事务修改的数据提交后才能被另外一个事务读取,另外一个事务不能读取该事务未提交的数据。

这种事务隔离级别可以避免脏读出现,但是可能会出现不可重复读和幻像读。

4、REPEATABLE_READ (可重复读)

这种事务隔离级别可以防止脏读、不可重复读,但是可能出现幻像读。它除了保证一个事务不能读取另一个事务未提交的数据外,还保证了不可重复读。

5、 SERIALIZABLE(串行化)

这是花费最高代价但是最可靠的事务隔离级别,事务被处理为顺序执行。除了防止脏读、不可重复读外,还避免了幻像读。

10.Controller和RestController的区别

Controller, RestController的共同点

都是用来表示Spring某个类的是否可以接收HTTP请求。

Controller, RestController的不同点

@Controller:标识一个Spring类是Spring MVC controller处理器。

@RestController:@RestController是@Controller和@ResponseBody的结合体,两个标注合并起来的作用。

@Controller类中的方法可以直接通过返回String跳转到jsp、ftl、html等模版页面。在方法上加@ResponseBody注解,也可以返回实体对象。@RestController类中的所有方法只能返回String、Object、Json等实体对象,不能跳转到模版页面。

0 人点赞