1.连接查询
分为内连接和外连接查询
内连接:隐式链接和显式连接
外连接:左连接和右连接
左连接:select 字段列表 from 表1 left [OUTER] JOIN 表2 ON 条件;

2.聚合函数
表达式:select 聚合函数(字段) from 表名;

count: 统计一列的数量
max: 统计一列的最大值
min: 统计一列的最小值
avg: 统计一列的平均值
sum:统计一列的总和

3.SQL关键字
分组查询关键字:
Group by
select sex, count(*) from student3 GROUP BY sex;

分页查询关键字:
Limit offset,length
Offset:跳过几个
Length:取几个
select *from student3 LIMIT 2,6; (跳过前两个取六个)

去重关键字 :
distinct
select DISTINCT name from student3;
4.SQL Select 语句完整的执行顺序
select
from
where
group by
having
order by
limit
11.SQL 语言包括哪几部分?每部分都有哪些操作关键
数据定义(DDL)、数据查询(DQL)、数据操纵(DML)、数据控制(DCL)

数据定义: create alter drop
数据查询:select
数据操纵:insert update delete
数据控制:grant(授权) revoke(取消授权) rollback commit

面试06(4.11)

数据库【JDBC】
1.JDBC操作的步骤:
1.加载数据库驱动类
2.通过DriverManager创建连接对象Connection( url:地址 username:用户名
password:密码)
3.通过Connection创建Statement语句对象
4.使用executeUpdate执行SQL语句,返回影响的行数(增删改)/使用executeQuery执行SQL语句,返回的结果集(查)
5.关闭资源:先开后关,后开先关

2.在使用JDBC的时候,如何防止出现sql注入的问题:
使用PreparedStatement类,防止SQL注入攻击。
preparedStatement具有预编译语句功能。是Statement的子类。

3.使用连接池有什么好处:
在启动的时候就创建好了,可以重复使用连接对象。提高利用效率。

创建连接池的步骤:
1.加载mysql驱动和连接池jar包
2.通过类对象获取类路径下的属性文件
2.通过Properties类读取druid.properties属性值
3.通过DruidDataSourceFactory 静态方法:createDataSource(属性文件),创建数据源
4.从数据源中获取连接对象

4.你所了解的数据源技术有那些?使用数据源有什么好处?
Dbcp,c3p0等,用的最多还是c3p0,因为c3p0比dbcp更加稳定,安全;通过配置文件的形式来维护数据库信息,而不是通过硬编码。当连接的数据库信息发生改变时,不需要再更改程序代码就实现了数据库信息的更新。

面试题07(4.12)

1.CHAR 和 VARCHAR 的区别?

char :长度固定的字符串
varchar :长度不固定的字符串
Char是根据实际输入的字符长度储存,varchar是根据定义字符的长度储存

(如果知道要输入多少位字符串,char写入效率更高
如果不知道要输入多少位字符串,varchar写入效率更高)

2.LIKE 声明中的%和_是什么意思?
%:表示任意多个字符
_ : 表示一个字符

3.如何显示前 50 行?
selectfrom 表名 limit offset,length;
offset:跳过的数量
length: 取的数量
image.png
*4.数据库中的事务是什么?

1.事务(transaction)是作为一个单元的一组有序的数据库操作。
2.事务把所有的命令作为一个整体向系统提交或撤销操作请求,即这一组数据库命令要么同时成功,要么同时失败。成功就提交。失败就回滚。

5.事务的四大特性(ACID):
原子性(Atomicity):要么同时成功,要么同时失败。
一致性(Consistency):事务前后数据的完整性必须保持一致。
隔离性(Isolation):多个并发事务之间数据要相互隔离,不能相互影响。
持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

面试题08(4.13)

1.谈一谈你对Mybatis框架的理解(了解):

MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发.框架就是一个半成品软件,在框架的基础之上构建软件编写更加高效、规范、通用、可扩展。

2.MyBatis编程步骤(了解)

  1. 创建SqlSessionFactory 工厂建造类
  2. 通过SqlSessionFactory创建SqlSession
  3. 通过SqlSession 创建代理对象
  4. 通过sqlsession执行数据库操作
  5. 调用session.commit()提交事务
  6. 调用session.close()关闭会话

image.png

3.maven的主要作用:
1.提供了一套标准化的项目结构和构建流程。
2.提供了一套依赖管理机制

4.maven的坐标有什么用?分别代表什么含义?
作用:使用坐标来定义项目或引入项目中需要的依赖
含义:groupId:组织名称 (可以对应多级)
artifactId:模块名称 (对应一级)
version:当前项目版本号 (对应一级)

5.maven的依赖范围有哪些?表示什么意思?
image.png
依赖范围默认:compile

面试题09(4.15)

1.在mybatis中,${} 和 #{} 的区别是什么?(必会)

{}:底层使用的preparedStatement,可以有效的防止SQL注入,设置预编译,提高效率
${}: 底层是使用Statement,有SQL注入的风险,如果是字符串,还需要自己加单引号

2.如何获取自动生成的(主)键值?
在inster 语句中添加
useGeneratedKeys : 自动生成主键 设置为true
keyProperty: 键的属性名
keyColum: 键的字段名

3.在mybatis中,resultType和ResultMap的区别是什么?(必会)

resultType:如果sql语句查询到字段名和实体类中的属性名相同就使用 resultType 属性指定封装类型
ResultMap: 如果sql语句查询到的字段名和实体类中的属性名不相同就需要 resultMap 来定义字段名和实体类属性名的映射关系

4.在Mybatis中你知道的动态SQL的标签有哪些?作用分别是什么?(必会)

  1. 标签: 进行判断
  2. 标签: 条件查询 去掉多余的where、and、or
  3. 标签:进行遍历 (批量删除的时候用)
  4. 标签:减少重复的代码
  5. 标签:修改数据,去掉多余的逗号。
  6. 标签:单条件查询 多条件当中选择一个。

面试题10(4.16)

1.谈一下你对mybatis缓存机制的理解?(了解) :

Mybatis有两级缓存,一级缓存是SqlSession级别的,默认开启,无法关闭;二级缓存是Mapper级别的,二级缓存默认是没有开启的,但是手动开启

  1. 一级缓存:基础PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session flush或close之后,Session中的所有Cache就将清空
  2. 二级缓存其存储作用域为Mapper(Namespace),使用二级缓存属性类需要实现Serializable序列化接口
  3. 对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了C(增加)/U(更新)/D(删除)操作后,默认该作用域下所有select中的缓存将被clear.
    需要在setting全局参数中配置开启二级缓存,如下conf.xml配置:

当我们的配置文件配置了cacheEnabled=true时,就会开启二级缓存,二级缓存是mapper级别的,如果你配置了二级缓存,那么查询数据的顺序应该为:二级缓存→一级缓存→数据库。

2.在 mapper 中如何传递多个参数?

1.用注解写出全部的参数用@Param起名字
2.封装实体类对象
3.使用Map集合

3.MyBatis 实现一对一有几种方式,怎么操作的?

表连接查询: association property resultMap
级联查询 : association property select column

4.MyBatis 实现一对多有几种方式,怎么操作的?

表连接查询: collection property resultMap
级联查询 : collection property select column

5.Mybatis 的一级、二级缓存
一级缓存:在同一个会话框中,默认开启,无法关闭,再一次调用是从本地缓存中读取不需要去本地仓库下载。
二级缓存:可以在不同的会话框中,默认是没有开启的,要手动开启。

二级缓存的步骤:
1.实体类要实现序列化(Serializable接口)
2.在核心配置文件中要开启二级缓存
3.在映射文件中开启二级缓存使用

面试题11(4.18)

1.html的作用:
编写网页

2.html有那些常用标签:
文本标签:
image.png
image.png
image.png

3.div和span的区别:
都是可以做容器
div: 块标签( 范围大)自带换行功能 (例如:网页布局)
span:内联标签 不换行 (小范围)

4.表格标签都有哪些,作用是什么?
image.png

5.表单的作用和常用表单元素?
作用:接收用户输入数据,并提交数据给服务器
image.png

面试题12(4.19)

1.javaScript的作用:
1.表单数据校验
2.页面元素标签动态的增删改查操作

2.javaScript的BOM对象有哪些?
image.png

3.javaScript的DOM对象如何获取?
image.png
4.javaScript有哪些常用的事件?
image.png
5..javaScript内置对象有哪些?

image.png

面试题13(4.21)

1.什么是HTTP协议?
客户端和服务器端之间数据传输的格式规范,称为超文本传输协议Hyper Text Transfer Protocol
是一个基于请求与响应模式、无状态的、应用层的协议,基于 TCP协议

HTML :超文本标记语言

2.Servlet的生命周期:
1.init(): 初始化的时候执行一次 (用户第一次访问)
2.service():每次请求都会执行
3.destroy():服务器关闭或重启的时候执行一次
loadOnStartup:在tomcat启动的时候就实例化这个Servlet对象

3.Servlet的访问地址有几种匹配方式:
1.精确匹配:访问地址与Servlet地址完全一样 @WebServlet(“/Demo4Servlet”)
2.目录匹配: @WebServlet(“/user/“)
3.扩展名匹配: @WebServlet(“
.do”)
4.任意匹配: @WebServlet(“/*”)

4.Tomcat有哪几种部署的方式?分别如何部署?
2种方式

1.直接复制到webapp目录下或者采用压缩文件.war的方式
2.使用单独的xml配置文件(idea默认的方式) 文件名就是访问的地址

面试题14(4.22)

1.Get和Post的区别:
get:

  1. 没有请求体, 请求参数在请求行中,不安全。
  2. 数据传输大小有限制。
  3. 限制Form表单的数据集的值必须为ASCII字符。

post :

  1. 请求参数在请求体中 ,安全。
  2. 数据传输大小没有限制。
  3. 支持整个ISO10646字符集。

Get执行效率却比Post方法好,Get是form提交的默认方法。

2 HTTP中重定向和请求转发的区别?
重定向:

  1. 2次请求
  2. 资源不可以共享。
  3. 地址发生改变 。
  4. 浏览器跳转, 跳转到任意网址。

    1. 方法: response.sendRedirect(“other.jsp”);
      转发:
  5. 1次请求。

  6. 资源可以共享。
  7. 地址没有发生改变。
  8. 服务器跳转,只能跳转当前项目。
  9. 方法:request.getRequestDispatcher(“other.jsp”).forward(request, response);

3.请求中获取参数的三个方法是那些?
Map getParameterMap():获取所有参数Map集合
String getParameter(String name):根据名称获取参数值(单个值)
String[] getParameterValues(String name):根据名称获取参数值(数组)

4.作用域是什么? 操作作用域的方法有哪些
作用域:
用于 Servlet 之间数据共享的服务器内存区域,作用域结构是一个 Map

方法:
Object getAttribute(“键”)
void setAttribute(“键”,Object数据)
removeAttribute(“键”)

面试题15(4.24)

1.Jsp和Servlet的区别?
相同点:
jsp经编译后就变成了servlet,jsp本质就是servlet,web容器将jsp的代码编译成jvm能够识别的java类。

不同点:
JSP侧重视图展现数据,Sevlet主要用于控制逻辑获取数据。
Servlet中没有内置对象 。
JSP中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到

2.Jsp中的forEach标签有什么作用?常用的属性有哪些?
遍历集合或者数组
items: 要遍历的集合或数组 注:参数值要指定为EL ${作用域变量名}
var: 保存每次循环读取的变量名
start:初始值
end:结束值
step:跳过几个元素

3.有哪四个作用域?作用范围分别是什么?
image.png

page: 页面域
request: 请求域 (一个用户的一次请求)
session: 会话域 (一个用户多次请求)
application: 上下文域(多个用户多个请求)

4.什么是MVC?分别表示什么意思?

image.png
MVC是一种分层开发的模式
M: model (模型) JavaBean
V: view (视图) Jsp、html
C: controller (控制器) Servlet

5.什么是三层架构,表示什么意思?
image.png
SSM 、SSH
表面层
业务层
数据访问层(持久层)

image.png

面试题16(4.26)

Cookie和Session的区别:
存储位置:
Cookie 存放在浏览器
Session 存放在服务器

安全性:
Cookie 不安全
Session 安全

数据大小:
Cookie 最大是4KB
Session 没有大小限制

存储时间:
Cookie 默认是浏览器关闭
设置时间:setMaxAge(int seconds)

Session 默认是30分钟
设置时间:

  1. session.setMaxInactiveInterval( )
  2. 通过web.xml配置



5

  1. session.invalidate() 创建会话立马失效

服务器性能:
Cookie不占服务器资源
Session站服务器资源

面试题17(4.26)

1. javaweb的三大组件及作用:

  1. Servlet: 处理用户的请求和响应
  2. Filter : 过滤用户请求和响应
  3. Listener: 监听域对象的创建与销毁

2. 过滤器的执行流程:

  1. 定义一个类实现Filter接口 ,并重写方法
  2. 把过滤任务代码编写在doFilter方法里面,并放行 [chain.doFilter(request,response)]
  3. 在类上定义@WebFilter注解 (配置Filter拦截路径)

3. 过滤器对象什么时候创建和什么时候销毁:
服务器启动的时候就创建
服务器关闭的时候就销毁

4.过滤器的应用场景:

  1. 全局乱码问题:

  2. 强制类型转换
    2.获取浏览器的请求方式
    3.判断是否为post请求,如果是解决乱码
    4.设置响应的乱码
    5.放行

  3. 权限过滤

1.强制类型转换
2.得到session对象
3.从session中获取user登陆成功标记
4.判断user是否为空,如果为空跳转到登陆页面
5.放行

5. 监听器的开发步骤:

  1. 定义一个类实现对应监听器的接口
  2. 在类上添加@WebListener注解

面试题18(4.27)

Ajax的介绍(必会):

概念介绍:异步交互 局部刷新

第一种实现方式:JavaScript原生Ajax实现
image.png
image.png

axios组件封装AJAX简化开发实现:
image.png
image.png

Ajax应用程序的优势
1. 通过异步模式,提升了用户体验
2. 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用
3. Ajax引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服务器负载。

面试题19(4.29):

1. vue的是什么?
Vue是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。
基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上

2.什么是MVVM编程模式?
Model:普通的JS数据对象
View:前端展示页面
ViewModel:用于双向绑定数据与页面,也是Vue的实例
MVVM强调的是双向数据绑定,页面数据展示与模型数据改变是双向影响。
其核心就是ViewModel通过DOM监听实现。

3.3 vue的常用指令有哪些?
image.png
display 隐藏是:none 显示:block

3.4 elementUI是什么?
Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库,用于快速构建网页。

3.5 elementUI 都提供了哪些页面组件?
image.png
image.png