-
在Web标准中指出,一个网页由几个部分组成,各自的职责是什么? 顺便说说常见的HTML标签及其作用。
- 组成:HTML,CSS,JS
- 常见标签:html(根标签)、head(元数据)、body(内容)、div(块容器)、p(段落)、a(链接)、img(图片)、ul/li(列表)、table(表格)等。
-
CSS的引入方式有几种,各自有什么区别? CSS中的元素选择器、ID选择器、类选择器的写法?这三个选择器的优先级是什么样的?
引入方式:
- 内联样式(style属性,优先级最高,仅作用于当前元素);
- 内部样式(标签,作用于当前页面);
- 外部样式(link引入.css 文件,作用于整个网站,便于维护)。
选择器
- 元素选择器(tag,如p{});
- ID 选择器(#id,如#box{});
- 类选择器(.class,如.red{})。
- 优先级:ID 选择器 > 类选择器 > 元素选择器
-
form表单提交时,使用GET和POST提交方式各自的特点是什么?有什么区别 ?
- GET:参数拼在 URL 后(可见,长度有限),用于查询。
- POST:参数在请求体(不可见,长度不限),用于提交数据(如表单)。
-
在JS中事件监听的语法是什么样的?常见的事件类型有哪些,请详细说明?
- (1)语法:元素.on事件名=函数 或 元素. addEventListener ('事件名', 函数) 。
- (2)常见事件:click(点击)、input(输入)、load(页面加载)、submit(表单提交)、mouseover(鼠标悬停)、keyup、keydown...
-
什么是DOM,在JS中获取DOM对象的方式有哪些,之间的区别是什么,请详细说明?
- DOM:文档对象模型 ( Document Object Model ) ,将 HTML 解析为树状结构的对象。
- 获取方式:
- getElementById(通过 ID,唯一);
- getElementsByClassName(通过类名,返回集合);
- getElementsByTagName(通过标签名,返回集合);
- querySelector(CSS 选择器,返回第一个);
- querySelectorAll(CSS 选择器,返回所有)。
-
聊一聊Vue中常用的指令有哪些,以及具体的作用? v-if 和 v-show指令的区别是什么?
- 常用 指令:v-model(双向绑定)、v-for(循环)、v-bind(属性绑定,简写:)、
- v-on(事件绑定,简写@)、v-if/v-show(条件显示)。
- 区别:v-if 动态增删 DOM(初始隐藏无渲染);v-show 仅切换display属性(始终渲染)。
-
Maven中有哪几类仓库,如果要在项目中引入一个依赖,依赖的查找顺序是什么样的? 什么是坐标,坐标由那几个部分组成。
- (1)仓库类型:本地仓库、远程仓库(中央仓库、私服、其他公共仓库)。
- (2)查找顺序:本地仓库 → 远程仓库。
- (3)坐标:groupId(组织标识)、artifactId(项目标识)、version(版本)。
-
Maven的生命周期分为那几套? 我们核心关注的5个生命周期阶段是哪5个,具体的作用是什么?
- 三套生命周期:clean(清理)、default(构建,核心)、site(站点生成)。
- 核心阶段:
validate(验证)、compile(编译)、test(测试)、package(打包)、install(安装到本地仓库)。
-
Maven的依赖范围是做什么用的? 常见的取值有哪些? 如何设置依赖的作用范围?
- 作用:控制依赖在不同生命周期的可用性。
- 常见取值:
compile(默认,全生命周期可用)、provided(编译和测试可用,如 servlet-api)、runtime(运行和测试可用,如 JDBC 驱动)、test(仅测试可用)。 - 设置:在
<dependency>中通过<scope>指定。
-
什么是HTTP协议? HTTP协议具有什么样的特点,请详细说明?
- 定义:超文本 传输协议,客户端与服务器的通信规则,基于 ****TCP 的应用层协议。
- 特点:无状态(不记忆连接)、请求 - 响应模式、可基于 HTTPS 加密、支持多种方法(GET/POST 等)。
-
HTTP协议中请求协议的数据格式 及 响应协议的数据格式, 请详细说明 ?
- 请求:请求行(方法、URL、版本)、请求头(键值对,如
Content-Type)、请求体(POST 数据)。 - 响应:状态行(版本、状态码、描述)、响应头(如
Set-Cookie)、响应体(返回数据)。
- 请求:请求行(方法、URL、版本)、请求头(键值对,如
-
HTTP的状态码分为哪几类,分别表示什么意思 , 请详细说明? 请说出几个常见的状态码 及 含义?
- 分类:1xx(信息)、2xx(成功,如 200)、3xx(重定向,如 302)、4xx(客户端错误,如 404 未找到、401 未授权)、5xx(服务器错误,如 500)。
-
请按照你的理解说说什么是控制反转IOC (反转的是什么,反转之前什么样,反转之后什么样),以及什么是依赖注入 DI?
- IOC(控制反转):将对象创建权从代码转移到容器,反转依赖关系的控制。反转前:手动
new对象;反转后:容器注入,解耦。 - DI(依赖注入):IOC 的实现方式,容器在运行时将依赖对象注入到目标对象中。
- IOC(控制反转):将对象创建权从代码转移到容器,反转依赖关系的控制。反转前:手动
-
请详细描述 @ResponseBody 注解的作用? 我们在编写Controller类的代码时,为什么没有使用该注解呢?
- 作用:将方法返回值直接作为响应体(如 JSON),而非跳转视图。
- 未使用场景:Controller 类标注
@RestController(包含@ResponseBody)。
-
请详细描述一下,什么是约束?常用的约束有哪些,对应的关键字是什么,各自的应用场景?
- 作用:保证数据完整性。
- 常见约束:
PRIMARY KEY(主键,唯一非空)、FOREIGN KEY(外键,关联其他表)、UNIQUE(唯一)、NOT NULL(非空)、CHECK(自定义条件)、DEFAULT(默认值)。
-
请详细描述char与varchar的区别? 以及在设计表时,该如何选择?
- 区别:
char(固定长度,如char(10),不足补空格,查询快);varchar(可变长度,存储实际长度 + 1 字节,省空间)。 - 选择:固定长度用
char(如手机号);长度可变用varchar(如姓名)。
- 区别:
-
DQL语句分组查询时,where,group by,having之间的执行顺序是什么样的? where 与having的区别是什么?
- 顺序:
where(分组前过滤,不能用聚合函数)→group by(分组)→having(分组后过滤,可用聚合函数)。 - 区别:
where过滤行,having过滤组。
- 顺序:
-
Mybatis的映射配置文件定义的规范是什么 ? 项目开发中,你们的SQL是基于注解方式开发的还是XML映射配置文件开发的。
- 规范:namespace 与 Mapper 接口全类名一致;
id与接口方法名一致;参数 / 返回值类型匹配。 - 开发方式:XML(复杂 SQL,易维护)或注解(简单 SQL,如
@Select)。
- 规范:namespace 与 Mapper 接口全类名一致;
-
Mybatis 中的 # 与 $ 的区别是什么 ?实际开发中推荐用哪个? 为什么 ?
- 区别:
#预编译(参数占位符,防注入);$字符串拼接(直接替换,有注入风险)。 - 推荐:
#,除非需动态拼接表名 / 列名(如排序字段)。
- 区别:
-
请详细描述一下 @RequestParam , @RequestBody , @PathVariable 注解的作用和应用场景 ?具体的使用细节也描述一下?
@RequestParam:获取 URL 参数(?name=xxx),可指定required(是否必传)defaultValue。@RequestBody:获取请求体 JSON 数据(适用于 POST,绑定到对象)。@PathVariable:获取 URL 路径参数(如/user/{id}中的id)。
-
请描述一下什么Rest风格的url,涉及到哪些请求方式,这几种情况方式分别描述什么操作?
- 特点:用 URL 表示资源,HTTP 方法表示操作。
- 方法对应:GET(查询)、POST(新增)、PUT(全量更新)、DELETE(删除)、PATCH(部分更新)。
-
请描述一下 @RequestBody 注解 与 @ResponseBody 注解的作用 ? 什么时候用 @ResponseBody , 什么时候用 @RequestBody?
@RequestBody:接收请求体数据(如 JSON),用于 POST/PUT 等。@ResponseBody:将返回值作为响应体(如 JSON),用于 API 接口。
-
在数据库表结构设计时, 有哪几种多表关系 ? 在数据库中, 如何维护这层多表关系 ?
- 关系:一对一(如用户 - 身份证,共享主键或外键唯一)、一对多(如部门 - 员工,多方加外键)、多对多(如学生 - 课程,中间表存双方主键)。
- 维护:通过外键或中间表关联。
-
请详细描述内连接和外连接的区别? 外连接中左外和右外的区别?
- 内连接:只返回匹配的行。
- 外连接:返回匹配行 + 未匹配行(左外:左表全显,右表匹配;右外:右表全显,左表匹配)。
-
请详细说明一下, 分页查询的原理 ? (从前端传递的参数 , 后端执行的SQL, 后端返回的数据层面来说明)
- 前端:传递
page(页码)、pageSize(每页条数)。 - 后端 SQL:
limit (page-1)*pageSize, pageSize(MySQL)。 - 返回数据:总条数、当前页数据、总页数等。
- 前端:传递
-
请说明什么是事务? 在数据库中如何控制事务,控制事务的SQL语句 ? 以及事务的四大特性 ?请详细聊聊在项目开发中,你们的事务是如何控制的 ?
- 定义:一组不可分割的 SQL 操作,要么全成,要么全败。
- 控制 SQL:
start transaction(开始)、commit(提交)、rollback(回滚)。 - 四大特性:ACID(原子性、一致性、隔离性、持久性)。
- 项目控制:Spring 中用
@Transactional注解声明事务。
-
请描述Mybatis中动态SQL的使用场景 , 以及 标签 , 标签的具体作用 ?
- 场景:条件查询、动态拼接 SQL(如多条件筛选)。
<if>:条件判断,满足则拼接内容(如where id = #{id})。<where>:自动处理多余and/or,包裹<if>。
-
文件上传前端页面三要素是哪三个要素 ? 在spring框架中在服务端如何接收上传上来的文件?
- 前端三要素:
method="post"、enctype="multipart/form-data"、<input type="file">。 - 后端接收:用
MultipartFile参数接收,如public String upload(MultipartFile file)。
- 前端三要素:
-
聊聊Mybatis中常见的动态SQL的标签有哪些,这些标签的作用和使用场景是什么?
<if>:条件拼接;<where>:优化 where 子句;<foreach>:循环(如in条件);<set>:更新时处理逗号;<choose>/<when>/<otherwise>:多条件分支。
-
如何定义一个全局异常处理器 ? 全局异常处理器中是否可以定义多个方法来捕获不同类型的异常 ?
- 全局异常处理器:类标注
@RestControllerAdvice,方法用@ExceptionHandler指定捕获的异常类型。 - 可定义多个方法,分别捕获
NullPointerException、自定义异常等。
- 全局异常处理器:类标注
-
介绍一下在MySQL数据库中你经常使用的函数 ,及其作用?
COUNT()(计数)、SUM()(求和)、MAX()/MIN()(最大 / 小值)、DATE_FORMAT()(日期格式化)、CONCAT()(字符串拼接)、IFNULL()(空值处理)。
-
会话跟踪技术Cookie 与 Session 各自的原理是什么 ? 各自有什么优缺点?
- 原理:Cookie 存储在客户端(键值对,随请求发送);Session 存储在服务器,通过 Cookie 的
JSESSIONID关联。 - 优缺点:Cookie(轻量,易被篡改,大小限制4KB);Session(安全,服务器存储,占用资源)。
- 原理:Cookie 存储在客户端(键值对,随请求发送);Session 存储在服务器,通过 Cookie 的
-
JWT令牌由哪几个部分组成,每一个部门都表示什么含义? 存储什么样的数据?
- 三部分:Header(算法信息,Base64 编码)、Payload(用户数据,如 id / 过期时间,Base64 编码,不加密)、Signature(前两部分 + 秘钥签名,验证完整性)。
-
拦截器的拦截路径中,/* 与 /** 的区别是什么 ? 那 /emps/* 与 /emps/** 的区别又是什么呢?
/*:匹配一级路径(如/a,不匹配/a/b);/**:匹配所有路径(包括多级,如/a/b/c)。/emps/*:匹配/emps/a,不匹配/emps/a/b;/emps/**:匹配/emps下所有路径(包括多级)。