Java八股文(斩获 Offer 的面试宝典)
文章目录
-
- 一、Java基础篇
-
- 1.接口和抽象类的区别
- 2.重载和重写的区别
- 3.==和equals的区别
- 4.异常处理机制
- 5.HashMap原理
- 6.想要线程安全的HashMap怎么办?
- 7.ConcurrentHashMap原如何保证的线程安全?
- 8.HashTable与HashMap的区别
- 9.ArrayList和LinkedList的区别
- 10.如何保证ArrayList的线程安全?
- 11.String、StringBuffer、StringBuilder的区别
- 12.hashCode和equals
- 13.面向对象和面向过程的区别
- 14.深拷贝和浅拷贝
- 15.多态的作用
- 16.什么是反射?
- 17.Java创建对象得五种方式?
- 二.Java多线程篇
-
- 1.进程和线程的区别,进程间如何通信
- 2.什么是线程上下文切换
- 3.什么是死锁
- 4.死锁的必要条件
- 5.Synchrpnized和lock的区别
- 6.什么是AQS锁?
- 7.为什么AQS使用的双向链表?
- 8.有哪些常见的AQS锁
- 9.sleep()和wait()的区别
- 10.yield()和join()区别
- 11.线程池七大参数
- 12.Java内存模型
- 13.保证并发安全的三大特性?
- 14.volatile
- 15.线程使用方式
- 16.ThreadLocal原理
- 17.什么是CAS锁
- 18.Synchronized锁原理和优化
- 19.如何根据 CPU 核心数设计线程池线程数量
- 20.AtomicInteger的使用场景
- 三.JVM篇
- 四.Mysql篇
-
- 1.MyIsAm和InnoDB的区别
- 2.mysql事务特性
- 3.事务靠什么保证
- 4.事务的隔离级别
- 5.什么是快照读和当前读
- 6.MVCC是什么
- 7.MySQL有哪些索引
- 8.聚簇索引和非聚簇索引的区别
- 9.MySQL如何做慢SQL优化
- 10.为什么要用内连接而不用外连接?
- 11.MySQL整个查询的过程
- 12.执行计划中有哪些字段?
- 13.哪些情况索引会失效
- 14.B和B+数的区别,为什么使用B+数
- 15.MySQL有哪些锁
- 16.Mysql内连接、左连接、右连接的区别
- 17.sql执行顺序
- 18.如何设计数据库?
- 19.where和having的区别?
- 20.三大范式
- 21.char和varchar的区别
- 22.InnoDB 什么情况下会产生死锁
- 23.MySQL 删除自增 id,随后重启 MySQL 服务,再插入数据,自增 id 会从几开始?
- 24.MySQL插入百万级的数据如何优化?
- 五.常用开发框架系列
-
- 1.什么是Spring?
- 2.IOC是什么?
- 3.AOP是什么?
- 4.如何定义一个全局异常处理类?
- 5.如何使用aop自定义日志?
- 6.循环依赖是什么,怎么解决的?
- 7.Bean 的作用域
- 8.Bean 生命周期
- 9.Spring 事务原理?
- 10.spring事务失效场景
- 11.spring事务的隔离级别
- 12.spring事务的传播行为
- 13.Spring IoC
- 12.spring用了哪些设计模式
- 14.SpringMV工作原理
- 15.springboot自动配置原理
- 16.springboot常用注解
- 17.spring的bean是线程安全的吗?
- 18.springcloud主要解决什么问题?
- 19.CAP理论
- 20.为什么不能同时保证一致性和可用性呢?
- 21.熔断限流的理解?
- 22.常用限流算法
- 六.Redis系列
- 七.计算机网络系列
- 八.linux系列
- 九.场景题
- 十.其他(RabitMQ、数据结构与算法、nginx、git、jwt登录等...)
- 十一.秒杀项目相关问题:
- 微学院相关问题
- 实习中供应链项目的收获
一、Java基础篇
1.接口和抽象类的区别
相似点:
(1)接口和抽象类都不能被实例化
(2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法
不同点:
(1)抽象类可以包含普通方法和代码块,接口里只能包含抽象方法,静态方法和默认方法,
(2)抽象类可以有构造方法,而接口没有
(3)抽象类中的成员变量可以是各种类型的,接口的成员变量只能是 public static final 类型的,并且必须赋值
2.重载和重写的区别
重载发生在同一个类中,方法名相同、参数列表、返回类型、权限修饰符可以不同
重写发生在子类中,方法名相、参数列表、返回类型都相同,权限修饰符要大于父类方法,声明异常范围要小于父类方法,但是final和private修饰的方法不可重写
3.==和equals的区别
==比较基本类型,比较的是值,==比较引用类型,比较的是内存地址
equlas是Object类的方法,本质上与==一样,但是有些类重写了equals方法,比如String的equals被重写后,比较的是字符值,另外重写了equlas后,也必须重写ha