Java#面试题总结

目录

1.抽象类为什么不能创建对象

2.SQL查询语句关键字的执行顺序

3.Statement和PreparedStatement的区别

4.悲观锁,乐观锁,表级锁,行级锁

5.jsp九大内置对象和其中的四大域对象


1.抽象类为什么不能创建对象

  1. 抽象类不能表示一个具体的类,为了集合一些具有相同行为或属性的类创建的类
  2. 抽象类中含有抽象方法,这些方法就等着被继承,被子类重写,不同的子类方法的功能具体实现是不同的
  3. 如果抽象类能创建对象,该对象调用其抽象方法就没有意义

2.SQL查询语句关键字的执行顺序

优先级关键字关键字作用
1FROM定义查询结果的来源
2ON设置多表连接的条件
3INNER JOIN多表连接
4WHERE筛选条件
5GROUP BY分组
6HAVING分组条件筛选
7DISTINCT去重复
8ORDER BY排序
9LIMIT限制返回的记录数

3.Statement和PreparedStatement的区别

  1. PreparedStatement继承自Statement,PreparedStatement的实例包含已编译的SQL的语句
  2. PreparedStatement继承了Statement的所有功能,重写了Statement中的execute方法,可以不用参数
  3. Statement对SQL语句是由字符串的形式拼接而成的,PreparedStatement提高了安全性,对SQL语句进行了封装,对于未知的SQL中的字段,可以用占位符代替,可以防止恶意拼接SQL语句
  4. PreparedStatement  支持批处理,其批处理执行效率与快于Statement的多次处理,内存占用也小于Statement,但是由于进行了预编译,对于某些业务只需执行单条sql语句的来说,Statement 快于PreParedStatement

4.悲观锁,乐观锁,表级锁,行级锁

  1. 悲观锁(加的是表级锁)一方:查询语句加 for update;另一方:查询语句加 for update;当进行更新语句的时候,另一方不能进行更新操作
  2. 乐观锁,更新语句设置版本号,在指定版本中更新数据,一方:update account set money=money-200,version=version+1 where id=1 and version=0;另一方操作同一个版本号,则不能更新数据如果更新多,查询少,用悲观锁;反之,乐观锁
  3. 表级锁,where用的是非主键
  4. 行级锁,where用主键一般是id,如果用表级锁,其他客户将不能进行查询操作,因此开发中记得用行级锁

5.jsp九大内置对象和其中的四大域对象

九大内置对象、四个域对象所属类名称生命周期
requestHttpServletRequest请求对象一次请求创建,响应后销毁
respond 响应对象 
pageContextPageContextImpljsp的上下文对象在当前jsp页面有效
sessionHttpSession会话对象一次会话创建(打开浏览器时创建),会话结束销毁(关闭浏览器),当前会话有效
applicationServletContextServletContext对象web工程启动时创建,关闭时销毁,整个web工程有效
config ServletConfig对象 
out jsp输出流对象 
page 指向当前jsp的对象 
exception 异常对象 

域对象是可以像Map一样存取数据的对象。四个域对象功能一样,只是作用范围不一样(其实是为了优化内存)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值