ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Java八股文(斩获 Offer 的面试宝典)

2026/8/14 11:19:32 拓冰建站 浏览量
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篇
      • 1.JVM运行时数据区(内存结构)
      • 2.什么情况下会内存溢出?
      • 3.JVM有哪些垃圾回收算法?
      • 4.GC如何判断对象可以被回收?
      • 5.典型垃圾回收器
      • 6.类加载器和双亲委派机制
      • 7.JVM中有哪些引用?
      • 8.类加载过程
      • 9.JVM类初始化顺序
      • 10..对象的创建过程
      • 11.对象头中有哪些信息
      • 12.JVM内存参数
      • 13.GC的回收机制和原理
    • 四.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系列
      • 1.redis为什么快?
      • 2.redis持久化机制
      • 3.Redis如何实现key的过期删除?
      • 4.Redis数据类型
      • 5.Redis缓存穿透如何解决?
      • 6.Redis如何解决缓存击穿?
      • 7.Redis如何解决缓存雪崩?
      • 8.Redis分布式锁的实现原理
      • 9.Redis集群方案
      • 10.Redis集群主从同步原理
      • 11.Redis缓存一致性解决方案
      • 12.Redis内存淘汰策略
    • 七.计算机网络系列
      • 1.TCP/IP模型
      • 2.浏览器输入地址后做了什么?
      • 3.TCP三次握手
      • 4.为什么TCP不能两次握手
      • 5.TCP四次挥手
      • 6.为什么要进入时间等待状态?
      • 7.TCP 滑动窗口
      • 8.TCP拥塞控制
      • 9.TCP超时重传
      • 10.TCP可靠传输的实现
      • 11.TCP报头有哪些信息
      • 12.状态码
      • 13.http与https的区别
      • 14.socket通信流程
    • 八.linux系列
      • 1.linux常用命令
      • 2.linux的io模型
      • 3.io模型:
      • 4.IO多路复用详解
      • 5.epoll的LT和ET模式
    • 九.场景题
      • 1.Java如何实现统计在线人数的功能?
      • 2.电商网站可以分成哪些模块(或订单模块要完成哪些功能)?
    • 十.其他(RabitMQ、数据结构与算法、nginx、git、jwt登录等...)
      • 1.RabbitMQ如何保证消息不丢失?
      • 2.RabbitMQ如何保证消费顺序
      • 3.设计模式六大原则
      • 4.设计模式分类
      • 5.排序算法的时间复杂度
      • 6.大量数据排名,采用什么数据结构
      • 7.二叉树和堆之间联系或区别
      • 8.平衡二叉树不平衡如何调整?
      • 9.hash表冲突的解决方法
      • 10.cookie和session的联系
      • 11.Nginx反向代理是什么,负载均衡算法有哪些?
    • 十一.秒杀项目相关问题:
      • 1.项目流程
      • 2.提升qps的操作
    • 微学院相关问题
      • 1.如何用springSecurity做的认证授权?
      • 2.前后端联调经常遇到的问题:
    • 实习中供应链项目的收获
      • 1.熟悉了代码开发规范

一、Java基础篇

1.接口和抽象类的区别

相似点:

(1)接口和抽象类都不能被实例化

(2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法

不同点:

(1)抽象类可以包含普通方法和代码块,接口里只能包含抽象方法,静态方法和默认方法,

(2)抽象类可以有构造方法,而接口没有

(3)抽象类中的成员变量可以是各种类型的,接口的成员变量只能是 public static final 类型的,并且必须赋值

2.重载和重写的区别

重载发生在同一个类中,方法名相同、参数列表、返回类型、权限修饰符可以不同

重写发生在子类中,方法名相、参数列表、返回类型都相同,权限修饰符要大于父类方法,声明异常范围要小于父类方法,但是final和private修饰的方法不可重写

3.==和equals的区别

==比较基本类型,比较的是值,==比较引用类型,比较的是内存地址

equlas是Object类的方法,本质上与==一样,但是有些类重写了equals方法,比如String的equals被重写后,比较的是字符值,另外重写了equlas后,也必须重写ha