2022 JAVA面试题

1.数据怎么从后台转到前台

我目前知道三种方式①后端用HttpServletRequest②后端用HttpSession③声明返回类型为ModelAndView

2.@responsebody作用

将controller方法返回的对象通过转换器转为指定格式之后,写入response的body区,通常使用返回JSON和XML格式

3.三大范式

①第一范式,任何一张表都必须有自己的主键,且每个字段的原子性不可再分②第二范式,在第一范式的基础上,要求所有非主键字段完全依赖于主键,不能出现部分依赖③第三范式,在第二范式的基础上,所有非主键字段只能依赖于主键,不存在传递依赖。

4.最左前缀匹配原则

最左匹配原则是针对联合索引来说的,索引的底层是一棵B+数,虽然联合索引的键值不止一个,但B+树只能根据一个值来构建,即最左的字段。

5.索引

MySQL的官方定义是,索引是帮助数据库高效获取数据的一种数据结构,而且是排好序的数据结构。索引的优点:大大加快查询效率。缺点:维护索引需要耗费数据库资源;索引需要占用磁盘空间;①普通索引:又叫单列索引,一张表可以有多个单列索引。②主键索引:当设置为主键后,数据库会自动建立索引,也叫聚簇索引,索引列值不能为空。③唯一索引:索引列的值必须唯一,但允许有空值。④全文索引:类型叫FULL TEXT,在定义全文索引的列上支持值得全文查找。

Tips:聚簇索引的定义:该索引的排列顺序和数据库存储数据的物理顺序一致,按照主键值构造一棵B+树,它的叶子结点上存储着整张表的行记录数据。非聚簇索引,即辅助索引,叶子结点上存储的不再是行的物理位置,而是主键值,在通过主键值找数据行的数据页。

6.bean的生命周期

①实例化Bean,通过反射调用构造方法实例化对象

②依赖注入,装配Bean的属性

③实现Aware接口的Bean,执行接口方法:BeanNameAware、BeanFactoryAware、

④初始化前,循环调用实现了BeanPostProcesser接口的预初始化方法

⑤初始化时,顺序执行@postconstruct方法、InitializingBean接口方法

⑥初始化后,循环调用实现了BeanPostProcesser接口的后初始化方法

⑦销毁

7.java原生注解

①@Overrided②@Overload③@Deprecated④@FunctionAllInterface

除了这些基本注解之外,还有一种元注解,就是用来修饰注解的注解,@Retention用来设置注解生命周期,@Target表示这个注解修饰哪些地方。

8.MySQL隔离级别

①读未提交②读已提交③可重复读④串行化

MySQL --可重复读;Oracle sqlServer --读已提交

①在可重复读的隔离级别下,存在间隙锁,导致出现死锁的概率比读已提交大很多

②在可重复度的隔离条件下,条件列未命中索引会锁表,在读已提交隔离条件下只会锁行

9.spring

Spring的核心是IOC和AOP,IOC就是控制反转(就是把原本由程序代码直接操作的对象调用权直接交付给容器),IOC容器的底层实现其实就是工厂模式,通过工厂模式和反射机制,根据xml中给出的类名生成相对应的对象。

依赖注入(Dependency Injection)其实可以和IOC理解为同一件事,都是把创建实例的控制权都交给容器来操作,只不过两者的角度不同。控制反转是从代码操作对象的角度来看,将操作对象的控制权反转交给了容器,依赖注入是从容器的角度看,我把你需要的属性或对象注入到你代码中去。

AOP面向切面开发,分为五大部分。

①Aspect:通常是一个类,里面可以定义切入点和通知

②JoinPoint:连接点,程序执行中明确的点,一般是方法调用。

③Advice:通知,AOP在特点的切入上的增强处理,before,after,afterRunning,afterThrowing,around;

④pointout:切入点,就是带有通知的连接点,在程序中主要体现为书写切入点表达式

⑤AOP代理:AOP框架创建的对象,代理就是目标对象的增强。

10.JAVA8新特性

①lambda表达式 主要用来处理函数型接口

lambda是一个匿名函数,可以把lambda表达式理解为一段可以传递的代码,使用它可以写出更紧凑、更简洁灵活的代码;如果一个接口中,只声明了一个抽象方法,此接口就叫函数型接口。

②方法引用 要区分和方法调用的区别

③Stream\DataApi的增强

④optional 专门用来做空值处理,减少空指针异常

11.抽象类和接口的区别

类和类之间有共同特征,将这些特征提取出来,就形成了抽象类,抽象类中有一般方法、静态方法,抽象方法,抽象方法必须在抽象类中。成员变量,静态变量。

接口是种特殊的抽象类,只能包含抽象方法和常量。

二者区别:抽象类有构造方法;接口无构造方法;接口和接口之间支持多继承,类和类之间只有单继承;一个类可以实现多个接口,但只能继承一个抽象类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值