参加面试被问到的面试题

news2024/11/28 19:16:46

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue 实现关键字高亮效果

vue 实现关键字高亮效果 这是啥子意思呢&#xff0c;就是类似于百度搜索&#xff0c;根据关键词搜索结果&#xff0c;搜索结果中&#xff0c;与关键词相同的字显示红色&#xff0c;仅此而已&#xff0c;没有什么大的功能。简单写一下demo。 环境 我使用的是 vue3 ts 的语法来…

初始Python篇(7)—— 正则表达式

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a; Python 目录 正则表达式的概念 正则表达式的组成 元字符 限定符 其他字符 正则表达式的使用 正则表达式的常见操作方法 match方法的…

[DL]深度学习_扩散模型正弦时间编码

1 扩散模型时间步嵌入 1.1 时间步正弦编码 在扩散模型按时间步 t 进行加噪去噪过程时&#xff0c;需要包括反映噪声水平的时间步长 t 作为噪声预测器的额外输入。但是最初与图像配套的时间步 t 是数字&#xff0c;需要将代表时间步 t 的数字编码为向量嵌入。嵌入时间向量的宽…

【Linux】网络基本配置命令

一、使用网络配置命令 1.常用网络配置文件 1.1. /etc/hosts “/etc/hosts”文件保存着IP地址和主机名或域名的静态映射关系。当用户使用一个主机名或域名时&#xff0c;系统会在该文件中查找与它对应的IP地址。 [rootlocalhost ~]# cat /etc/hosts 127.0.0.1 localhost l…

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代&#xff0c;小程序以其轻便、无需下载安装即可使用的特点&#xff0c;成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业&#xff0c;小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序&#xff0c;本文将为你提供一个从零开始的详细…

学习threejs,使用设置lightMap光照贴图创建阴影效果

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshLambertMaterial…

【前端】JavaScript中的柯里化(Currying)详解及实现

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 &#x1f4af;前言&#x1f4af;什么是柯里化&#xff1f;&#x1f4af;柯里化的特点&#x1f4af;柯里化的简单示例&#x1f4af;通用的柯里化实现&#x1f4af;柯里化让代码更易读的原因&#x1f4af…

springboot 整合 rabbitMQ (延迟队列)

前言&#xff1a; 延迟队列是一个内部有序的数据结构&#xff0c;其主要功能体现在其延时特性上。这种队列存储的元素都设定了特定的处理时间&#xff0c;意味着它们需要在规定的时间点或者延迟之后才能被取出并进行相应的处理。简而言之&#xff0c;延时队列被设计用于存放那…

Java代码操作Zookeeper(使用 Apache Curator 库)

1. Zookeeper原生客户端库存在的缺点 复杂性高&#xff1a;原生客户端库提供了底层的 API&#xff0c;需要开发者手动处理很多细节&#xff0c;如连接管理、会话管理、异常处理等。这增加了开发的复杂性&#xff0c;容易出错。连接管理繁琐&#xff1a;使用原生客户端库时&…

Django实现智能问答助手-基础配置

设置 Django 项目、创建应用、定义模型和视图、实现问答逻辑&#xff0c;并设计用户界面。下面是一步一步的简要说明&#xff1a; 目录&#xff1a; QnAAssistant/ # 项目目录 │ ├── QnAAssistant/ # 项目文件夹 │ ├── init.py # 空文件 │ ├── settings.py # 项目配…

【ESP32CAM+Android+C#上位机】ESP32-CAM在STA或AP模式下基于UDP与手机APP或C#上位机进行视频流/图像传输

前言: 本项目实现ESP32-CAM在STA或AP模式下基于UDP与手机APP或C#上位机进行视频流/图像传输。本项目包含有ESP32源码(arduino)、Android手机APP源码以及C#上位机源码,本文对其工程项目的配置使用进行讲解。实战开发,亲测无误。 AP模式,就是ESP32发出一个WIFI/热点提供给电…

从〇开始深度学习(0)——背景知识与环境配置

从〇开始深度学习(0)——背景知识与环境配置 文章目录 从〇开始深度学习(0)——背景知识与环境配置写在前面1.背景知识1.1.Pytorch1.2.Anaconda1.3.Pycharm1.4.CPU与GPU1.5.整体关系 2.环境配置2.1.准备工作2.1.1.判断有无英伟达显卡2.1.2.清理电脑里的旧环境 2.1.安装Anaconda…

mac下Gpt Chrome升级成GptBrowser书签和保存的密码恢复

cd /Users/自己的用户名/Library/Application\ Support/ 目录下有 GPT\ Chrome/ Google/ GptBrowser/ GPT\ Chrome 为原来的chrome浏览器的文件存储目录. GptBrowser 为升级后chrome浏览器存储目录 书签所在的文件 Bookmarks 登录账号Login 相关的文件 拷贝到GptBrow…

圆域函数的傅里叶变换和傅里叶逆变换

空域圆域函数的傅里叶变换 空域圆域函数&#xff08;也称为空间中的圆形区域函数&#xff09;通常指的是在二维空间中&#xff0c;以原点为中心、半径为 a a a的圆内取值为1&#xff0c;圆外取值为0的函数。这种函数可以表示为&#xff1a; f ( x , y ) { 1 if x 2 y 2 ≤ …

Java基础——类型转化(强制转化)

目录 1.数字间的类型转换 &#xff08;1&#xff09; 隐式类型转换 &#xff08;2&#xff09;显式类型转换&#xff08;强制类型转换&#xff09; 2.类对象间的强制转换 &#xff08;1&#xff09; 向上转型 &#xff08;2&#xff09; 向下转型 将一个类型强制转换成另…

数据结构C语言描述5(图文结合)--广义表讲解与实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法&#xff1b;有C基础即可跟着学习&#xff0c;代码均可运行&#xff1b;准备考研的也可跟着写&#xff0c;个人感觉&#xff0c;如果时间充裕&#xff0c;手写一遍比看书、刷题管用很多&#xff0c;这也是本人采用纯C语言…

23种设计模式-装饰器(Decorator)设计模式

文章目录 一.什么是装饰器设计模式&#xff1f;二.装饰器模式的特点三.装饰器模式的结构四.装饰器模式的优缺点五.装饰器模式的 C 实现六.装饰器模式的 Java 实现七.代码解析八.总结 类图&#xff1a; 装饰器设计模式类图 一.什么是装饰器设计模式&#xff1f; 装饰器模式&…

构建英语知识网站:Spring Boot框架解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

数据结构之数组与链表的差异

一、数组 数组&#xff08;Array&#xff09;是由相同类型的元素&#xff08;element&#xff09;的集合所组成的数据结构&#xff0c;分配一块连续的内存来存储。利用元素的索引&#xff08;index&#xff09;可以计算出该元素对应的存储地址。最简单的数据结构类型是一维数组…

RabbitMQ7:消息转换器

欢迎来到“雪碧聊技术”CSDN博客&#xff01; 在这里&#xff0c;您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者&#xff0c;还是具有一定经验的开发者&#xff0c;相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导&#xff0c;我将…