当前位置: 首页 > news >正文

面试题分享1

2024.11.1

1、过滤器和拦截器的区别

过滤器是基于spring的

拦截器是基于Java Web的

2、session 和 cookie 的区别、关系


 

cookie

session

存储位置

保存在浏览器 (客户端)

保存在服务器

存储数据大小

限制大小,存储数据约为4KB

不限制大小,因为它是对象

生命周期

可以主动设置生命周期 ,过期会自动删除

可以设置,生命周期有限制(有间隔,一般为30min)

数据类型

字符串类型

object

安全性

cookie不安全 (存储在浏览器的)

安全

session 依赖于 cookie

一、3、HTTP状态码

200

成功

301

请求资源被转发,移动

404

url错误,找不到

500

服务器内部出错

4、对Spring IOC的理解

它是 bean 对象的容器,管理 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系

5、Bean的作用域

singleton:单例模式

prototype:原型模式 【深拷贝】

request

session

global-session

6、Bean的生命周期

从定义开始,到实例化-->属性注入-->初始化-->最终在使用完毕后被销毁

7、重定向和转发

  1. 重定向 2 次请求,请求转发 1 次请求
  2. 重定向地址栏会变,请求转发地址栏不变
  3. 重定向是浏览器跳转,请求转发是服务器跳转
  4. 重定向可以跳转到任意网址,请求转发只能跳转当前项目
  5. 定向会丢失请求参数, 请求转发不会丢失请求数据

8、spring Boot 自动装配原理

启动注解:@SpringBootApplication 是复合注解

包含 @SpringBootConfiguration(是spring配置类)【包含@Bean注解的方式定义 Bean 方法 】

@EnableAutoConfiguration(启用自动配置类 使用了 SPI 技术)【会根据应用程序的依赖和配置信息,自动配置适当的Bean和组件】

调用了 AutoConfigurationImportSelector 这个注解下的selectImports方法,这个方法中有springFactoriesLoader,使用了 SPI 技术扫描META-INF下面的spring.factory文件 

@ComponentScan(组件扫描)【以查找和加载Spring组件。默认情况下,它会扫描注解所在类的包及其子包下的所有组件,并将它们注册到Spring容器中】三个核心注解

9、过滤器和拦截器的区别

  1. 过滤器(filter)是基于 Java Web 的
  2. 拦截器(interceptore)是基于 spring 的提供的

10、 什么是拆箱和装箱

拆箱:将包装类型转换为基本类型

装箱:将基本类型封装成引用类型,封装成对象,可以使用对象的方法

11、装箱和拆箱的区别

拆箱:将包装类型转换为基本类型

装箱:将基本类型封装成引用类型,封装成对象,可以使用对象的方法

12、Autowired 和 Resource 的区别:

Autowired

Resource

装配策略不同

根据类型进行装配

先根据名称,找不到再根据类型装配

属于 spring 注解

jdk 自带的注解

AutoWired: 默认按类型进行装配,默认情况下必须要求依赖对象必须存在

Resource:默认按照名称装配,名称可以通过 name 属性进行指定

@Autowired 与@Qualifier 配合使用

13、Spring MVC 执行流程

Spring Mvc的两个适配器

处理器适配器:(HandlerAdapter) (HttpRequestHandlerAdapter)

设计模式:责任链和适配器

详细

  1. 用户向前端控制器 (DispatcherServlet) 发送请求
  2. 前端控制器 (DispatcherServlet) 接收到请求后调用处理映射器 (HandlerMappin g)
  3. 处理器映射器 (HandlerMapper) 找到具体的处理器,生成处理器对象以及处理器拦截器,再一起返回给前端控制器
  4. 然后前端控制器调用处理器适配器
  5. 处理器适配器调用具体的处理器
  6. 处理器适配器 (HandlerAdapter)将处理器执行结果ModelAndView返回给前端控制器 (Controller)
  7. 然后前端控制器ModelAndView传给视图解析器解析View
  8. 前端控制器将视图解析器返回的View进行渲染,然后响应给用户

14、Spring MVC 设计模式

适配器模式:允许多个对象按照特定的顺序处理请求,在 spring mvc 中调用处理器映射器返回一条执行链,包含(拦截器和处理器)的执行顺序,再由处理器适配器调用执行,是一个责任链设计模式

责任链模式:目的是解决接口和实现类不匹配问题,如果一个接口拥有很多方法,但是我们只期望使用某些方法时,如果用类实现这个接口,则必须重写所有抽象方法,这个时间则可以使用适配器来处理

15、Java Web 三大组件

Listener (监听器)

Fliter (过滤器)

servlet (控制器)

16、Spring IOC 注入的方式

构造方法注入

属性注入(有@Autowired 和 @Resource )

set 方法注入

17、 如何写一个编程式事务

  1. 先注入事务管理器 PlatformTransactionManager
  2. 定义事物的配置 DefaultTransactionDefinition(传播属性、隔离级别 可设可不设,不设置就是默认的)
  3. 开启事务
  4. 最后再判断,如果没有异常就提交事务,如果有异常就回滚事务
//1.注入事务管理器@Autowiredprivate PlatformTransactionManager transactionManager;//2.编程式事务public void createUser(User user) {//3.定义一个事务默认配置DefaultTransactionDefinition def = new DefaultTransactionDefinition();//设置事务传播属性def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);//设置事务传隔离级别def.setIsolationLevel(TransactionDefinition.ISOLATION_DEFAULT);//4.开启事务TransactionStatus transaction = transactionManager.getTransaction(def);try {//保存当前执行操作userDao.save(user);
//            int i = 1 / 0;//5.提交事务transactionManager.commit(transaction);} catch (Exception e) {//6.回滚事务transactionManager.rollback(transaction);throw e;}

18、 事务的特性

原子性(Atomicity / əˈtɒmɪsɪti /:即不可分割性,事务要么全部被执行,要么就全部不被执行。

一致性(Consistency / kənˈsɪstənsi /:事务必须使数据库从一个一致性状态变换到另一个一致性状态,即一个事务执行之前和执行之后都必须处于一致性状态

隔离性(Isolation / aɪˈsoʊ.leɪ.ʃən /:即一个事务执行之前和执行之后都必须处于一致性状态。

持久性(Durability / djuːˈræ.bɪ.lɪ.ti /:事务一旦结束,数据就持久到数据库。

redo_log:解决持久性

undo_log:解决一致性和原子性

19、jdk1.8 新特性

1. 接口增强

接口增强(允许接口有方法体)

接口用default和static修饰,

2.函数式接口

函数式接口(只有一个抽象类接口)

使用@FunctionalInterface注解来标记判断其是否只包含一个抽象方法

3.方法引用

方法引用(一种语法糖)

Lambda表达式的简化形式,可以提高代码的可读性和简洁性。语法:类名::方法名

4.Stream Api(重要)

Java Stream 常用操作方式

过滤

使用filter()方法可以过滤掉集合中不符合条件的元素。

映射

使用map()方法可以对集合-中的每一个元素进行映射处理。

排序

使用sorted()方法可以对集合中的元素进行排序。

去重

使用distinct()方法去掉集合中的重复的元素。

统计

使用count()方法可以对集合中的元素进行统计。

分组

使用groupingBy()方法可以按照某一个属性进行分组。

遍历

使用forEach()方法可以遍历集合中的每一个元素。

聚合

使用reduce()方法可以对集合中的元素进行聚合计算。

转换

使用collect()方法可以将集合中的元素转换为另一个集合。

平均

使用average()方法可以用于计算一组元素的平均值。

匹配

使用anyMatch()、allMatch()、noneMatch()方法可以对集合中的元素进行匹配判断。

5.Optional 工具类

Optional类(工具类)

为了避免null值异常,防止报 NullpointException(空指针异常)。

6.新的日期和时间

新的日期、时间的 API


http://www.mrgr.cn/news/63763.html

相关文章:

  • Erlang语言的网络编程
  • Keil | 自动添加头文件创建文件分组脚本工具
  • CSS 盒模型
  • JS BOM详解
  • Meilisearch ASP.Net Core API 功能demo
  • 进程、线程的概念和区别(高频面经)
  • 【染色时间】
  • markdown/Latex分子,分母,除号,怎么编辑
  • 如何实现千万级数据表的快速分页查询
  • 题目:0的个数
  • 冰雪奇缘!中科院一区算法+双向深度学习+注意力机制!SAO-BiTCN-BiGRU-Attention雪消融算法优化回归预测
  • systemctl restart NetworkManager 重启后,文件/etc/resolv.conf修改失败
  • Java XML一口气讲完!(p≧w≦q)
  • 利用frp进行SSH端口转发(内网穿透同理)
  • 【每日C/C++问题】
  • 【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据查询(超详细)
  • __init__.py __all__和 __name__的作用及其用法
  • 《DelayQueue:Java界的“延时大师”》
  • Android 字节飞书面经
  • 生信入门第八课:RNA-seq比对、定量和差异分析
  • 项目_Linux_网络编程_私人云盘
  • Linux用户权限管理
  • Linux操作系统下载(centos)
  • 操作系统-多线程案例
  • 5天学习RAG路线图,你信吗?
  • 遥感图像Trento原始数据集下载