web技术分享题目

102 阅读10分钟
  1. 在Web标准中指出,一个网页由几个部分组成,各自的职责是什么? 顺便说说常见的HTML标签及其作用

    1. 组成:HTML,CSS,JS
    2. 常见标签:html(根标签)、head(元数据)、body(内容)、div(块容器)、p(段落)、a(链接)、img(图片)、ul/li(列表)、table(表格)等。
  2. CSS的引入方式有几种,各自有什么区别? CSS中的元素选择器、ID选择器、类选择器的写法?这三个选择器的优先级是什么样的

    引入方式

    1.   内联样式(style属性,优先级最高,仅作用于当前元素);
    2.   内部样式(标签,作用于当前页面);
    3.   外部样式(link引入.css 文件,作用于整个网站,便于维护)。

    选择器

    1.   元素选择器(tag,如p{});
    2.   ID 选择器(#id,如#box{});
    3.   类选择器(.class,如.red{})。
    4. 优先级:ID 选择器 > 类选择器 > 元素选择器
  3. form表单提交时,使用GET和POST提交方式各自的特点是什么?有什么区别 ?

    1. GET:参数拼在 URL 后(可见,长度有限),用于查询
    2. POST:参数在请求体不可见,长度不限),用于提交数据(如表单)。
  4. 在JS中事件监听的语法是什么样的?常见的事件类型有哪些,请详细说明?

    1. (1)语法:元素.on事件名=函数元素. addEventListener ('事件名', 函数)
    2. (2)常见事件:click(点击)、input(输入)、load(页面加载)、submit(表单提交)、mouseover(鼠标悬停)、keyup、keydown...
  5. 什么是DOM,在JS中获取DOM对象的方式有哪些,之间的区别是什么,请详细说明?

    1. DOM:文档对象模型 Document Object Model ,将 HTML 解析为树状结构的对象。
    2. 获取方式:
    3.   getElementById(通过 ID,唯一);
    4.   getElementsByClassName(通过类名,返回集合);
    5.   getElementsByTagName(通过标签名,返回集合);
    6.   querySelector(CSS 选择器,返回第一个);
    7.   querySelectorAll(CSS 选择器,返回所有)。
  6. 聊一聊Vue中常用的指令有哪些,以及具体的作用? v-if 和 v-show指令的区别是什么

    1. 常用 指令:v-model(双向绑定)、v-for(循环)、v-bind(属性绑定,简写:)、
    2.   v-on(事件绑定,简写@)、v-if/v-show(条件显示)。
    3. 区别:v-if 动态增删 DOM(初始隐藏无渲染);v-show 仅切换display属性(始终渲染)。
  7. Maven中有哪几类仓库,如果要在项目中引入一个依赖,依赖的查找顺序是什么样的? 什么是坐标,坐标由那几个部分组成

    1.   (1)仓库类型:本地仓库、远程仓库(中央仓库、私服、其他公共仓库)。
    2.   (2)查找顺序:本地仓库 → 远程仓库。
    3.   (3)坐标:groupId(组织标识)、artifactId(项目标识)、version(版本)。
  8. Maven的生命周期分为那几套? 我们核心关注的5个生命周期阶段是哪5个,具体的作用是什么

    1. 三套生命周期:clean(清理)、default(构建,核心)、site(站点生成)。
    2. 核心阶段validate(验证)、compile(编译)、test(测试)、package(打包)、install(安装到本地仓库)。
  9. Maven的依赖范围是做什么用的? 常见的取值有哪些? 如何设置依赖的作用范围?

    1. 作用:控制依赖在不同生命周期的可用性
    2. 常见取值compile(默认,全生命周期可用)、provided(编译和测试可用,如 servlet-api)、runtime(运行和测试可用,如 JDBC 驱动)、test(仅测试可用)。
    3. 设置:在<dependency>中通过<scope>指定。
  10. 什么是HTTP协议? HTTP协议具有什么样的特点,请详细说明?

    1. 定义超文本 传输协议,客户端与服务器的通信规则,基于 ****TCP应用层协议
    2. 特点无状态(不记忆连接)、请求 - 响应模式、可基于 HTTPS 加密、支持多种方法(GET/POST 等)。
  11. HTTP协议中请求协议的数据格式 及 响应协议的数据格式, 请详细说明 ?

    1. 请求:请求行(方法、URL、版本)、请求头(键值对,如Content-Type)、请求体(POST 数据)。
    2. 响应:状态行(版本、状态码、描述)、响应头(如Set-Cookie)、响应体(返回数据)。
  12. HTTP的状态码分为哪几类,分别表示什么意思 , 请详细说明? 请说出几个常见的状态码 及 含义?

    1. 分类:1xx(信息)、2xx(成功,如 200)、3xx(重定向,如 302)、4xx(客户端错误,如 404 未找到、401 未授权)、5xx(服务器错误,如 500)。
  13. 请按照你的理解说说什么是控制反转IOC (反转的是什么,反转之前什么样,反转之后什么样),以及什么是依赖注入 DI?

    1. IOC(控制反转):将对象创建权从代码转移到容器,反转依赖关系的控制。反转前:手动new对象;反转后:容器注入,解耦。
    2. DI(依赖注入):IOC 的实现方式,容器在运行时将依赖对象注入到目标对象中。
  14. 请详细描述 @ResponseBody 注解的作用? 我们在编写Controller类的代码时,为什么没有使用该注解呢

    1. 作用:将方法返回值直接作为响应体(如 JSON),而非跳转视图。
    2. 未使用场景:Controller 类标注@RestController(包含@ResponseBody)。
  15. 请详细描述一下,什么是约束?常用的约束有哪些,对应的关键字是什么,各自的应用场景?

    1. 作用:保证数据完整性。
    2. 常见约束:PRIMARY KEY(主键,唯一非空)、FOREIGN KEY(外键,关联其他表)、UNIQUE(唯一)、NOT NULL(非空)、CHECK(自定义条件)、DEFAULT(默认值)。
  16. 请详细描述char与varchar的区别? 以及在设计表时,该如何选择?

    1. 区别:char(固定长度,如char(10),不足补空格,查询快);varchar(可变长度,存储实际长度 + 1 字节,省空间)。
    2. 选择:固定长度用char(如手机号);长度可变用varchar(如姓名)。
  17. DQL语句分组查询时,where,group by,having之间的执行顺序是什么样的? where 与having的区别是什么?

    1. 顺序:where(分组前过滤,不能用聚合函数)→ group by(分组)→ having(分组后过滤,可用聚合函数)。
    2. 区别:where 过滤行,having 过滤组。
  18. Mybatis的映射配置文件定义的规范是什么 ? 项目开发中,你们的SQL是基于注解方式开发的还是XML映射配置文件开发的

    1. 规范:namespace 与 Mapper 接口全类名一致;id与接口方法名一致;参数 / 返回值类型匹配。
    2. 开发方式:XML(复杂 SQL,易维护)或注解(简单 SQL,如@Select)。
  19. Mybatis 中的 # 与 $ 的区别是什么 ?实际开发中推荐用哪个? 为什么 ?

    1. 区别:# 预编译(参数占位符,防注入);$ 字符串拼接(直接替换,有注入风险)。
    2. 推荐:#,除非需动态拼接表名 / 列名(如排序字段)。
  20. 请详细描述一下 @RequestParam , @RequestBody , @PathVariable 注解的作用和应用场景 ?具体的使用细节也描述一下

    1. @RequestParam:获取 URL 参数(?name=xxx),可指定required(是否必传)defaultValue
    2. @RequestBody:获取请求体 JSON 数据(适用于 POST,绑定到对象)。
    3. @PathVariable:获取 URL 路径参数(如/user/{id}中的id)。
  21. 请描述一下什么Rest风格的url,涉及到哪些请求方式,这几种情况方式分别描述什么操作?

    1. 特点:用 URL 表示资源,HTTP 方法表示操作。
    2. 方法对应:GET(查询)、POST(新增)、PUT(全量更新)、DELETE(删除)、PATCH(部分更新)。
  22. 请描述一下 @RequestBody 注解 与 @ResponseBody 注解的作用 ? 什么时候用 @ResponseBody , 什么时候用 @RequestBody?

    1. @RequestBody:接收请求体数据(如 JSON),用于 POST/PUT 等。
    2. @ResponseBody:将返回值作为响应体(如 JSON),用于 API 接口。
  23. 在数据库表结构设计时, 有哪几种多表关系 ? 在数据库中, 如何维护这层多表关系 ?

    1. 关系:一对一(如用户 - 身份证,共享主键或外键唯一)、一对多(如部门 - 员工,多方加外键)、多对多(如学生 - 课程,中间表存双方主键)。
    2. 维护:通过外键或中间表关联。
  24. 请详细描述内连接和外连接的区别? 外连接中左外和右外的区别?

    1. 内连接:只返回匹配的行。
    2. 外连接:返回匹配行 + 未匹配行(左外:左表全显,右表匹配;右外:右表全显,左表匹配)。
  25. 请详细说明一下, 分页查询的原理 ? (从前端传递的参数 , 后端执行的SQL, 后端返回的数据层面来说明)

    1. 前端:传递page(页码)、pageSize(每页条数)。
    2. 后端 SQL:limit (page-1)*pageSize, pageSize(MySQL)。
    3. 返回数据:总条数、当前页数据、总页数等。
  26. 请说明什么是事务? 在数据库中如何控制事务,控制事务的SQL语句 ? 以及事务的四大特性 ?请详细聊聊在项目开发中,你们的事务是如何控制的 ?

    1. 定义:一组不可分割的 SQL 操作,要么全成,要么全败。
    2. 控制 SQL:start transaction(开始)、commit(提交)、rollback(回滚)。
    3. 四大特性:ACID(原子性、一致性、隔离性、持久性)。
    4. 项目控制:Spring 中用@Transactional注解声明事务。
  27. 请描述Mybatis中动态SQL的使用场景 , 以及 标签 , 标签的具体作用 ?

    1. 场景:条件查询、动态拼接 SQL(如多条件筛选)。
    2. <if>:条件判断,满足则拼接内容(如where id = #{id})。
    3. <where>:自动处理多余and/or,包裹<if>
  28. 文件上传前端页面三要素是哪三个要素 ? 在spring框架中在服务端如何接收上传上来的文件?

    1. 前端三要素:method="post"enctype="multipart/form-data"<input type="file">
    2. 后端接收:用MultipartFile参数接收,如public String upload(MultipartFile file)
  29. 聊聊Mybatis中常见的动态SQL的标签有哪些,这些标签的作用和使用场景是什么?

    1. <if>:条件拼接;
    2. <where>:优化 where 子句;
    3. <foreach>:循环(如in条件);
    4. <set>:更新时处理逗号;
    5. <choose>/<when>/<otherwise>:多条件分支。
  30. 如何定义一个全局异常处理器 ? 全局异常处理器中是否可以定义多个方法来捕获不同类型的异常 ?

    1. 全局异常处理器:类标注@RestControllerAdvice,方法用@ExceptionHandler指定捕获的异常类型。
    2. 可定义多个方法,分别捕获NullPointerException、自定义异常等。
  31. 介绍一下在MySQL数据库中你经常使用的函数 ,及其作用?

    1. COUNT()(计数)、SUM()(求和)、MAX()/MIN()(最大 / 小值)、DATE_FORMAT()(日期格式化)、CONCAT()(字符串拼接)、IFNULL()(空值处理)。
  32. 会话跟踪技术Cookie 与 Session 各自的原理是什么 ? 各自有什么优缺点?

    1. 原理:Cookie 存储在客户端(键值对,随请求发送);Session 存储在服务器,通过 Cookie 的JSESSIONID关联。
    2. 优缺点:Cookie(轻量,易被篡改,大小限制4KB);Session(安全,服务器存储,占用资源)。
  33. JWT令牌由哪几个部分组成,每一个部门都表示什么含义? 存储什么样的数据?

    1. 三部分:Header(算法信息,Base64 编码)、Payload(用户数据,如 id / 过期时间,Base64 编码,不加密)、Signature(前两部分 + 秘钥签名,验证完整性)。
  34. 拦截器的拦截路径中,/* 与 /** 的区别是什么 ? 那 /emps/* 与 /emps/** 的区别又是什么呢?

    1. /*:匹配一级路径(如/a,不匹配/a/b);/**:匹配所有路径(包括多级,如/a/b/c)。
    2. /emps/*:匹配/emps/a,不匹配/emps/a/b/emps/**:匹配/emps下所有路径(包括多级)。