面试题分享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.rhkb.cn/news/462080.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python酷库之旅-第三方库Pandas(186)

目录 一、用法精讲 861、pandas.Index.names属性 861-1、语法 861-2、参数 861-3、功能 861-4、返回值 861-5、说明 861-6、用法 861-6-1、数据准备 861-6-2、代码示例 861-6-3、结果输出 862、pandas.Index.nbytes属性 862-1、语法 862-2、参数 862-3、功能 8…

Ansible 部署应用

Ansible Ansible 是基于 Python 开发,集合了众多优秀运维工具的优点,实现了批量运行命令、部署程序、配置系统等功能的自动化运维管理工具。默认通过 SSH 协议进行远程命令执行或下发配置,无需部署任何客户端代理软件,从而使得自动…

Python的全局锁GIL解析

Python的全局锁(GIL)是 CPython 解释器实现中的一个机制,用来确保任何时候只有一个线程执行 Python 字节码。这一机制存在于 CPython 中,主要是为了确保线程操作中的数据一致性,但也因此限制了多线程的并行执行效率。尤…

基于vue框架的的考研信息共享平台v0eyp(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:国家政策,用户,院校政策,院校信息,考研资料,资料分类,考研论坛 开题报告内容 基于Vue框架的考研信息共享平台开题报告 一、研究背景与意义 随着考研人数的逐年增长,考研学生对高效、便捷、个性化的信息获取需求愈发强烈。…

抽丝剥茧 分布式服务框架设计 理论设计篇

1、概述 前面几篇文章给大家详细的介绍了Zookeeper的基础概念以及应用的领域,今天我们讨论的话题是如何自研一套分布式服务框架。早些年有很多基于Dubbo和Zookeeper的分布式系统,这篇文章我们就来聊下如何设计一个分布式服务框架。 2、系统间交互 2.1、…

C++STL——list

C教学总目录 list 1、list简介2、构造函数3、迭代器4、访问和容量函数5、修改类函数6、操作类函数 1、list简介 list是带头双向循环链表&#xff0c;也是模板类&#xff0c;使用时要指明类型&#xff0c;包含于头文件<list> 由于list是双向循环链表&#xff0c;在任意位置…

YoloV8改进策略:Block改进|RFE模块,提高小物体的识别精度|即插即用|代码+修改过程

摘要 论文介绍 本文介绍了一种基于YOLOv5的人脸检测方法,命名为YOLO-FaceV2。该方法旨在解决人脸检测中的尺度变化、简单与困难样本不平衡以及人脸遮挡等问题。通过引入一系列创新模块和损失函数,YOLO-FaceV2在WiderFace数据集上取得了优异的表现,特别是在小物体、遮挡和困…

leaflet矢量瓦片vetorgrid显示聚合和图标裁剪显示不全的问题

1、问题现象 使用leaflet显示矢量瓦片会出现图片挤压的问题和图片裁剪显示不全的问题 2、解决办法和思路 1&#xff09;数据抽稀 方法一&#xff1a;在createTile方法通过控制feature在单张瓦片里面显示的数量&#xff0c;在小层级的时候进行筛选过滤&#xff0c;对点数据类…

Gitee push 文件

1、背景 想将自己的plecs仿真放到git中管理&#xff0c;以防丢失&#xff0c;以防乱改之后丢失之前版本仿真。此操作说明默认用户已下载git。 2、操作步骤 2.1 开启Git Bash 在文件夹中右键&#xff0c;开启Git Bash。 2.2 克隆文件 在Git Bash中打git clone git地址&#…

gitee 使用 webhoot 触发 Jenkins 自动构建

一、插件下载和配置 Manage Jenkins>Plugin Manager 搜索 gitee 进行安装 插件配置 1、前往Jenkins -> Manage Jenkins -> System -> Gitee Configuration -> Gitee connections 2、在 Connection name 中输入 Gitee 或者你想要的名字 3、Gitee host URL 中…

【JavaEE初阶 — 多线程】Thread类的属性

目录 Thread类的属性 1.Thread 的常见构造方法 2.Thread 的几个常见属性 2.1 前台线程与后台线程 2.2 setDaemon() 2.3 isAlive() Thread类的属性 Thread 类是JVM 用来管理线程的一个类&#xff0c;换句话说&#xff0c;每个线程都有一个唯一的Thread 对象与之关联&…

yocto是如何收集recipes,如何加入现有的bb文件

yocto通常是如何收集recipes: 在Yocto中&#xff0c;通过以下方式收集recipes&#xff1a; 层&#xff08;Layers&#xff09; Yocto项目使用层来组织recipes。层是包含配置文件、recipes和其他相关文件的目录结构。每个层有自己的目录&#xff0c;其中 recipes-* 目录用于存…

原生鸿蒙的竞争力到底如何?

目录 1. 崛起与挑战2. 安全机制3. 自动化检测前移4. 深入探讨开发者服务优势 1. 崛起与挑战 长期以来&#xff0c;移动操作系统市场被IOS和安卓所垄断&#xff0c;一直都难以推出完整的自主系统&#xff0c;面临诸多挑战&#xff0c;如推广困难、应用适配难度大&#xff0c;以及…

sublime Text中设置编码为GBK

要在sublime Text中设置编码为GBK&#xff0c;请按照以下步骤操作 1.打开Sublime Text编辑器, 2.点击菜单栏中的“Preferences”(首选项)选项&#xff0c;找打Package Control选项。 3.点击Package Control&#xff0c;随后搜索Install Package并点击&#xff0c;如下图 4.再…

KPRCB结构之ReadySummary和DispatcherReadyListHead

ReadySummary: Uint4B DispatcherReadyListHead : [32] _LIST_ENTRY 请参考 _KTHREAD *__fastcall KiSelectReadyThread(ULONG LowPriority, _KPRCB *Prcb)

Python爬虫:揭开淘宝商品描述的神秘面纱

在这个信息爆炸的时代&#xff0c;我们每天都在和时间赛跑。作为一名Python开发者&#xff0c;你是否曾梦想拥有超能力&#xff0c;能够瞬间揭开淘宝商品描述的神秘面纱&#xff1f;今天&#xff0c;就让我们一起化身为代码界的“福尔摩斯”&#xff0c;使用Python爬虫技术&…

HTML 多媒体标签详解:<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

台式电脑如何改ip地址:全面解析与实操指南

有时候&#xff0c;由于IP地址冲突、网络安全、隐私保护或特定应用需求&#xff0c;我们可能需要更改台式电脑的IP地址。然而&#xff0c;对于不熟悉网络设置的用户来说&#xff0c;这一过程可能显得复杂而陌生。本文将通过全面解析与实操指南&#xff0c;帮助大家轻松掌握台式…

跟着红队笔记学习 tmux:渗透测试中的多终端利器

内容预览 ≧∀≦ゞ 跟着红队笔记学习 tmux&#xff1a;渗透测试中的多终端利器进入 tmux 前的准备tmux 概念简介tmux 基础操作会话管理命令会话管理快捷键会话内和会话外命令的区别 tmux 窗口和面板管理新建和管理窗口分割窗口为面板切换面板面板放大与恢复调整面板大小关闭面板…

【机器学习】24. 聚类-层次式 Hierarchical Clustering

1. 优势和缺点 优点&#xff1a; 无需提前指定集群的数量 通过对树状图进行不同层次的切割&#xff0c;可以得到所需数量的簇。树状图提供了一个有用的可视化-集群过程的可解释的描述树状图可能揭示一个有意义的分类 缺点&#xff1a; 计算复杂度较大, 限制了其在大规模数据…