【Java面试题】真实的二面面试题(参考答案为纯个人理解)

1. 你掌握前端的哪些知识?

  1. vue2
  2. element-ui
  3. 了解一些css,js

2. 那你说一下vue中的路由吧?

  1. vue中的路由是用来设定访问路径的,将路径映射到组件页面上

3. 说一下前端vue页面之间传参的方式?

  1. 路由查询字符串(我用的)

    // 路由定义 
    { path: '/article', component: article }// 跳转并传参
    viewDetails(row) {	//现将参数存储let id = row.id;let title =row.titlethis.$router.push({//添加需要传值到那个页面的路径path:'/article',//携带需要传递的参数query:{id:id,title:title,}})
    }
    // 获取参数
    loadArticleList() {//接受上级页面传来的id参数let id = this.$route.query.id;console.log(this.$route)console.log("文章id:"+id)}
    
  2. 通过事件传值:通过$emit触发事件并传值,在目标组件通过$on监听接收。

    // 传值页
    this.$emit('sendMsg', 'some value')// 目标页
    mounted() { this.$on('sendMsg', (value) => {// do something})
    }

4. 那前端中父子组件怎么传参?

  1. Props:父组件通过props向子组件传递数据。
// 父组件
<ChildComponent message="some data" />// 子组件
props: ['message']

子组件可以通过this.message访问props传递过来的数据。

  1. 自定义事件:子组件通过$emit触发事件,父组件通过v-on监听子组件事件并获取值。
// 子组件
this.$emit('sendMsg', 'some value')// 父组件
<ChildComponent v-on:sendMsg="getMsg"/>methods: {getMsg(value) {// ...}
}

5. 你说一下前后端交互的请求方法有哪些?分别在什么场景下使用?

  1. get:获取资源的
  2. post:创建新的资源
  3. delete:删除资源
  4. put:更新/上传资源(单个资源数据完全更新)
  5. PATCH: 更新/上传资源(单个资源的部分内容)

一般来说,获取信息使用GET,创建和更新使用POST或PUT,删除使用DELETE。POST和PUT的选择依据是是否完全替换资源

6. 说一下Spring MVC的基本流程?

  1. 用户发送请求到前端控制器(DispatcherSetvlet),

  2. 前端控制器将读取url查找匹配的hander对象传到处理器映射器(handlerMapping) ,并返回handler对象给前端控制器(DispatcherSetvlet)

  3. 前端控制器(DispatcherSetvlet)调用处理器适配器,

  4. 适配器确定处理业务(Controller)

  5. Controller调用指定的service处理

  6. 处理完成后返回modeandview对象(json格式)给前端控制器

  7. 前端控制器(DispatcherSetvlet)调用视图解析器进行解析

  8. 视图解析器解析完成后返回view视图

  9. 将视图传递给前端显示

7. 那事务在MVC哪一层?

在MVC架构中,事务属于Model层。

MVC分三层:

View: 用于展示数据,界面层。
Controller: 用于接收用户输入和处理用户请求,控制层。
Model: 用于业务逻辑和数据处理,模型层。

8. 什么情况下在方法上加事务注解?

  1. 在方法中包含多个关键业务的操作(转账,交易,出库等),如果某一个操作失败会导致数据不一致,需要进行事务管理,要么都成功,要么都失败
  2. 当我们需要保证一个业务操作中锁住某些数据时,防止其他线程对数据进行修改,需要使用数据库事务。
  3. 当一个方法中既有读数据库的操作又有写数据库的操作时,如果读写顺序重要我们也需要事务来保证正确的顺序。

9. Spring管理bean的方式有哪些?

  1. @Component:这是Spring中最基本的bean注册方式,它会自动将标识了@Component的类注册为Spring bean。

    我们可以使用@Component的衍生注解来进一步定义bean的类型,如:

    • @Repository:用于数据访问层(DAO)的bean
    • @Service:用于业务逻辑层(service)的bean
    • @Controller:用于表现层(MVC控制器)的bean
  2. @Bean:这是@Configuration配置类中的方法级别的注解,用于直接注册一个bean。

10. 工厂设计模式你了解吗?

是的,工厂设计模式是一种常用的设计模式。工厂设计模式有以下几个角色:

  1. 工厂(Factory):工厂类,用于创建产品对象。
  2. 产品(Product):所创建的产品对象。
  3. 具体工厂(ConcreteFactory):具体的工厂实现类,用于创建具体的产品对象。
  4. 具体产品(ConcreteProduct):具体的产品实现类。工厂设计模式有三种类型:
  5. 简单工厂(Simple Factory):有一个工厂类,直接根据参数创建产品对象。
  6. 工厂方法(Factory Method):定义一个创建产品对象的工厂接口或抽象类,具体的实现交给子类去实现。
  7. 抽象工厂(Abstract Factory):用于创建一组相关或相互依赖的对象,提供一个创建一系列产品的接口,而无需指定其具体的类。

举个简单的例子:

简单工厂模式:

public class CarFactory {public Car createCar(String type) {if ("汽车".equals(type)) {return new Car();} else if ("电动车".equals(type)) {return new ElectricCar();}}
}

工厂方法模式:

public interface CarFactory {Car createCar();
}public class CarFactoryImpl1 implements CarFactory {public Car createCar() {return new Car();}
}public class CarFactoryImpl2 implements CarFactory {public Car createCar() {return new ElectricCar();} 
}

使用工厂设计模式的主要优点是解耦,使客户端和具体产品之间的依赖关系解耦,客户端不再需要知道如何去创建具体的产品对象。

11. 说一下你知道的设计模式?

  • 单例模式
  • 代理模式
  • 工厂模式
  • mvc

12. 线程安全的单例模式代码如何编写?

  1. 使用同步方法(synchronized )进行同步_懒汉式
  2. 双重检查锁定(了解不多)

13. 说一下bean的作用域?

  1. singleton:单例模式,容器初始化时创建bean实例,在整个容器内只有一个实例。
  2. prototype:原型模式,每次注入或者通过Spring ApplicationContext获取的时候,都会返回一个新的实例。
  3. request:每次HTTP请求会创建一个新的bean,该作用域仅在WebApplicationContext环境下有效。
  4. session:每次HTTP Session创建一个新的bean实例,该作用域仅在WebApplicationContext环境下有效。
  5. application:ServletContext初始化时创建一个新的bean实例,该作用域仅在WebApplicationContext环境下有效。

14. mybatis框架sql session factory有什么作用?

  1. 创建SqlSession对象。SqlSession对象是mybatis中最重要的一个对象,它用于执行SQL语句,提交或回滚事务。
  2. 配置mybatis,如数据库连接池、事务管理器、映射文件位置等。这些配置信息会在构建SqlSessionFactory对象时指定。
  3. 维护映射关系。SqlSessionFactory对象会解析映射文件中的所有映射语句,并将它们编译成映射关系,存储在内存中。当执行SQL语句时,mybatis会根据这些映射关系来生成实际执行的SQL语句。
  4. 事务支持。在打开一个事务后,同一个SqlSessionFactory对象创建的所有SqlSession对象会复用该事务。如果其中一个SqlSession提交或回滚了事务,其他SqlSession都会自动提交或回滚。
  5. 连接池维护。SqlSessionFactory底层封装了连接池,它可以创建、释放、管理连接池中的连接。SqlSession可以从连接池中获取连接来执行SQL语句。

15. 在实际项目里面会创建几个SqlSessionFactory呢?

通常会创建两个SqlSessionFactory:

  1. 主SqlSessionFactory: 用于主业务逻辑,连接生产环境数据库,创建大部分Mapper接口。
  2. 测试SqlSessionFactory: 用于测试环境,连接测试环境数据库,创建少数测试用Mapper接口。

16.在实际项目里面会创建几个SqlSession呢?

  1. 一个应用级别的 SqlSession,供整个应用使用。这个 SqlSession 的生命周期跟应用一致,一直存在。通常使用 SqlSessionFactory#openSession() 方法获得。
  2. 一个请求级别的 SqlSession,供一个请求使用。这个 SqlSession 的生命周期跟请求一致,请求结束就关闭。通常使用 SqlSessionFactory#openSession(true) 方法获得,参数 true 表示自动提交事务。
  3. 一个线程级别的 SqlSession,供一个线程使用。这个 SqlSession 的生命周期跟线程一致,线程结束就关闭。通常也使用 SqlSessionFactory#openSession() 方法获得。
  4. 一个作用域级别的 SqlSession,根据需要定义生命周期。可以使用 SqlSessionFactory#openSession(ExecutorType, boolean) 方法获得,根据 ExecutorType 的种类来决定生命周期的长短。

17. mysql性能优化?

  1. 开启缓存查询
  2. 增加索引查询
  3. 在业务层做数据校验和容错处理,避免无效数据进入 数据库

18. 遍历hashmap的几种方式?

  1. 使用 Map.keySet() 遍历 key:
java
Map<String, Integer> map = new HashMap<>();
for (String key : map.keySet()) {Integer value = map.get(key);// do something
}
  1. 使用 Map.entrySet() 遍历 key 和 value:
java
for (Map.Entry<String, Integer> entry : map.entrySet()) {String key = entry.getKey();Integer value = entry.getValue();// do something
} 
  1. 使用 Map.forEach() 和 lambda 表达式遍历:
java
map.forEach((key, value) -> {// do something
});

19. 基于spring security单点登录的流程?

登录流程

20. 在业务中,用户在前端第一次输入密码后,有没有对密码进行加密?

有,在前端用户点击提交时间,会将密码进行加密传输到后端

21. 密码从前端提交到后端的途中如何加密?

  1. 前端使用 JS 加密,后端使用相同的算法解密:
// 前端加密
let pwd = '123456';
let encryptPwd = md5(pwd);  // md5 哈希// 发送 encryptPwd 到后端// 后端解密
let decryptPwd = md5('123456');
if (encryptPwd === decryptPwd) {// 密码验证成功
}

缺点是如果加密算法泄露,就失去意义。

  1. 前端使用对称加密,后端使用非对称加密解密:
// 前端使用 AES 和密钥加密
let pwd = '123456';
let key = 'secret key';
let encryptPwd = AES.encrypt(pwd, key);  // 发送 encryptPwd 到后端// 后端使用 RSA 私钥解密 AES 密文 
let decryptPwd = RSA.decrypt(encryptPwd, privateKey);
if (decryptPwd === '123456') {// 密码验证成功
}

这种方式较为安全,但前端需要管理好密钥。

22. 过滤器和拦截器的区别?

过滤器和拦截器都是AOP(面向切面编程)中的重要概念。

但它们之间有一定的区别:

过滤器(Filter):

  1. 主要用于对请求做预处理和后处理。比如登陆校验,编码转换等。
  2. 过滤器可以访问请求和响应。可以修改请求头和响应头及响应体。
  3. 过滤器的执行顺序由 web.xml 中的配置决定。

拦截器(Interceptor):

  1. 拦截器主要用于拦截控制器方法的执行。比如权限校验,日志记录等。
  2. 拦截器可以访问控制器方法的请求和响应。可以修改请求头和响应头及响应体。
  3. 拦截器的执行顺序由拦截器类的 Order 注解或实现接口的 getOrder() 方法决定。
  4. 拦截器只会拦截控制器方法的执行,而过滤器可以拦截所有请求。

所以总体来说,过滤器的功能更广,拦截器更加强大,主要是因为拦截器可以访问控制器上下文等WEB框架的上下文信息。

23. Spring如何注册拦截器?

在Spring中,拦截器可以通过两种方式注册:

  1. 通过WebMvcConfigurerAdapter注册
    这是在Springboot框架下注册拦截器的推荐方式。你需要创建一个配置类,继承WebMvcConfigurerAdapter,然后重写addInterceptors方法:
@Configuration
public class InterceptorConfig extends WebMvcConfigurerAdapter {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/**");}
}
  1. 在Spring MVC的xml配置文件中注册
    在Spring MVC项目中,你需要在springmvc-servlet.xml配置文件中注册拦截器:
<mvc:interceptors><mvc:interceptor><mvc:mapping path="/**"/><bean class="cn.myweb.interceptor.MyInterceptor"/> </mvc:interceptor>
</mvc:interceptors> 

另外,拦截器的执行顺序是由其注册的顺序决定的,注册在前的拦截器会先被执行。
拦截器方法主要有三个:- preHandle:controller方法执行前调用,若返回false,则不执行controller方法。

  • postHandle:controller方法执行后调用。
  • afterCompletion:响应输出流输出后调用。

以上的面试均为真实面试经历,解答为个人立即以及整合ChatGPT的答案,如有不正确的,或者不足的欢迎补充~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/38247.html

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

相关文章

yolo

目标检测 导言&#xff1a;目标检测的任务表述 如何从图像中解析出可供计算机理解的信息&#xff0c;是机器视觉的中心问题。深度学习模型由于其强大的表示能力&#xff0c;加之数据量的积累和计算力的进步&#xff0c;成为机器视觉的热点研究方向。 那么&#xff0c;如何理解…

神经网络与深度学习-学习笔记(5)

1.目标检测与YOLO 目标检测问题 目标检测是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别。物体的尺寸变化范围很大&#xff0c;摆放物体的角度&#xff0c;姿态不定&#xff0c;而且可以出现在图片的任何地方&#xff0c;并且物体还可以是多个类别。 目…

可见光遥感目标检测(一)任务概要介绍

前言 本篇开始对遥感图像的目标检测进行介绍&#xff0c;介绍了其目标前景、数据集以及评价指标。 本教程禁止转载。同时&#xff0c;本教程来自知识星球【CV技术指南】更多技术教程&#xff0c;可加入星球学习。 Transformer、目标检测、语义分割交流群 欢迎关注公众号CV技…

YOLOv5全面解析教程①:网络结构逐行代码解读

撰文 | Fengwen, BBuf 本教程涉及的代码在&#xff1a; https://github.com/Oneflow-Inc/one-yolov5 教程也同样适用于 Ultralytics/YOLOv5&#xff0c;因为 One-YOLOv5 仅仅是换了一个运行时后端而已&#xff0c;计算逻辑和代码相比 Ultralytics/YOLOv5 没有做任何改变&#x…

可见光遥感图像目标检测(三)文字场景检测之Arbitrary

前言 前面介绍了关于可见光遥感图像目标检测任务主要面临的问题&#xff0c;现在对旋转目标的问题进行优化&#xff0c;为了便于大家理解与之前通用目标检测区别&#xff0c;采用Faster-Rcnn网络模型的架构对旋转目标的检测进行改进。 本教程禁止转载。同时&#xff0c;本教程来…

yolov5的简单使用

yolov5是什么 来自chatGPT的描述如下 YOLOv5是一种目标检测算法&#xff0c;它是YOLO系列算法的最新版本&#xff0c;由Joseph Redmon和Alexey Bochkovskiy等人开发。与之前的版本相比&#xff0c;YOLOv5在准确性和速度方面都有所提高。YOLOv5使用一种名为“Bag of Freebies”…

yolov3_spp项目中的各种配置文件读取

目录 1. open 函数 2. cfg文件夹下文档解析 2.1 hyp.yaml 2.2 my_yolov_3.cfg 3. data文件夹下文档解析 3.1 my_data.data 3.2 其它 后缀名 .ymal .txt .json .cfg .data .names .shapes 可以自定义后缀名&#xff1f;&#xff1f; pyhon文件操作大…

目标检测算法——YOLOv5/YOLOv7改进之结合CBAM注意力机制

&#x1f496;&#x1f496;>>>加勒比海带&#xff0c;QQ2479200884<<<&#x1f496;&#x1f496; &#x1f340;&#x1f340;>>>【YOLO魔法搭配&论文投稿咨询】<<<&#x1f340;&#x1f340; ✨✨>>>学习交流 | 温澜潮…

​目标检测算法——YOLOv5/YOLOv7改进之结合Criss-Cross Attention

&#xff08;一&#xff09;前沿介绍 论文题目&#xff1a;CCNet: Criss-Cross Attention for Semantic Segmentation 论文地址&#xff1a;https://arxiv.org/pdf/1811.11721.pdf 代码地址&#xff1a;https://github.com/shanglianlm0525/CvPytorch 本文是ICCV2019的语义分…

目标检测算法——YOLOv5/YOLOv7改进之GSConv+Slim Neck(优化成本)

>>>深度学习Tricks&#xff0c;第一时间送达<<< 目录 &#xff08;一&#xff09;前言 1.GSConv模块 2.Slim Neck&#xff08;GSBottleneckVoVGSCSP&#xff09; &#xff08;二&#xff09;YOLOv5改进之GSConvSlim Neck 1.配置common.py文件 2.配置yo…

目标检测算法——YOLOv5改进|增加小目标检测层

&#x1f496;&#x1f496;>>>加勒比海带&#xff0c;QQ2479200884<<<&#x1f496;&#x1f496; &#x1f340;&#x1f340;>>>【YOLO魔法搭配&论文投稿咨询】<<<&#x1f340;&#x1f340; ✨✨>>>学习交流 | 温澜潮…

【学习笔记】YOLOv5训练自己的数据集

训练自己的数据集进行总结&#xff0c;方便接下来的学习 目录 1.设置文件夹 2.标记自己的数据集 2.1在百度图片上找到自己想要的图片并批量下载 2.2labelimg软件的使用 3.修改配置文件 3.1AOCAO parameter.yaml 3.2AOCAO model.yaml 4.开始训练 4.1改代码 4.2训练过…

Tips and tricks for Neural Networks 深度学习训练神经网络的技巧总结(不定期更新)

文章目录 本文说明Debug 技巧Overfit一个简单的Batch无法复现之前的结果 数据处理平衡数据数据增强&#xff08;Data Augmentation&#xff09;图片增强 使用Embedding数据压缩数据标准化&#xff08;Normalization&#xff09;标签平滑&#xff08;LabelSmoothing&#xff09;…

官方正品 | Ultralytics YOLOv8算法来啦(尖端SOTA模型)

&#x1f496;&#x1f496;>>>加勒比海带&#xff0c;QQ2479200884<<<&#x1f496;&#x1f496; &#x1f340;&#x1f340;>>>【YOLO魔法搭配&论文投稿咨询】<<<&#x1f340;&#x1f340; ✨✨>>>学习交流 | 温澜潮…

暑期学习杂记

7月6日 粗略复习51&#xff08;问了学长后&#xff0c;我打算直接看小车视频&#xff0c;遇到不会的再回去看江科大&#xff09; 51单片机 LED灯共阳 数码管共阴 7月7日 定时器时间计算 [参考(1条消息) 51单片机定时器使用与计算-----day3_单片机定时器定时时间计算_电子笔记…

Raki的读paper小记:Retentive Network: A Successor to Transformer for Large Language Models

Abstract&Introduction&Related Work 研究任务 语言模型的基础架构已有方法和相关工作 S4&#xff0c;H3&#xff0c;Hyena&#xff0c;Linear Transformer用核函数近似注意力&#xff0c;以便将自回归推理重写为循环形式回归到使用循环模型进行高效推理&#xff0c;但…

Coremail RSAC大会观察:在邮件安全领域AI既是矛也是盾

《Coremail RSAC大会观察&#xff1a;在邮件安全领域AI既是矛也是盾》 全球网络安全界的盛会——2023年RSAC大会于当地时间4月24日-27日在美国旧金山召开&#xff0c;大会以“Stronger Together&#xff08;一起变得更强大&#xff09;”为主题&#xff0c;议程主要包含安全研…

小红书软件,自动文案神器,爆文效率UP

小红书软件&#xff0c;自动文案神器&#xff0c;爆文效率UP&#xff01;#小红书推广#小红书营销#百收小红书 Hello大家好&#xff0c;我是百收&#xff0c;今天给大家分享的是小红书&#xff0c;三步快速打造爆款笔记可批量可复制。那话不多说先给大家看一下呃&#xff0c;学…

5个AI人工智能平台推荐,绘画、写作文案、文章一键生成

随着人工智能技术的快速发展&#xff0c;AI原创文章写作平台也愈加成熟和完善&#xff0c;让文章的创作变得更加便捷、高效、优质。下面介绍五个国内知名的AI原创文章写作平台&#xff0c;它们各有特色&#xff0c;可以满足您的不同需求。 5个AI人工智能平台推荐&#xff1a; …

沉浸式翻译

chrome沉浸式翻译插件 网页双语翻译&#xff0c;完全免费使用&#xff0c;支持Deepl/Google/Bing/腾讯/有道等。 一款免费、用户友好、简洁、革命性、广受好评的人工智能双语网络翻译扩展程序&#xff0c;可帮助您有效地弥合信息差距&#xff0c;也可在移动设备上使用&#xff…