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

参加面试被问到的面试题

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

相关文章:

参加面试被问到的面试题

1.在程序中如何开启事务&#xff1f; 在Java中&#xff0c;使用JDBC&#xff08;Java Database Connectivity&#xff09;与数据库交互时&#xff0c;你可以使用Connection对象的setAutoCommit方法来控制事务。默认情况下&#xff0c;autoCommit是开启的&#xff0c;这意味着每…...

第29天:安全开发-JS应用DOM树加密编码库断点调试逆向分析元素属性操作

时间轴&#xff1a; 演示案例&#xff1a; JS 原生开发-DOM 树-用户交互 DOM&#xff1a;文档操作对象 浏览器提供的一套专门用来操作网页代码内容的功能&#xff0c;实现自主或用户交互动作反馈 安全问题&#xff1a;本身的前端代码通过 DOM 技术实现代码的更新修改&#xff…...

react 的路由功能

1. 安装依赖 pnpm add react-router-dom 2. 基本的路由设置&#xff08;BrowserRouter&#xff09; 在 main.tsx 入口文件中使用BrowserRouter组件来包裹整个应用。它会监听浏览器的 URL 变化。 import { StrictMode } from "react";import { createRoot } from …...

SurfaceFlinger学习之一:概览

SurfaceFlinger 是 Android 系统中负责合成和显示屏幕内容的关键系统服务&#xff0c;它运行在一个专用的进程中 (system/bin/surfaceflinger)。它的主要职责是将不同应用程序的绘制内容&#xff08;即窗口或表面&#xff09;组合起来&#xff0c;通过硬件抽象层&#xff08;HA…...

Qt关于窗口一直调用paintEvent的踩坑实录

首先看以下代码&#xff1a; void ItemBlockWidget::paintEvent(QPaintEvent *ev) {// 先调用父类的 paintEvent 以执行默认绘制行为QWidget::paintEvent(ev);qDebug()<<"ItemBlockWidget重绘";QStyleOption opt;opt.initFrom(this);QPainter p(this);style()…...

C++11: STL之bind

C11: STL之bind 引言可调用对象的绑定绑定普通函数绑定静态函数绑定类成员函数绑定仿函数绑定Lambda 占位符std::placeholders的应用嵌套绑定参数重排序结合 STL 算法占位符传递到嵌套函数混合占位符与默认值复杂占位符组合 std::bind的原理std::bind 的设计思路简化实现示例 B…...

在线音乐播放器 —— 测试报告

自动化脚本源代码&#xff1a;Java: 利用Java解题与实现部分功能及小项目的代码集合 - Gitee.com 目录 前言 一、项目简介 1.项目背景 2.应用技术 &#xff08;1&#xff09;后端开发 &#xff08;2&#xff09;前端开发 &#xff08;3&#xff09;数据库 二、项目功能…...

等保测评讲解:安全管理中心

在数字化转型的背景下&#xff0c;网络安全的重要性愈发凸显&#xff0c;而作为中国边疆大省的黑龙江&#xff0c;其网络安全建设更是不可忽视。等保测评&#xff0c;即信息安全等级保护测评&#xff0c;是确保信息系统安全的关键环节。本文将详细讲解黑龙江等保测评中的安全管…...

vue3表单输入相关修饰符使用

在 Vue 3 中&#xff0c;.lazy、.number 和 .trim 是用于 v-model 指令的修饰符&#xff0c;它们可以帮助你在双向绑定时进行特定的处理。 1. .lazy 修饰符 .lazy 修饰符表示只在 input 事件之后触发更新&#xff0c;即输入框的内容发生变化后&#xff0c;只有在用户**失去焦…...

CSS笔记(二)类名复用

这里我通过两张不同位置的卡片来实现效果 代码 <!DOCTYPE html> <html><head><style>/*设置画布*/body{/* 方便排列与对齐*/display: flex; /*画布布满整个窗口*/height: 100vh;/*水平居中*/justify-content: center;/*垂直居中*/align-items: cente…...

TCP三次握手与四次挥手(TCP重传机制,2MSL)超详细!!!计算机网络

本篇是关于3次握手和四次挥手的详细解释~ 如果对你有帮助&#xff0c;请点个免费的赞吧&#xff0c;谢谢汪。&#xff08;点个关注也可以&#xff01;&#xff09; 如果以下内容需要补充和修改&#xff0c;请大家在评论区多多交流~。 目录 1. TCP头部&#xff1a; 2. 三次握手…...

LCR 006. 两数之和 II - 输入有序数组

一.题目&#xff1a; LCR 006. 两数之和 II - 输入有序数组 - 力扣&#xff08;LeetCode&#xff09; 二.我的原始解法-暴力解法超时&#xff1a; class Solution: def twoSum(self, numbers: List[int], target: int) -> List[int]: # 暴力解法 result [] for i in rang…...

网络安全在现代企业中的重要作用

网络安全是这个数字时代最令人担忧的事情之一。对技术的依赖性越来越强&#xff0c;使其同时面临多种网络威胁。其声誉和法律后果的大幅下降可能归因于一次妥协。 这使得良好的网络安全成为所有企业的选择和必需品。本文介绍了网络安全的重要性、企业中常见的网络威胁以及公司…...

关于 EKS Bottlerocket AMI 版本与 Karpenter 配置的说明

问题1: Bottlerocket AMI 版本问题 之前,后端团队发现在使用 Bottlerocket v1.26.2 AMI 版本时,存在某些问题。经过 Bottlerocket 团队调查,此行为是罕见的 race condition 导致的结果。 我们在环境中重现了此状况,并且关注到由于 kubelet device manager 的启动时间晚于 NVI…...

Python实现人生重开模拟器

目录 人生重开模拟器介绍 代码实现 打印初始界面 设置初始属性 设置角色性别 设置角色出生点 针对每一岁&#xff0c;生成人生经历 完整代码 人生重开模拟器介绍 人生重开模拟器 是之前比较火的一个小游戏&#xff0c;我们这里使用 Python 实现一个简化版的 人生重开模…...

java——Spring Boot的配置加载顺序和优先级

Spring Boot的配置加载顺序和优先级是确定应用程序如何读取和应用配置的关键。以下是对Spring Boot配置加载顺序和优先级的详细解释&#xff1a; 一、配置加载顺序 命令行参数&#xff1a; Spring Boot会首先加载命令行中指定的参数。这些参数可以通过在命令行中使用--keyval…...

【21-30期】Java技术深度剖析:从分库分表到微服务的核心问题解析

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Java &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; 文章题目&#xff1a;Java技术深度剖析&#xff1a;从分库分表到微服务的核心问题解析 摘要&#xff1a; 本…...

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色&#xff0c;包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢&#xff1f; 有人会以为所有的内容都统一换了一个 CSS 样式&#xff0c;图片也全换成灰色的了&#xff0c;按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…...

开发一个基于MACOS M1/2芯片的Android 12的模拟器

产品需求&#xff1a;MuMu模拟器Pro_率先适配Apple M系列芯片的安卓模拟器 苹果M芯片专属&#xff1a;产品专为苹果M系列芯片设计&#xff0c;意味着它需要能够充分利用M系列芯片的性能优势。 安卓模拟器&#xff1a;产品是一个安卓模拟器&#xff0c;允许用户在Mac设备上运行…...

Flink 中 JDBC Connector 使用详解

1. 背景 在实时计算或离线任务中&#xff0c;往往需要与关系型数据库交互&#xff0c;例如 MySQL、PostgreSQL 等。Apache Flink 提供了 JDBC Connector&#xff0c;可以方便地将流式数据写入或读取数据库。 本文将介绍 Flink JDBC Connector 的基础用法、配置方法以及注意事…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)

CSI-2 协议详细解析 (一&#xff09; 1. CSI-2层定义&#xff08;CSI-2 Layer Definitions&#xff09; 分层结构 &#xff1a;CSI-2协议分为6层&#xff1a; 物理层&#xff08;PHY Layer&#xff09; &#xff1a; 定义电气特性、时钟机制和传输介质&#xff08;导线&#…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

pikachu靶场通关笔记19 SQL注入02-字符型注入(GET)

目录 一、SQL注入 二、字符型SQL注入 三、字符型注入与数字型注入 四、源码分析 五、渗透实战 1、渗透准备 2、SQL注入探测 &#xff08;1&#xff09;输入单引号 &#xff08;2&#xff09;万能注入语句 3、获取回显列orderby 4、获取数据库名database 5、获取表名…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

解析“道作为序位生成器”的核心原理

解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制&#xff0c;重点解析"道作为序位生成器"的核心原理与实现框架&#xff1a; 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...