2023年JAVA面试宝典(全网最全未来十年可用)
Posted 赵晓明啊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023年JAVA面试宝典(全网最全未来十年可用)相关的知识,希望对你有一定的参考价值。
基础语法
String 、StringBuilder 、StringBuffer 的区别?
String是只读的字符串,创建了对象后内容是不可被修改的,StringBuilder是单线程使用的,效率比StringBuffer高,StringBuffer是加了锁的,所以线程更加安全.
equals()和==的区别
==号判断的是基本类型的数据是否相等,equals不能比较基本类型,可以比较对象,在我们的自定义类里面如果重写了equals方法的话比较的是数据是否相等,如果没有重写的话调用的是object类的equals方法,比较的是两个对象的地址值.
是否可以继承String类? 为什么用final修饰?
不可以继承String,因为String是被final修饰的类,所以不能被继承,因为用了final修饰,对象的内容才会不可变,为了效率和安全考虑,只有被final修饰才偶遇可能实现字符串池
集合
io流
事务
通信协议
异常
反射
JVM
多线程
JavaWeb
SSM框架(Spring,SpringMvc,Mybatis)
Spring框架
Spring框架指的是Spring Framework,可以提高开发人员的开发效率还有系统的可维护性
Spring 的摸款是:核心容器,数据访问/集成,Web,AOP(面向切面编程),工具,消息和测试模块.
IOC
IOC控制反转这是一种设计思想,就是把对象的创建权交给Spring框架来管理.IOC容器的底层就是一个map类型的键值对,存放的就是各种对象
IOC容器的类型
ClassPathXmlApplicationContext、FileSystemXmlApplicationContext、AnnotationConfigApplicationContext、BeanFactory
ApplicationContext和BeanFactory的区别?
BeanFactory是底层额接口,ApplicationContext是派生的接口,功能更加强大,BeanFactory是懒加载,你用到的时候才会创建对象好处是可以节省内存,当你的内存不够时可以使用这个容器,而ApplicationContext是启动的时候就会加载全部的bean,好处是使用的时候,拿来即用,缺点是启动的时候会比较慢.起始阶段比较耗费内存.
BeanFactory和FactoryBean的区别?
BeanFactory是一个Spring容器,而FactoryBean是一个特殊的Bean,他的作用就是用来创建bean,创建出来的bean会放到容器中去.
Spring中的单例Bean是线程安全的吗?
不是安全的,但是Spring中的Bean是无状态的,也就是说他是不储存数据的,所以从某种情况来说,他是安全的.
有两种解决方法
1.把bean的作用域改为非单例 prototype
2.把共享的变量放入ThreadLocal中,它是线程的私有变量,因为线程之间是隔离的,所以这样也可以解决线程的安全问题.
简单描述下Spring容器中bean的生命周期
1.首先通过设置文件或者注解拿到所有的BeanDefinition,并放到BeanDefinitionMap中
2.从BeanDefinitionMap中拿到bean定义并进行实例化,也就是new一个对象
3.依赖注入,给容器中的bean的属性就行赋值
4.初始化,给属性赋值
5.初始化完成后,bean真正的完成创建,就可以吧bean放到Spring容器中,也就是ConcurrentHashMap中,以后使用的时候直接可以从getBean中来获取bean
6.容器销毁时,bean也会随着销毁
DI
DI就是依赖注入,给容器中的bean的属性赋值就叫做依赖注入
依赖注入的方式
构造器注入和setter注入
AOP
AOP面向切面编程,把公共代码抽取出来,在不改变原始代码的情况下,对代码进行增强或者修改
SpringBoot
SpringCloud
Redis
Mybatis,Mybatis-Plus
mysql
MongoDB
Gateway
Feign
Nacos
Ribbon
Sentinal
ElasticSearch
Kafka
RabbitMQ
JDK1.8新特性
其他
以上是关于2023年JAVA面试宝典(全网最全未来十年可用)的主要内容,如果未能解决你的问题,请参考以下文章