参加面试被问到的面试题

1.在程序中如何开启事务?

在Java中,使用JDBC(Java Database Connectivity)与数据库交互时,你可以使用Connection对象的setAutoCommit方法来控制事务。默认情况下,autoCommit是开启的,这意味着每次执行SQL语句都会立即提交。为了开启一个事务,你需要关闭autoCommit,然后在完成所有操作后显式地调用commitrollback

在MySQL中是通过START TRANSACTION; 开启事务;

2.事务是什么,举个实际的例子?

事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,它是一个不可分割的工作单位。事务可以把一系列对数据库的多个操作当作一个单一的工作单元来执行,从而保证数据库从一个一致性状态转变到另一个一致性状态。

两个update操作就可以通过start transaction开启事务之后,然后都执行之后通过commit提交事务;

3.MySQL的存储过程是什么?

MySQL的存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字和参数(如果有的话)来调用并执行它。存储过程可以包含逻辑控制语句和数据操纵语句,并且可以接受参数、输出参数、返回单个或多个结果集以及返回值。

4.Java能否实现MySQL存储过程的功能?如果能,区别是什么?

  1. 封装数据库逻辑在Java方法中: 你可以将复杂的数据库操作逻辑封装在Java的方法中。这些方法可以包含多个SQL语句,并且可以使用JDBC或更高级的框架(如Hibernate, MyBatis等)来执行这些语句。这样,其他Java代码就可以像调用存储过程一样调用这些封装好的方法。

  2. 使用Spring框架的@Repository和@Service注解: Spring框架提供了一种声明式的方式来处理数据库操作。通过@Repository注解,你可以创建数据访问对象(DAO),这些对象封装了与数据库交互的逻辑。而@Service注解则用于创建服务层,这些服务层可以调用一个或多个DAO来执行复杂的业务逻辑。这样,业务逻辑就被封装在服务层的方法中,类似于存储过程。

5.axios的get请求和post请求的区别?

  1. 请求方式

  • axios.get用于发送GET请求,通常用于从服务器获取数据。

  • axios.post用于发送POST请求,通常用于向服务器提交数据进行处理请求,如提交表单或者上传文件。

  1. 参数传递方式

  • axios.get通过params属性传递参数,数据会附加在URL后面,因此数据在URL中可见。

  • axios.post则通过data属性传递参数,数据作为请求体发送,不会在URL中显示。

  1. 数据发送方式

  • axios.get请求没有请求体,只有请求头。

  • axios.post请求会把数据作为请求体发送。

  1. 安全性

  • 由于GET请求的数据会被附加到URL中,因此这些数据可能会被浏览器历史记录或服务器日志记录,存在数据泄露或篡改的风险。

  • POST请求的数据则作为请求体发送,不会被缓存到浏览器历史记录或服务器日志中,相对更为安全。

  1. 数据大小限制

  • GET请求提交的数据大小受到限制,通常不能大于2KB。

  • POST请求则没有这样的限制。

6.cookie和session的区别?

首先,从数据存放位置来看,Cookie数据存放在客户的浏览器上,而Session数据则放在服务器上。这意味着Cookie信息可以直接在客户端(如用户的浏览器)上访问和修改,而Session数据则必须通过服务器进行访问和管理。

其次,从安全性的角度考虑,Cookie相对不那么安全。因为Cookie数据存储在客户端,所以他人可以分析并可能进行Cookie欺骗。相比之下,Session数据存储在服务器端,因此更加安全。

再来看性能使用程度,Session会在一定时间内保存在服务器上。当访问量增大时,服务器需要处理更多的Session数据,这可能会增加服务器的负担。而Cookie则主要存储在客户端,对服务器性能的影响较小。因此,从减轻服务器性能负担的角度来看,使用Cookie可能更为合适。

最后,从数据存储大小来看,单个Cookie保存的数据不能超过4K,且很多浏览器都限制一个站点最多保存20个Cookie。而Session数据存储在服务器端,浏览器对其大小没有限制,因此可以存储更多的信息。

7.localstorage和sessionstorage的区别?

  1. 生命周期:localStorage的生命周期是永久的,除非用户或脚本显式地删除数据,否则数据会一直保留在浏览器中。相比之下,sessionStorage的生命周期则与特定的浏览器会话或窗口/标签页相关联。当窗口或标签页被关闭时,sessionStorage中的数据就会被清除。

  2. 作用域:localStorage的作用域是全局的,只要同源(即协议、主机和端口相同),任何页面都可以访问和修改localStorage中的数据。而sessionStorage的作用域则限制在单个窗口或标签页内,不同的窗口/标签页无法共享相同的sessionStorage数据。

  3. 存储大小:localStorage和sessionStorage的存储大小都有限制,但具体大小取决于浏览器。一般来说,它们都能存储相当数量的数据,对于大多数应用来说应该足够了。

  4. 数据格式:localStorage和sessionStorage都只能存储字符串类型的数据。如果你需要存储其他类型的数据(如对象或数组),你需要先将其转换为字符串格式,然后再进行存储。在读取数据时,你需要将字符串转换回原始的数据类型。

8.reduce函数是干嘛用的?

reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值。

这个函数的基本语法如下:

arr.reduce(function(accumulator, currentValue, currentIndex, array) {  
  // 你的代码  
}, initialValue);

参数说明:

  • accumulator(累加器累积器)是累积回调函数的返回值; 它是上一次调用回调时返回的累积值。

  • currentValue(当前值)是数组中正在处理的元素。

  • currentIndex(当前索引)是数组中正在处理的元素的索引。如果提供了 initialValue,则索引为0,否则为1。

  • array(数组)是调用 reduce() 的数组。

  • initialValue(初始值)作为第一次调用 callback 函数时的第一个参数的值。如果没有提供初始值,则将使用数组中的第一个元素。在没有初始值的空数组上调用 reduce 将报错。

    const numbers = [1, 2, 3, 4];  
      
    // 1 + 2 + 3 + 4  
    const sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);  
      
    console.log(sum); // 输出:10

    9.display几个常用的属性是什么?分别有什么作用?

  1. block:当元素的display属性设置为block时,元素会以块级元素的形式显示。块级元素会独占一行,并会在前后自动换行。例如,常见的块级元素有<div><p><h1>等,它们通常用于构建网页的结构。

  2. inline:将元素的display属性设置为inline时,元素会以内联元素的形式显示。内联元素不会独占一行,而是与其他内联元素在一行上显示。常见的内联元素有<span><a><strong>等,它们通常用于包裹文本或内联内容。

  3. inline-block:这个属性值结合了inline和block的特点。设置为inline-block的元素既可以在一行上显示,又能设置宽度和高度等属性。这使得inline-block在布局时具有更大的灵活性。

  4. none:将元素的display属性设置为none时,元素将不会被显示。同时,该元素不会占据页面上的任何空间,就像它从未存在过一样。这是控制元素显示和隐藏的一种方式。

  5. flex:使用flex属性值可以将元素设置为弹性盒模型布局。在这种布局中,子元素(弹性项)可以在父元素(弹性容器)中沿行或列方向进行灵活的排列和对齐。flex布局在现代网页设计中非常常用,它可以帮助开发者实现复杂的布局需求。

  6. grid:grid属性用于创建网格布局,这是一种二维布局系统,可以同时处理行和列。在网格布局中,元素被放置在由行和列创建的单元格中,提供了更大的布局灵活性和控制能力。

10.position的常用属性和作用?

  1. static:这是默认值。元素按照正常流进行布局,不进行任何特殊定位。它会出现在正常的文档流中,忽略任何top、bottom、left、right或者z-index声明。

  2. relative:生成相对定位的元素。这意味着元素会相对于它在正常流中的默认位置进行偏移。通过top、bottom、left、right的设置,可以调整元素的位置。同时,relative定位的元素不会脱离文档流,也不会对其他元素的位置产生影响。另外,relative定位的元素可以设置z-index来改变其层次关系。

  3. absolute:生成绝对定位的元素。这种定位方式会使元素脱离正常的文档流,其位置是相对于最近的已定位父元素(即position属性不是static的元素)进行定位的。如果没有已定位的父元素,那么它会相对于初始包含块进行定位。元素的位置可以通过left、top、right和bottom属性进行精确控制。absolute定位的元素同样可以通过z-index进行层次分级。

  4. fixed:这也是一种绝对定位,但与absolute不同,fixed定位的元素是相对于浏览器窗口进行定位的。无论页面如何滚动,它都会始终位于同一的位置。fixed定位的元素同样脱离文档流,并且其位置可以通过left、top、right和bottom属性进行规定。

  5. sticky:粘性定位,是相对于用户的滚动位置进行定位。一个sticky元素在滚动超过其滚动阈值之前为相对定位,之后为固定定位。目前大多数现代浏览器(除了IE)都支持这种定位方式。

11.盒子模型是什么?如何进行布局的?

盒子模型是CSS技术所使用的一种思维模型,它将网页设计页面中的内容元素看作一个个装了东西的矩形盒子。每个矩形盒子都由内容、内边距、边框和外边距4个部分组成。除去内容部分,其余每个部分又分别包含上、下、左和右4个方向,这些方向既可以分别定义也可以统一定义。

盒子模型的布局主要依赖于水平方向和垂直方向上的属性设置。在水平方向上,盒子的大小以及位置可以通过margin-left、border-left、padding-left、width、padding-right、border-right以及margin-right这7个值来调整。这7个值的总和必须等于其父元素内容区的宽度。当这7个值的和不等于父元素内容区宽度时,浏览器会自动调整某些值以满足这个条件。

12.静态变量和实例变量的区别是什么?

  1. 定义方式:静态变量在定义时前面需要加上static关键字,而实例变量则不需要。

  2. 存储位置:静态变量属于类,也称为类变量。只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间。因此,静态变量可以在不创建对象的情况下,通过类名直接引用。实例变量则属于某个对象的属性,必须创建了实例对象后,其中的实例变量才会被分配空间,才能使用这个实例变量。

  3. 共享性:静态变量是所有对象共有的,某一个对象将其值改变后,其他对象再去获取它,得到的是改变后的值。而实例变量则是每一个对象私有的,某一个对象将其值改变后,不影响其他对象的取值结果,得到的仍是实例变量一开始被赋予的值。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序WXSS全局样式与局部样式的使用教程

微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…

OceanBase 大数据量导入(obloader)

现需要将源数据库&#xff08;Oracle|MySQL等&#xff09;一些表的海量数据迁移到目标数据库 OceanBase 中&#xff0c;基于常规 jdbc 驱动编码的方式涉及开发工作&#xff0c;性能效率也要看编码的处理机制。 OceanBase 官方提供了的 OceanBase Migration Service (OMS) 数据…

Spring Boot框架:英语知识网站构建指南

3系统分析 3.1可行性分析 通过对本英语知识应用网站实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本英语知识应用网站采用SSM框架&#xff0c;JAVA作为开发语…

路由器中继与桥接

一 . 背景 现在的路由器大多数已经开始支持多种网络连接模式&#xff0c;以下将以TP-Link迷你无线路由器为例进行展开介绍。在TP-Link迷你无线路由器上一般有AP&#xff08;接入点&#xff09;模式&#xff0c;Router&#xff08;无线路由&#xff09;模式&#xff0c;Repeate…

Paddle Inference部署推理(一)

一&#xff1a;Paddle Inference推理 简介 Paddle Inference 是飞桨的原生推理库&#xff0c;提供服务器端的高性能推理能力。由于 Paddle Inference 能力直接基于飞桨的训练算子&#xff0c;因此它支持飞桨训练出的所有模型的推理。 Paddle Inference 功能特性丰富&#xff…

前端 vue3 + element-plus + ts 对话框示例

【父组件】&#xff1a;SampleInput.vue&#xff0c;局部代码片段 引入子组件 ApplyItemChooseDialog.vue&#xff0c;定义变量&#xff0c;用于渲染和显示标识 <script>片段代码 import ApplyItemChooseDialog from "/views/accept/ApplyItemChooseDialog.vue&q…

【最优清零方案——贪心+滑动窗口:暴力/线段树/单调队列】

题目 暴力 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1e6 10; int a[N]; int main() {int n, k;cin >> n >> k;ll sum 0;for (int i 1; i < n; i)cin >> a[i], sum a[i];int minn 1e9, pos;ll cnt 0…

Python爬取豆瓣电影全部分类数据并存入数据库

在当今数字化的时代&#xff0c;网络上丰富的影视资源信息吸引着众多开发者去挖掘和利用。今天&#xff0c;我就来和大家分享一段有趣的代码&#xff0c;它能够从豆瓣电影平台获取相关数据并存储到数据库中哦。 结果展示&#xff08;文末附完整代码&#xff09;&#xff1a; 目…

数据结构 ——— 归并排序算法的实现

目录 归并排序的思想 归并排序算法的实现 归并排序的思想 将已经有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;即先使每个子序列有序后&#xff0c;再使子序列段间有序 若将两个有序表合并成一个有序表&#xff0c;称为二路归并 归并排序步骤示意图&#x…

vue2面试题11|[2024-11-25]

1.vue源码-模版解析 <!DOCTYPE html> <html> <head><title></title> </head> <body><div idapp><h1> {{ str }} </h1>{{ str }} </div></body><script type"text/javascript" srcvue.js…

web博客系统的自动化测试

目录 前言测试用例编写自动化脚本测试准备博客登录页相关测试用例登陆成功登录失败 博客首页相关测试用例登陆成功登录失败 博客详情页相关测试用例登录成功登录失败 博客编辑页相关测试用例登陆成功登录失败 编写测试文档测试类型内容 前言 本次测试是运用个人写的一个博客系…

MATLAB矩阵元素的修改及删除

利用等号赋值来进行修改 A ( m , n ) c A(m,n)c A(m,n)c将将矩阵第 m m m行第 n n n列的元素改为 c c c&#xff0c;如果 m m m或 n n n超出原来的行或列&#xff0c;则会自动补充行或列&#xff0c;目标元素改为要求的&#xff0c;其余为 0 0 0 A ( m ) c A(m)c A(m)c将索引…

告别 Kafka,拥抱 Databend:构建高效低成本的用户行为分析体系

用户行为数据埋点指标是数据仓库中不可或缺的重要数据源之一&#xff0c;同时也是企业最宝贵的资产之一。通常情况下&#xff0c;用户行为数据分析包含两大数据源&#xff1a;用户行为分析日志和上游关系型数据库&#xff08;如 MySQL&#xff09;。基于这些数据&#xff0c;企…

WEB攻防-通用漏洞文件上传中间件解析漏洞编辑器安全

中间件文件解析-IIS&Apache&Nginx Web应用编辑器-Ueditor文件上传安全 实例CMS&平台-中间件解析&编辑器引用 Vulhub是一个基于docker和docker-compose的漏洞环境集合&#xff0c;进入对应目录并执行一条语句即可启动一个全新的漏洞环境&#xff0c;让漏洞复现…

【算法day1】数组:双指针算法

题目引用 这里以 1、LeetCode704.二分查找 2、LeetCode27.移除元素 3、LeetCode977.有序数组的平方 这三道题举例来说明数组中双指针的妙用。 1、二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜…

快速理解微服务中Sentinel怎么实现限流

Sentinel是通过动态管理限流规则&#xff0c;根据定义的规则对请求进行限流控制。 一.实现步骤 1.定义资源&#xff1a;在Sentinel中&#xff0c;资源可以是URL、方法等&#xff0c;用于标识需要进行限流的请求&#xff1b;(在Sentinel中&#xff0c;需要我们去告诉Sentinel哪些…

controller中的参数注解@Param @RequestParam和@RequestBody的不同

现在controller中有个方法&#xff1a;&#xff08;LoginUserRequest是一个用户类对象&#xff09; PostMapping("/test/phone")public Result validPhone(LoginUserRequest loginUserRequest) {return Result.success(loginUserRequest);}现在讨论Param("login…

OpenCV截取指定图片区域

import cv2 img cv2.imread(F:/2024/Python/demo1/test1/man.jpg) cv2.imshow(Image, img) # 显示图片 #cv2.waitKey(0) # 等待按键x, y, w, h 500, 100, 200, 200 # 示例坐标 roi img[y:yh, x:xw] # 截取指定区域 cv2.imshow(ROI, roi) cv2.waitKey(0) cv…

【经典】星空主题的注册界面HTML,CSS,JS

目录 界面展示 完整代码 说明&#xff1a; 这是一个简单的星空主题的注册界面&#xff0c;使用了 HTML 和 CSS 来实现一个背景为星空效果的注册页面。 界面展示 完整代码 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8&…

后端:事务

文章目录 1. 事务2. Spring 单独配置DataSource3. 利用JdbcTemplate操作数据库4. 利用JdbcTemplate查询数据5. Spring 声明式事务6. 事务的隔离级别6.1 脏读6.2 不可重复读6.3 幻读6.4 不可重复读和幻读的区别6.5 三种方案的比较 7. 事务的传播特性8. 设置事务 只读(readOnly)9…