2024最强秋招八股文(精简、纯手打)

 本文章是2次创作原创在这里

 一、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.面向对象和面向过程的区别

 4.深拷贝和浅拷贝

15.多态的作用

16.什么是反射?

17.Java创建对象得五种方式?

二.Java多线程篇

1.进程和线程的区别,进程间如何通信

2. 什么是线程上下文切换

 3.什么是死锁

 4.死锁的必要条件

5.Synchrpnized和lock的区别

6.什么是AQS锁?

8.有哪些常见的AQS锁

10.yield()和join()区别

11.线程池七大参数

12.Java内存模型 

13.保证并发安全的三大特性?

 14.volatile

15.线程使用方式

16.ThreadLocal原理

17.什么是CAS锁

18.Synchronized锁原理和优化

19.如何根据 CPU 核心数设计线程池线程数量

三.JVM篇

1.JVM运行时数据区(内存结构)

2.什么情况下会内存溢出?

3.JVM有哪些垃圾回收算法?

4.GC如何判断对象可以被回收?

5.典型垃圾回收器

6.类加载器和双亲委派机制

7.JVM中有哪些引用?

8.类加载过程

9.JVM类初始化顺序

10..对象的创建过程

11.对象头中有哪些信息

对象头中有两部分:Mark Word(标记字段)和 Klass Pointer(类型指针)

  1. Mark Word(标记字段):Mark Word 是对象头中的一部分,用于存储对象的特定状态信息,比如哈希码、锁状态、GC分代年龄等。Mark Word 在实现对象的同步和并发控制时起着重要作用,包括轻量级锁、重量级锁等。它通常占据对象头的前几个字节,并且其具体结构和含义可能会因不同的 JVM 实现而有所不同。
  2. Klass Pointer(类型指针):Klass Pointer 是指向对象所属类元数据的指针,用于确定该对象的类型信息,包括方法表、字段表等。通过 Klass Pointer,JVM 可以快速定位对象所属的类,从而进行方法调用和属性访问。

java对象头详解

12.JVM内存参数

13.GC的回收机制和原理

四.Mysql篇

1.MyIsAm和InnoDB的区别

2.mysql事务特性

3.事务靠什么保证

4.事务的隔离级别

  1. 读未提交(Read Uncommitted):允许一个事务读取另一个事务未提交的数据,这样可能会导致脏读(Dirty Read)、不可重复读(Non-repeatable Read)和幻影读(Phantom Read)的问题。

  2. 读已提交(Read Committed):确保一个事务只能读取到另一个已提交事务的数据,避免了脏读,但仍可能出现不可重复读和幻影读的问题。

  3. 可重复读(Repeatable Read):确保一个事务在执行过程中多次读取同一数据时,能够看到同样的数据,从而避免了不可重复读的问题,但仍可能出现幻影读的问题。

  4. 序列化(Serializable):最高的隔离级别,通过强制事务串行执行来避免脏读、不可重复读和幻影读,确保了最高的数据完整性,但也降低了并发性能。

  1. 脏读(Dirty Read):脏读指的是一个事务读取了另一个事务未提交的数据。当一个事务在读取数据的同时,另一个事务可能正在对该数据进行修改或删除操作,导致读取到的数据是不一致的、临时的或无效的。如果未提交的事务回滚,那么脏读就会造成读取了不存在的数据。
  2. 不可重复读(Non-repeatable Read):不可重复读指的是在同一个事务中,多次读取同一数据时,得到的结果不一致。这是由于在读取期间,另一个事务修改了该数据并提交了,导致在后续读取中,同一个事务看到了不同的数据值。这种情况下,事务在两次读取之间发生了数据不一致的变化。
  3. 幻影读(Phantom Read):幻影读指的是在同一个事务中,多次执行相同的查询,但得到的结果集不一致。与不可重复读不同的是,幻影读主要发生在并发事务中插入或删除数据的场景。例如,在一个事务中首先查询某个范围内的数据,然后在此范围内的另一个事务执行了插入或删除操作,再次查询时,会出现新增或减少的记录,就好像出现了幻影一样。

这些问题都是由于并发事务之间的相互影响导致的数据一致性问题,可以通过调整事务的隔离级别来解决。不同的隔离级别提供了不同的数据隔离程度,可以根据具体的业务需求来选择适当的隔离级别来避免脏读、不可重复读和幻影读的问题。

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 会从几开始?

五.常用开发框架系列

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是线程安全的吗?

六.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模型

九.其他(RabitMQ、数据结构与算法、nginx、git、jwt登录等...)

1.Java如何实现统计在线人数的功能?

2.RabbitMQ如何保证消息不丢失? 

4.设计模式六大原则

5.排序算法的时间复杂度

6.大量数据排名,采用什么数据结构

7.二叉树和堆之间联系或区别

8.hash表冲突的解决方法

9.cookie和session的区别

10.RabbitMQ如何保证消费顺序

秒杀项目相关问题:

1.项目流程

2.提升qps的操作

微学院相关问题

1.如何用springSecurity做的认证授权?

2.前后端联调经常遇到的问题:

实习中供应链项目的收获

1.熟悉了代码开发规范
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AngleoLong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值