java面试(八)

1.什么是 MyBaties?

Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时
只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建
statement 等繁杂的过程。

2.MyBatis的优缺点?【了解】

优点:
简单,容易上手
减少程序员工作量,提高开发效率,程序员只需要关注sql语句。
能够与spring很好的集成。

3.什么是ORM?

ORM 是 Object Relational Mapping 的缩写,译为“对象关系映射”,它解决了对象和关系型数据库之间的数据交互问题。只要提前配置好对象和数据库之间的映射关系,ORM 就可以自动生成 SQL 语句

4.MyBatis与Hibernate有哪些不同?【了解】

MyBatis是半自动的,不会自动生成sql语句,仅有基本的字段映射,仍然需要通过手写sql来实现和管理,当需要使用复杂sql语句时建议使用mybatis
Hibernate是全自动的,会自动生成sql语句,开发者可专注于业务本身。

5.#{}和和${}的区别是什么?(必问)

#{}是预编译的,是占位符:?,用PreparedStatement赋值,避免sql注入。
${}没有预编译,直接把${ }拼接到sql语句时去上,不能避免sql注入
建议使用#{}进行变量注入。

6.MyBatis动态sql有什么用?执行原理?有哪些动态sql?

动态sql就是(在进行sql操作的时候)动态的根据属性值(所匹配的条件)来拼接数据库执行的sql语句。
原理:根据不同的条件拼接不同的sql语句,实现对数据更精准的操作。
if 元素 判断语句,单条件分 支判断
choose 元素 (when,otherwise) 多条件分支判断,等 同于 java 的 switch.
foreach 元素 循环语句

7.什么是MyBatis的一级、二级缓存?

一级缓存也叫SqlSession级缓存,无需手动开启可直接使用,为每个SqlSession单独分配的缓存空间,多个SqlSession之间的缓存不共享。
区别于一级缓存,它是namespace级别,即一个mapper一个缓存,相互独立,互不影响,同一namespace下的多个sqlSession可以共享缓存,默认不开启,需要配置开启。

8.MyBatis分页插件是什么?其实现原理是什么?

分页插件是帮助mybatis进行分页查询的工具,常见的有pageHelper
使用Mybatis插件(也称为拦截器)机制。对需要使用分页的功能进行增强,也就是重写sql语句,根据不同的数据生产不同的分页语句

9.什么是IOC?(必问)

控制反转:是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。使用对象时,由主动new产生对象转换成,从外部提供对象,在这个过程中,对象的创建控制权由程序转移到外部,此思想称为控制反转。

10.什么AOP?(必问)

面向切面编程:,通过预编译和运行期间动态代理方式实现程序功能的统一维护的一种技术。各程序部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

11.AOP通知类型有哪些?

前置通知(原代码前的增强)
后置通知(原代码后的增强)
异常通知(增强代码或原代码出异常后的代码,即catch里的代码)
最终通知(最后的执行的代码,即finally里的代码)
环绕通知(指整个增强代码)

12.Spring常用注解有哪些?(必问)

@Component : 用于把当前类对象存入Spring容器中。
@Controller :用于把当前类对象存入Spring容器中, 一般用在表现层。
@Service :用于把当前类对象存入Spring容器中, 一般用在业务层。
@Repository :用于把当前类对象存入Spring容器中, 一般用在持久层(dto层)。
@Autowired:添加到属性上,从容器中拿出相同类的对象注入到该属性中。
@Value:注入基本类型数据和引用类型对象
@Configuration:标识当前类是一个配置类
@Bean:把当前方法的返回值放到容器中
@Aspect:标识当前类是一个切面类
@Before@After@AfterThrowing@AfterReturning@Around 织入通知

13.SpringMVC工作流程|原理(必问)

1、 客户端向服务端发送请求,这个请求会直接请求到前端控制器DispatcherServlet(也叫中央控制器)。
2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器,解析对应的Handler。
3、解析到对应的Handler后,DispatcherServlet调用HandlerAdapter处理器适配器。
4、HandlerAdapter处理器适配器会根据Handler调用真正的处理器处理请求,去执行Controller并得到ModelAndView(数据和视图,Model是返回的数据对象,View是个逻辑上的View),并层层返回给DispatcherServlet
5、DispatcherServlet将ModelAndView交给ViewReslover视图解析器解析,视图解析器会根据这个逻辑上的View去找实际的View,然后返回真正的视图。
6、DispatcherServlet将模型数据填充到视图中
7、DispatcherServlet将结果响应给用户

14.SpringMVC常用注解有哪些?

@RequestParam
@RequestBody
@PathVariable
@HiddenHttpMethodFilter过滤器
@RequestHeader
@RequestCookie
@ModelAttribute
@SessionAttribute

15.Spring依赖注入方式有那些?

字段注入
构造器注入
Setter注入

16.Spring Boot特点有哪些?

依赖管理、简化配置(无需xml)、内嵌servlet容器、快速开发

17.Spring Boot常用注解有哪些?

@SpringBootApplication
@EnableAutoConfiguration:自动配置,用于自动配置
@ComponentScan:指明项目要扫描的包
@Controller:把该类放到容器中
@RequestBody:表明接口使用json格式返回
@RestController 复合注解:Controller+ResponseBody
@RequestMapping:设置请求路径、请求方式
@PathVariable:获取url中的数据
@RequestParam:获取请求参数的值

18.AOP有哪些使用场景?

日志记录、性能监控、Debugging 调试、事务等

19.拦截器和过滤器的区别?

拦截器(Interceptor)是一个Spring组件,基于反射机制,只会对Controller中请求或访问static目录下的资源请求起作用,一个请求可以被多个拦截器拦截。
过滤器(Filter)是tomcat中的类,基于函数回调,几乎可以对所有进入容器的请求起作用,一个请求只能被一个过滤器拦截。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狴犴ys

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值