【每周一测】Java阶段三第二周学习

目录

1、以下哪个过程可以创建Class对象?

2、下列switch代码段输出结果是()

3、redis的数据类型

4、⭐以下关于Servlet生命周期说法错误的是( )

5、⭐下面有关SPRING的事务传播特性,说法错误的是?

6、⭐NoSQL的含义是()

7、对于abstract声明的类,下面说法正确的是?

8、能用来修饰interface的有?

9、⭐关于StringRedisTemplate,说法错误的是()

10、以下HTTP响应状态码的含义描述错误的是?( )

11、关于SpringCache中的Cacheable注解,说法错误的是?

12、⭐以下不属于Spring bean的生命周期是

13、执行完以下代码 int [ ] x = new int[10] ;后,以下哪项说明是正确的

14、⭐Spring依赖注入(DI)的方式正确的有:

15、下面哪两项的数组初始化语句是正确的?

16、Spring中bean的作用域

17、关于SpringCache中,CacheAble和CachePut注解说法正确的是?

18、Spring 框架中都用到的常用设计模式有哪些

19、⭐关于redis中list类型的说法,正确对的是()

20、⭐以下关于final关键字说法错误的是

21、Spring中处理全局异常常用注解

22、以下属于JAP基本注解的是

23、下面哪些对于Servlet的描述是正确的?

24、下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?

25、Maven项目的坐标位置,由那些部分组成

26、⭐ArrayList和linkedList的区别

27、⭐Redis 的String、Hash、List、zset、Set集合在项目中的应用,请结果业务举例说说

28、⭐谈谈你对ORM的理解?

29、说说父项目中dependencyManagement标记的作用

30、已知: Integer a = 129;Integer b = 129;a==b 的结果是什么?为什么?

1、以下哪个过程可以创建Class对象?

加载阶段

解题思路: 类加载

2、下列switch代码段输出结果是()

int  a = 0 ;
while ( a < 5 ) {
    switch(a){
    case 0:
    case 3 : a = a + 2;
    case 1 :
    case 2 : a = a + 3;
    default : a = a + 5;
    }
}
System.out.print ( a ) ?

10

3、redis的数据类型

有:stirng、hash、list、set、zset、bitmap、hyperloglog、geo

4、⭐以下关于Servlet生命周期说法错误的是( )

【每周一测】Java阶段三第二周学习_第1张图片

5、⭐下面有关SPRING的事务传播特性,说法错误的是?

解题思路: PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。  

PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 

PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。 

PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。

PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 

PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。 

6、⭐NoSQL的含义是()

解题思路: NoSQL表示not only sql,含义为不仅仅只有sql,表明nosql的目的并不是取代sql,而是与sql互补。

7、对于abstract声明的类,下面说法正确的是?

【每周一测】Java阶段三第二周学习_第2张图片

8、能用来修饰interface的有?

public

解题思路: 接口访问控制符

9、⭐关于StringRedisTemplate,说法错误的是()

【每周一测】Java阶段三第二周学习_第3张图片

解题思路: D错误的原因:StringRedisTemplate的api可以接收String类型以外的参数,但是编译时不会报错,只有运行时才会报错

10、以下HTTP响应状态码的含义描述错误的是?( )

【每周一测】Java阶段三第二周学习_第4张图片

HTTP响应码为404表示请求的资源未被找到。具体含义是,客户端发送了一个请求到服务器,但服务器上并没有对应的资源或页面,因此服务器无法返回所要求的资源。

通常情况下,404响应码意味着请求的URL地址或者文件路径有误,或者请求中的查询条件不正确。如果服务器上曾经存在对应的资源,但现在已经不存在,则可以返回410响应码。

一般来说,当客户端收到404响应码时,会在界面上显示“找不到页面”或“页面不存在”的提示信息。

11、关于SpringCache中的Cacheable注解,说法错误的是?

【每周一测】Java阶段三第二周学习_第5张图片

12、⭐以下不属于Spring bean的生命周期是

服务 不是

解题思路: Spring bean的生命周期包括实例化、属性赋值、初始化、销毁四个阶段

13、执行完以下代码 int [ ] x = new int[10] ;后,以下哪项说明是正确的

【每周一测】Java阶段三第二周学习_第6张图片

多选题:

14、⭐Spring依赖注入(DI)的方式正确的有:

接口注入、setter方法注入、构造方法注入

15、下面哪两项的数组初始化语句是正确的?

int array[] = new int[] {1,2,3};

int array[] = new int[3]; array[0] = 1;array[1] = 2;array[2] = 3;

16、Spring中bean的作用域

singleton、prototype、request、session、application

解题思路: 提供的作用域中,常用的是singleton和prototype

17、关于SpringCache中,CacheAble和CachePut注解说法正确的是?

【每周一测】Java阶段三第二周学习_第7张图片

18、Spring 框架中都用到的常用设计模式有哪些

解题思路: Spring框架中使用到了很多涉及模式,有工厂模式、桥接模式、单例模式、策略模式、代理模式、观察者模式等

19、⭐关于redis中list类型的说法,正确对的是()

【每周一测】Java阶段三第二周学习_第8张图片

解题思路: D错误的原因:如果键已存在,则会追加新的元素到链表,而不是覆盖旧的链表

20、⭐以下关于final关键字说法错误的是

final是Java中的修饰符,可以修饰类、接口、抽象类、方法和属性 ×

final修饰的方法不能被重载 ×

这句话中的错误是,“final”不能修饰抽象类。因为抽象类是为了被子类继承和实现而设计的,因此抽象类不能被声明为 final,否则就不能被继承和实现。其他部分是正确的:

  1. final 可以修饰类、方法和属性。
  2. final 修饰的类不能被继承,final 修饰的方法不能被子类重写,final 修饰的属性一旦赋值就不能再改变。
  3. final 修饰的属性可以在定义时直接初始化,或者在构造方法中初始化。
  4. final 修饰的局部变量必须在定义时初始化,并且一旦赋值就不能再改变。

注意:接口可以有 final 的方法和属性,但接口本身不能被 final 修饰。

21、Spring中处理全局异常常用注解

解题思路: @ControllerAdvice:通过使用该注解定义同的异常处理类,@ExceptionHandler定义异常处理方法;

22、以下属于JAP基本注解的是

解题思路: @Entity用于标注将实体类

@Table用于指定实体类对应的表的名字

@Id用于标注某个字段对应数据库中的主键

@GeneratedValue用于表示某个字段对应的数据库表中的列的生成方式

23、下面哪些对于Servlet的描述是正确的?

【每周一测】Java阶段三第二周学习_第9张图片

24、下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量?

String a[];

String[] a;

Object a[];

25、Maven项目的坐标位置,由那些部分组成

解题思路: 

①groupid:公司或组织域名倒序+项目名 < groupid>com.gly.maven< /groupid>

②artifactid:模块名 < artifactid>Hello< /artifactid>

③version:版本

26、⭐ArrayList和linkedList的区别

参考答案:

Array(数组)是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。
Array获取数据的时间复杂度是O(1),但是要删除数据却是开销很大,因为这需要重排数组中的所有数据, (因为删除数据以后, 需要把后面所有的数据前移)
缺点: 数组初始化必须指定初始化的长度, 否则报错
例如:
int[] a = new int[4];//推介使用int[] 这种方式初始化
int c[] = {23,43,56,78};//长度:4,索引范围:[0,3]
List—是一个有序的集合,可以包含重复的元素,提供了按索引访问的方式,它继承Collection。
List有两个重要的实现类:ArrayList和LinkedList
ArrayList: 可以看作是能够自动增长容量的数组
ArrayList的toArray方法返回一个数组
ArrayList的asList方法返回一个列表
ArrayList底层的实现是Array, 数组扩容实现
LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能.但在get与set方面弱于
ArrayList.当然,这些对比都是指数据量很大或者操作很频繁。

27、⭐Redis 的String、Hash、List、zset、Set集合在项目中的应用,请结果业务举例说说

1、string是字符串类型,可以将字符串等文本或者图片信息存入redis缓存中,减轻对数据库的读写压力;

2、list是列表,在项目中可以实现排序的功能;

3、hash是散列表,键值对的集合,hset,hget,可以用来存放某个键包含的值数据;

4、set是无序唯一的集合,可以被用来存放不能重复的数据;

5、zset是有序唯一集合,可以根据score来进行排序,例如销量排行榜等。

参考答案:

1、注册发邮件,邮件验证码存储到Redis中,因为我们系统做了异步解耦,注册与发邮件是不同的系统,所以通过Redis的String类型存储验证码

2、排行榜、top10, 根据购买量/积分作为redis zset集合的分值,从而实现有序存储。

3、库存,通过数据预热,初始化到Redis的 hash 类型集合中: key hashkey(bookId) count

4、项目中一些简单业务模块,比如:XX详情,通过Spring的缓存注册@cacheable实现缓存,这里要注意默认情况方法返回对象要实现序列化接口。

5、首页导航面包削,通过Redis的List集合实现有序存储。

6、首页根据类别查询图书列表,使用Redis的缓存注解@Cacheable

7、项目中购物车存储,使用了Redis的Hash类型: 用户id作为key bookid作为hashkey 购物项

8、省市区联动数据,在数据库中通过t_china表存储,为了减少数据库查询,提升性能,通过数据预热,把t_china表数据存储到Redis的Hash类型中。为什么使用Hash类型? 可以获取每一条记录的数据,方便使用。

9、t_china 省份城市区域表中,通过set集合缓存所有的省份

  1. list.forEach(china -> {
  2. redisTemplate.opsForSet().add(RedisConstant.PROVINCES, JSONUtil.toJsonStr(china));
  3. });

28、⭐谈谈你对ORM的理解?

orm框架指的是对象-关系的映射,可以作为连接数据库和后端数据操作层之间的桥梁; 通过orm框架将数据库中的表和数据映射到对象类中,并根据注解和相关参数来设置属性和方法; 简化了数据库操作的流程,提高开发效率。

参考答案:

ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题。

使用面向对象编程时,数据很多时候都存储在对象里面,具体来说是存储在对象的各个属性(也称成员变量)中。例如有一个 User 类,它的 id、username、password、email 属性都可以用来记录用户信息。当我们需要把对象中的数据存储到数据库时,按照传统思路,就得手动编写 SQL 语句,将对象的属性值提取到 SQL 语句中,然后再调用相关方法执行 SQL 语句。

而有了 ORM 技术以后,只要提前配置好对象和数据库之间的映射关系,ORM 就可以自动生成 SQL 语句,并将对象中的数据自动存储到数据库中,整个过程不需要人工干预。在 Java 中,ORM 一般使用 XML 或者注解来配置对象和数据库之间的映射关系。

解题思路: ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题。 使用面向对象编程时,数据很多时候都存储在对象里面,具体来说是存储在对象的各个属性(也称成员变量)中。例如有一个 User 类,它的 id、username、password、email 属性都可以用来记录用户信息。当我们需要把对象中的数据存储到数据库时,按照传统思路,就得手动编写 SQL 语句,将对象的属性值提取到 SQL 语句中,然后再调用相关方法执行 SQL 语句。 而有了 ORM 技术以后,只要提前配置好对象和数据库之间的映射关系,ORM 就可以自动生成 SQL 语句,并将对象中的数据自动存储到数据库中,整个过程不需要人工干预。在 Java 中,ORM 一般使用 XML 或者注解来配置对象和数据库之间的映射关系。

29、说说父项目中dependencyManagement标记的作用

该标记是版本的依赖标签,负责维护版本号,父项目标记后,子项目中在添加依赖时就不需要手动添加版本号,交由父项目来统一管理。

参考答案:

Maven的dependencyManagement标签,这个标签只负责维护版本号,父项目在这里添加了依赖后,子项目在写依赖时不需要手动指定版本号了,(注意:在dependencyManagement标签中加入的依赖后Maven不会立即导入此依赖,而是在子项目引用此依赖的时候Maven在会开始导入依赖) ,所以,在子项目引用此依赖时,只需要写artifactId和groupId,而version则由dependencyManagement帮助你管理

解题思路: dependencyManagement标签主要用在在父项目中声明依赖的版本信息。

30、已知: Integer a = 129;Integer b = 129;
a==b 的结果是什么?为什么?

结果是false

首先,因为Integer是int基本数据类型的包装类,int的数值大小区间为-128-127,超出此范围; 其次,作为引用类型,==比较的是a和b的引用地址而不是数值大小,Integer类型比较数值大小可以用.equals()的方法。 a和b的引用地址不同,其比较结果为false。

参考答案:

对于这样直接赋值的Integer当值的范围在[-128,127]时候不会生成新的对象,直接把缓存中的对对象拿来用。Integer a=129;Integer b=129;分别会生成两个新的对象,这样的话就是false了。

解题思路: 包装类常量池


你可能感兴趣的:(java,spring,redis,java,学习)