Java最新简答题

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Java最新简答题

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等实体对象,不能跳转到模版页面。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
网络协议 安全 算法
Java面试必问多线程简答题
Java面试必问多线程简答题
114 0
|
SQL Java 数据库
Java基础异常简答题
Java基础异常简答题
83 0
Java基础异常简答题
|
Java
Java面向对象简答题
Java面向对象简答题
110 0
|
Java 开发工具 索引
Java基础语法简答题
Java基础语法简答题
77 0
|
1天前
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南
|
2天前
|
监控 安全 算法
如何有效地处理Java中的多线程
如何有效地处理Java中的多线程
|
2天前
|
Java 调度
Java多线程编程与并发控制策略
Java多线程编程与并发控制策略
|
2天前
|
安全 算法 Java
java多线程面试题2019整理
java多线程面试题2019整理
|
2天前
|
安全 Java 开发者
Java并发编程:理解并发与多线程
在当今软件开发领域,Java作为一种广泛应用的编程语言,其并发编程能力显得尤为重要。本文将深入探讨Java中的并发编程概念,包括多线程基础、线程安全、并发工具类等内容,帮助开发者更好地理解和应用Java中的并发特性。
6 1
|
3天前
|
监控 Java 调度
Java并发编程:深入理解线程池
【6月更文挑战第26天】在Java并发编程的世界中,线程池是提升应用性能、优化资源管理的关键组件。本文将深入探讨线程池的内部机制,从核心概念到实际应用,揭示如何有效利用线程池来处理并发任务,同时避免常见的陷阱和错误实践。通过实例分析,我们将了解线程池配置的策略和对性能的影响,以及如何监控和维护线程池的健康状况。
7 1