放下洒脱,活出勇气 -java面试我来了-(数据库和Spring篇)

事先说明

老师要求我们记面试题-基础篇开始背-五一作业😂😂😂😂

基础重要呀~~~~~复习是必须得-~~~~fighting😁😁 

如果有大佬--请不要太在意细节-我的水平有限

开始我们的复习之路----🚀🚀🚀🚀🚀

目录

事先说明

数据库

数据库和数据库管理系统是什么

什么是数据库约束,列举常见的约束

MySQL中外键约束有哪些级联动作 详细说明

数据中常见的聚合函数

解释一下MySQL中的分页查询以及用法

什么是SQL语句注入攻击?如何防范?

请简要介绍JDBC,并说明它的作用

JDBC中的四大对象分别是哪些,它们的分别的作用是什么

请简要介绍数据库连接池,以及它的作用和优点

​编辑

Spring

简述 Ioc以及主要实现方式

请简要说明Spring bean的生命周期

@Autowired和@Resource注解的区别

MVC的设计理念

 Spring MVC常用注解有哪些?有什么作用

Spring MVC 的处理流程

Spring 常用注解由哪些? 都有什么用

什么是全局异常处理器?在Spring中使用什么注解实现

MyBatis中#{}和${}的区别

MyBatis如何防止SQL语句注入

JDBC与Mybatis的区别,JDBC为什么效率比MyBatis快

什么是Knife4j(可能会问)

Knife4j常用注解有哪些?

说明@Slf4j注解的作用,以及日志级别说明?

Spring Validation 常用注解有哪些 

如何在Spring MVC 中进行表单提交时的参数校验?

HTTP 请求结构



数据库

难度等级 简单

数据库和数据库管理系统是什么

要点: 数据的集合 管理数据的系统

数据库: 是管理数据的仓库,根据某种数据模型进行组织,并存放到计算机存储设备的数据集合

数据库管理系统  :是位于操作系统和用户之间的专门进行数据库管理的软件系统 常见有 Oracle, MySQL, SQL server, MongoDB

难度 一般

什么是数据库约束,列举常见的约束

要点 :限制数据

定义 : 保证数据完整性 一致性 有效性的规则 可以限制无效数据进入数据库中,从数据库层面上提供了"安检"

约束:  非空约束 NOT NULL 要求字段的值不为空  唯一约束 unique 要求字段的值必须唯一

主键约束: 要求字段作为主键 非空 唯一 默认约束 默认情况下一般 使用行自增  AUTO_INCREMENT

MySQL中外键约束有哪些级联动作 详细说明

第一种级联动作 RESTRICT 默认的级联动作 ,当主表删除数据时,如果从表中有相关的数据则不允许删除,当组别更新字段的值时,从表中有相关的数据则不被允许更新

 记忆 主表变从表阻止(RESTRICT)

第二种级联动作 CASCADE 级联删除级更新,当主表删除数据时,如果从表中有相关联的数据则从表中的数据会一起删除,当主表更新主键字段值时,如果从表中有相关联的数据则外键字段值也会随之更新

记忆  主表变从表一起变(CASCADE)

第三种级联动作 SET NULL 设置为空值,当主表删除数据时,从表中相关联的外键字段值会设置为NULL,当主表更新字段值时,从表中相关联数据的外键字段值也会设置为Null

记忆  主表变从表变空值(SET NULL)

数据中常见的聚合函数

要点:计算数据集合的统计值的函数

聚合函数 :用于计算数据集合的统计值的函数

见名知意 

模版 计算数据集合中的XXXXX

COUNT计算数据集合中的记录数
SUM计算数据集合中的某个字段值的总和
AVG计算数据集合中的某个字段值的平均值
MAX计算数据集合中的某个字段值的最大值
MIN计算数据集合中的某个字段值的最小值

解释一下MySQL中的分页查询以及用法

要点: 查询结果集分页显示  Limit m n

定义: MySQL中的分页查询是指在查询一张表的时候,将查询结果分为多页,将按照指定的每页数量和页码返回查询结果

运用场景: 查询结果比较多的时候,减轻服务器的负担和提高查询效率

计算公式 Limit m n

m 为查询结果集的偏移量(跳过多少条), n 为每页返回的记录数

m 计算公式 (当前页码-1)*n

什么是SQL语句注入攻击?如何防范?

要点: 数据合法性过滤不严

SQL语句注入:     是对用户输入的数据合法性过滤不严或者没进行校验,攻击者可以在web应用程序中将原本的SQL语句末尾添加一些恒成立的语句,在管理员不知情的情况下,访问器数据库的数据,给原本的服务端增加了查询压力,容易造成用户数据丢失以及外泄.

防范措施:执行查询语句前做好SQL语句注入检查,使用JDBC中的preparedStatement预编译SQL语句来避免SQL语句注入

请简要介绍JDBC,并说明它的作用

要点: API接口 面向对象的方式 

JDBC是java语言中的访问数据库中的标准API,它提供了一组接口和类,使得java应用程序可以与各种关系型数据库进行通信,JDBC的主要作用是简化数据库编程,使得java程序员可以面向对象的方式来操作数据库,实现数据查询,更新 ,删除等操作

JDBC中的四大对象分别是哪些,它们的分别的作用是什么

要点 Connection 连接 Statement 状态  PreparedStatement 预编译 ResultSet 结果集

Connection表示与数据库的物理连接,并提供了数据库的方法
Statement用于执行静态SQL语句并返回结果
PreparedStatement用于执行预编译SQL语句并返回结果
ResultSet用于执行SQL查询后返回的结果集

请简要介绍数据库连接池,以及它的作用和优点

要点: 备用连接 提高性能  

数据库连接池是一种资源池,它负责管理多个数据库连接,并在需要时为应用程序提供连接,它的作用是为应用程序提供高效的数据库连接,避免因频繁建立和关闭数据库连接而导致的性能问题,连接池通常采用预创建的连接方式,即在应用程序启动时就创建一定数量的数据连接,并将其保存在连接池中,当应用程序启需要连接数据库时,直接从连接池中获取连接对象即可,使用完毕将连接返回给连接池而不是关闭连接.

优点:提高了应用程序的性能,可扩展性,和灵活性,但需要占用一定的资源

Spring

难度 简单

简述 Ioc以及主要实现方式

要点 框架或者容器管理对象之间的依赖关系 依赖注入 

Ioc 控制反转 是一种软件设计思想,由应用程序代码通过它将对象创建,管理,依赖注入等控制权交给框架或者容器实现 ,Ioc的核心思想在于让框架或者容器管理对象之间的依赖关系,而不是应用程序代码来控制这张依赖关系.

实现方式 主要由依赖注入 依赖注入是将对象的依赖关系通过构造函数,Setter方法或者成员变量等方式注入到对象中,使得这些对象在被创建是能够直接获得它们所需的依赖

请简要说明Spring bean的生命周期

要点 实例化阶段 属性赋值阶段 初始化阶段 使用阶段 销毁阶段

实例化阶段(bean对象被创建)可以通过构造方法完成
属性赋值可以同个set方法完成
初始化阶段在属性注入完成后,容器会对bean进行一些初始化操作
使用阶段初始化阶段完成后 bean就可以被容器使用了
销毁阶段

容器在关闭后会对所有的bean进行销毁操作,释放资源

@Autowired和@Resource注解的区别

要点 使用位置 按什么匹配装配

共同点:可以自动装配spring bean的注解 

@Autowired@Resource
默认按照类型匹配装配bean默认按照名称匹配装配bean
Spring Framwork的注解JAVA的注解
使用required属性来指定是否必须装配bean没有其属性
通过@Qualifier注解来指定要装配的bean名称或ID没有其功能
可以放置在构造方法 Setter方法,字段,方法上Setter方法 和字段

MVC的设计理念

要点  M (model) V(view) C(controller)

MVC设计理念 是一种使用MVC设计创建Web应用程序的模式

M(model)表示应用程序核心,处理应用程序数据
V(view)显示数据
C(controller)处理输入与交互流程

 Spring MVC常用注解有哪些?有什么作用

@ResponseBody添加在方法上,添加在类上响应正文(用于显示在web前端)
@RestController添加类上

为组合注解 是 @ResponseBody和@Controller 

响应正文的控制器

@RequestMapping添加类上,添加方法上用于配置请求路径

@GetMapping

添加在方法上用于限制请求方式为GET的@RequestMapping
@PostMapping添加在方法上用于限制请求方式为POST的@RequestMapping
@DeleteMapping添加在方法上用于限制请求方式为DELETE的@RequestMapping
@PutMapping添加在方法上用于限制请求方式为PUT的@RequestMapping
@PathVariable添加在请求参数上用于标记词参数的值来自于URL的占位符
@RequestBody添加在请求参数上用于标记词参数必须是对象格式的参数(接受前端传来的数据)
@ExceptionHandler添加在方法上用于标记词方法是处理异常的方法 
@ControllerAdvice添加在类上用于标记此类中的特定方法将作用于每次处理请求的过程中
@RestControllerAdvice添加在类上组合注解 @Controller和@Response的注解

Spring MVC 的处理流程

要点 看下面流程图

 客户端发送请求到前端控制器DispatcherServlet

 DispatcherServlet收到请求后,调用处理器映射器HandlerMapping

HandlerMapping根据请求URL找到具体的Controller

Controller处理请求,并返回ModelAndView 其中的View只是视图名 ,并不指定具体的视图组件

DispatcherServlet通过ViewResolver(视图解析器)确定负责显示数据的具体View

DispatcherServlet对View进行渲染视图(即将Model填充至视图组件中),并将完善的视图响应到客户端

原图 

亿图图示icon-default.png?t=N7T8https://www.edrawmax.cn/online/share.html?code=4173096c07ce11ef9109ebf0f0121b46

Spring 常用注解由哪些? 都有什么用

要点 : 特别常用 Component Controller Autowired Value

注意答题顺序 这边可以从添加位置说起  类-属性

@ComponentScan添加在配置类上组件扫描,配置包内扫描其配置包和子孙包
@Component添加在类上标记此类是组件类
@Controller添加在类上标记此类是控制器组件类
@Service添加在类上标记此类是业务逻辑组件类
@Repository添加在类上标记此类是数据访问组件类
@Configuration添加在类上标记该类是配置类
@Autowired

添加在属性上,构造方法,

Setter方法上

Spring自动装配(属性,构造方法,Setter方法)
@Qualifier添加在属性上,方法参数上配合自动装配,指定装配的Spring Bean的名称
@Scope添加在组件类上指定作用域
@Value添加在属性上,被Spring调用的方法参数上读取Environment的属性值
@Resource添加在属性上使得Spring自动装配属性的值

什么是全局异常处理器?在Spring中使用什么注解实现

要点  全局处理机制 @ControllerAdvice 类上 @ExceptionHandler方法上

全局异常处理群殴是一种处理异常的机制,它可以用于统一处理应用程序的未处理异常,

全局异常处理器可以捕获并处理应用程序中的所有异常,避免类音为异常未处理而导致程序崩溃或者异常信息暴露给程序用户

在Spring框架中,使用@ControllerAdvice注解 配合@ExceptionHandler注解实现

MyBatis中#{}和${}的区别

要点 #{}预编译处理 ${}直接传参

MyBatis中的#{}和${}都是用来替换SQL语句中的参数 

#{}预编译处理 将传入的参数替换成占位符(?),对参数进行类型安全检查.防止SQL语句注入攻击.

${}只是将传入的参数替换到SQL语句中,不会对参数处理,存在SQL语句注入风险

底层   #{}是PreparedStatement的setxxx方法设置的,可以防止SQL注入攻击

          ${} 的参数值是直接拼接到SQL语句中,容易受到SQL语句注入风险

MyBatis如何防止SQL语句注入

要点 使用#{} SQL预编译

使用#{} SQL语句预编译处理,能够防止SQL语句注入,

而使用${}直接SQL语句拼接,存在SQL语句注入的风险,必须使用正则表达式对${}的参数值进行检查

JDBC与Mybatis的区别,JDBC为什么效率比MyBatis快

要点  MyBatis 采用反射映射 代码简洁      JDBC  java数据库API  代码繁琐

JDBC是java提供的数据库API,JDBC主要问题在于:编译工作量相对繁琐,模块化的代码太多

MyBatis是基于JDBC实现的,能够通过反射将JDBC与java对象映射,基本不用写JDBC代码

由于采用了反射进行映射,所有性能比JDBC慢

什么是Knife4j(可能会问)

要点 文档生成工具 

Knife4j是基于SpringBoot构建的一个文档生成工具 它可以为开发者我们应用生成API文档,目的可以是更加方便的基于API文档进行测试,生成的文档还可以导出,然后给前端开发团队,前端开发团队可以基于API接口写具体的调用

Knife4j常用注解有哪些?

要点 主要是方便了解参数的用意 制作Api文档

@Api添加在控制器类上修改原本控制器的名称
@ApiOperation添加在控制器类上修改原本配置方法的名称
@ApiModelProperty添加在POJO类上的属性标明某个属性的说明 (Value名称 required 是否必要 example 举例)
@ApiImplicitParam添加在控制器类中的处理请求方法标明配置非封装的参数的说明
@ApiImplcitParams添加在控制器类中的处理请求方法标明多个非封装的参数的说明
@ApiIgnore添加在处理请求的方法的参数用于表示Api文档框架应该忽略次参数

说明@Slf4j注解的作用,以及日志级别说明?

要点 生成一个日志对象 TRACE DBUG INFO WARN ERROR

@Slf4j注解可以在类上中生成一个日志对象,用于记录程序运行过程中的信息,使用日志注解的好处是 可以让我们不用手动创建日志对象,降低代码复杂度,提高开发效率

日志级别

TRACE最低日志级别 非常详细的日志信息 调试时使用
DEBUG

调试级别日志信息 输出有用的调试信息

用于判断应用程序是否按预期工作

INFO

默认级别日志信息 了解应用程序的进程 

通常记录应用程序的启动和关闭以及重要事件

WARN警告级别日志信息 不影响应用程序进行,需要待观察
ERROR

错误级别日志信息 应用程序假死或者无法运行情况

需要查明并立即解决

Spring Validation 常用注解有哪些 

要点 自己看着答

@NotNull验证对象是否为null
@NotEmpty验证字符串类型是否为空,不包括空格,tab键
@NotBlank验证字符串类型是否为空,包括空格,tab键
@Min验证数字是否大于等于指定的最小值
@Max验证数字是否小于等于指定的最大值
@Size验证字符串,集合,或者数组是否在指定范围内

如何在Spring MVC 中进行表单提交时的参数校验?

 要点 :使用注解@Valida进行校验 在Controller中的方法参数前加@Valida

HTTP 请求结构

 要点 : 一个HTTP 请求报文包括 :请求行 请求头部 空行 请求数据

GET和POST的区别

GET方式是通过请求行传递用户所输入的内容,其内容会全部显示的浏览器的地址栏中

特点 获取服务器中的数据

POST方式通过HTTP消息体传递用户输入的内容并发送到服务器端

特点 向服务器传递数据

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

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

相关文章

【Spring 】Spring MVC 入门Ⅱ

Spring MVC 入门Ⅱ 一、接收Cookie / Session 这两者都是用来保存用户信息的,但不同的是: Cookie存在客户端 Session存在服务器 Session产生时会生成一个唯一性的SessionID,这个SessionID可以用于匹配Session和Cookie SessionID可以在Cooki…

如何将安卓手机投屏到Windows 10电脑上

诸神缄默不语-个人CSDN博文目录 我之所以要干这个事是为了用手机直播的时候在电脑上看弹幕…… 文章目录 1. 方法一:直接用Win10内置的投影到此电脑2. 方法二:用AirDroid Cast投屏到电脑上 1. 方法一:直接用Win10内置的投影到此电脑 在设置…

Android 音视频播放器 Demo(二)—— 音频解码与音视频同步

音视频编解码系列目录: Android 音视频基础知识 Android 音视频播放器 Demo(一)—— 视频解码与渲染 Android 音视频播放器 Demo(二)—— 音频解码与音视频同步 RTMP 直播推流 Demo(一)—— 项目…

【跟马少平老师学AI】-【神经网络是怎么实现的】(七-2)word2vec模型

一句话归纳: 1)CBOW模型: 2c个向量是相加,而不是拼接。 2)CBOW模型中的哈夫曼树: 从root开始,向左为1,向右为0。叶子结点对应词有中的一个词。每个词对应唯一的编码。词编码不等长。…

Flask表单详解

Flask表单详解 概述跨站请求伪造保护表单类把表单渲染成HTML在视图函数中处理表单重定向和用户会话Flash消息 概述 尽管 Flask 的请求对象提供的信息足够用于处理 Web 表单,但有些任务很单调,而且要重复操作。比如,生成表单的 HTML 代码和验…

matlab例题大全

1.第1章 MATLAB系统环境 1.1 注:plot函数为画图函数。例plot(x1,y1,:,x2,y2,*); 1.2 注:root为求根函数。p为方程变量前面系数矩阵。 1.3 注: 2*x3y-1*z 2; 8*x2*y3*z 4; 45*x3*y9*z 23 求:x,y,z的…

第十二章 案例二:配置Trunk,实现相同VLAN的跨交换机通信

1、实验环境 公司的员工人数已达到 100 人,其网络设备如图12.13所示,现在的网络环境导致广播较多网速慢,并且也不安全,公司希望按照部门划分网络,并且能够保证一定的网络安全性 图12.13 实验案例二拓扑图 其网络规划…

C++从入门到精通——string类

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

【多模态】29、OCRBench | 为大型多模态模型提供一个 OCR 任务测评基准

文章目录 一、背景二、实验2.1 测评标准和结果2.1.1 文本识别 Text Recognition2.1.2 场景文本中心的视觉问答 Scene Text-Centric VQA2.1.3 文档导向的视觉问答 Document-Oriented VQA2.1.4 关键信息提取 Key Information Extraction2.1.5 手写数学公式识别 Handwritten Mathe…

Bert基础(二十一)--Bert实战:文本摘要

一、介绍 1.1 文本摘要简介 文本摘要(Text Summarization),作为自然语言处理(NLP)领域的一个分支,其核心目标是从长篇文档中提取关键信息,并生成简短的摘要,以提供对原始内容的高度…

Unity---版本控制软件

13.3 版本控制——Git-1_哔哩哔哩_bilibili Git用的比较多 Git 常用Linux命令 pwd:显示当前所在路径 ls:显示当前路径下的所有文件 tab键自动补全 cd:切换路径 mkdir:在当前路径下创建一个文件夹 clear:清屏 vim…

linux内核源码分析--核心网络文件和目录

图3-2显示了在/proc/sys中由网络代码所使用的主要目录,就每个目录而言,都列出了在哪一章描述其文件。 proc/sys/net bridge ipv4 core route neigh conf 图3-2/proc/sys/net 中的核心目录 根据前借所述,我们来看net中的树根是如何定义的&…

LeetCode 面试经典150题 28.找出字符串中第一个匹配项的下标

题目:给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 思路:暴力(…

大学生上班族必备!九个线上兼职秘籍,让你远离失业风险

互联网时代,兼职新风尚:这些靠谱兼职让你轻松增收 随着互联网技术的飞速发展,兼职工作已成为许多人增加收入、提升自我能力的新选择。本文将为您揭秘一些适合大学生和上班族的靠谱兼职工作,助您轻松找到适合自己的兼职机会。 一…

新的项目springboot

buybuyshenglombok <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency> 添加依赖 lombok package com.example.demo.pojo;import lombok.AllArgsConstructor; import lombok.Data; import …

二维泊松方程(Neumann+Direchliet边界条件)有限元Matlab编程求解|程序源码+说明文本

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《有限元编程从入门到精通》本专栏旨在提供 1.以案例的形式讲解各类有限元问题的程序实现&#xff0c;并提供所有案例完整源码&#xff1b;2.单元…

ELK Stack 8 接入ElasticFlow

介绍 Netflow v5 / v9 / v10&#xff08;IPFIX&#xff09;&#xff0c;支持大部分网络厂商及VMware的分布式交换机。 NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图&#xff0c;记录下每个TCP/IP事务的信息。当汇集起来时&#xff0c;它更加易于管理和易读。…

Git系列:config 配置

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Flutter笔记:Widgets Easier组件库(3)使用按钮组件

Flutter笔记 Widgets Easier组件库&#xff08;3&#xff09;&#xff1a;使用按钮组件 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddre…

xLua背包实践

准备工作 环境&#xff0c;代码 在C#代码方面我们需要准备单例模式基类&#xff0c;AB包管理器&#xff0c;lua解析器管理器 详情请见AB包管理器 xlua详解 然后是Xlua包和AB包&#xff0c;具体导入方法也在上面的链接中 然后是lua的三个文件 具体代码&#xff1a; JsonUtil…