2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]

文章目录

  • 2、JDK、JRE、JVM区别和联系
  • 5、String 、StringBuffer、StringBuilder区别及使用场景
  • 10、ArrayList和Linkedlist
  • 11、HashMap和HashTable的区别及底层实现
  • 12、ConcurrentHashMap原理简述,jdk7和jdk8的区别
  • 13、如何实现一个IOC容器
  • 14、什么是字节码,作用是什么
  • 15、java类加载器有哪些
  • 18、GC如何判断对象可以被回收
  • 19、线程的生命周期及状态
  • 20、sleep、wait、join、yield的区别
  • 22、Thread和Runnable的区别
  • 23、说说你对守护线程的理解
  • 24、ThreadLocal的原理和使用场景
  • 25、ThreadLocal内存泄漏问题,如何避免
  • 28、为什么使用线程池?解释下线程池解释?
  • 30、线程池中阻塞队列的作用?为什么是先添加队列而不是先创建最大线程?
  • 35、BeanFactory和ApplicationContext有什么什么区别?
  • 36、简述spring bean的生命周期
  • 37、spring支持的几种bean作用域
  • 38、Spring框架中的单例Bean是线程安全的吗
  • 39、spring框架中使用了哪些设计模式及应用场景
  • 40、spring事务的实现方式原理以及隔离级别
  • 41、spring的事务传播机制
  • 42 、spring事务什么时候会失效
  • 43 、什么的是bean的自动装配、有哪些方式?
  • 44 、spring 、 springmvc 、springboot的区别
  • 45 、springmvc的工作流程
  • 46 、Spring MVC的主要组件
  • 47 、springboot自动配置原理
  • 48 、 如何理解springboot的starter
  • 49 、 什么是嵌入式服务器,为什么使用嵌入式服务器
  • 51、mybatis和hibernate的对比
  • 53 、mybatis插件运行原理及开发流程
  • 55 、mysql聚簇和非聚簇索引的区别
  • 56 、mysql索引结构,各自的优劣
  • 58 、mysql锁的类型有哪些
  • 59 、mysql执行计划怎么看
  • 60 、事务的基本特性和隔离级别
  • 65、简述Myisam和innodb的区别
  • 66、简述MySQL中索引类型对数据库的性能的影响
  • 68、Redis的过期键的删除策略
  • 69、Redis线程模型,单线程为什么这么快
  • 70、缓存雪崩、缓存穿透、缓存击穿
  • 73、redis主从复制的核心原理
  • 76、分布式架构下,Session共享有什么方案
  • 77、简述你对RPC、RMI的理解
  • 80、分布式事务解决方案
  • 81、如何实现接口幂等性

插一句:因为篇幅过长,答案没有全部展示出来,需要完整版资料的小伙伴,点击——传送门——既可获取!

1、面向对象

1.1、 什么是面向对象?

对比面向过程、是两种不同的处理问题的角度

面向过程更注重事情的没一个步骤及顺序,面向对象更注重事情有哪些参与者(对象),及各自需要做什么。

例如:洗衣机洗衣服

  • 面向过程会将任务拆解成一系列的步骤(函数),1、打开洗衣机---->2、放衣服------>3、放洗衣粉---->4、清洗------>5、烘干
  • 面向对象会拆出人和洗衣机两个对象:人:打开洗衣机,放衣服,放洗衣粉。洗衣机:清洗、烘干

从以上例子可以看出:面向过程比较直观高效,而面向对象更易于复用,扩展和维护。

1.2 、面向对象

封装

  • 封装的意义,在于明确标识出允许外部使用的所有成员函数和数据项,内部细节对外部调用透明,外部调用无需修改或者关心内部实现。

  • 1、javabean的属性私有,提供get/set对外访问,因为属性的赋值或者获取逻辑只能由javabean本身决定,而不能由外部胡乱修改。

  • 2、orm框架:操作数据库,我们不需要关心链接时如何建立的,sql时如何执行的,只需要引入mybatis,调方法即可。

继承

  • 继承基类的方法,并做出自己的改变或扩展
  • 子类共性的方法或者属性直接使用父类的,而不需要自己再定义,只需扩展自己个性化的

多态

  • 基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同。
  • 继承,方法重写,父类引用指向子类对象
  • 父类类型 变量名 = new 子类对象;
  • 变量名.方法名();

无法调用子类特有的功能

2、JDK、JRE、JVM区别和联系

JDK:

  • java Develpment Kit java 开发工具

JRE:

  • java Runtime Environment java 运行时环境

JVM:

  • java Virtual Machine java 虚拟机

3、==和equals

  • 对比的时栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
  • equals:object中默认也是采用比较,通常会重写
  • String类中被复写的equals()方法其实是比较两个字符串的内容

举例

<pre class="prettyprint hljs cs" style="padding: 0.5em; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; color: rgb(68, 68, 68); border-radius: 4px; display: block; margin: 0px 0px 1.5em; font-size: 14px; line-height: 1.5em; word-break: break-all; overflow-wrap: break-word; white-space: pre; background-color: rgb(246, 246, 246); border: none; overflow-x: auto; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">@Test
void test(){
String str1 = "hello";
String str2 = new String("hello");
String str3 = str2;//引用传递
System.out.println("123");
System.out.println("(str1 == str2):"+(str1 == str2));//false
System.out.println("(str1 == str3):"+(str1 == str3));//false
System.out.println("(str2 == str3):"+(str2 == str3));//true
System.out.println("str1.equals(str2):"+str1.equals(str2));//true
System.out.println("str1.equals(str3):"+str1.equals(str3));//true
System.out.println("str2.equals(str3):"+str2.equals(str3));//true
}</pre>

4、final

4.1、简述final作用

最终的

  • 修饰类:表示类不可被继承
  • 修饰方法:表示方法不可被子类覆盖,但是可以重载
  • 修饰变量:表示变量一旦被赋值就不可以更改它的值。

(1) 、 修饰成员变量

  • 如果final修饰的类变量,只能在静态初始化块中指定初始值或声明该类变量时指定初始值
  • 如果final修饰的是成员变量,可以在非静态初始化块,声明该变量或者构造器中执行初始值。

(2) 、修饰局部变量

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值