3.5 备战秋招八股整理(2)

目录

1.AQS?

2.int类型占多少位?

3.GC算法?

<1>.引用计数算法

<2>.标记-清楚算法

<3>.标记-整理算法

<4>.复制算法

4.JVM内存结构?方法区里存的什么?方法区怎么实现的?

5.线程池的创建方式?有哪些参数?

6.Mysql默认存储引擎?什么情况下使用Innodb?什么情况下使用Myisam?

7.TCP和UDP的区别?

8.HTTP和TCP的区别?

9.IOC?

10.AOP?before和after方法有什么区别?

11.Bean的生命周期

12.Redis集群

13.重载和重写的区别

14.Mysql循环依赖, 循环依赖解决办法(三级缓存)

15.mysql中常见的锁

16.mysql索引,B树,B+树的区别

索引优缺点:

18.索引的分类

19.覆盖索引

20.最左匹配原则

21.String,StringBuffer,StringBuilder的区别?单线程大量操作字符串用哪个?

​编辑22.Redis 的过期策略

1.AQS?

多线程访问共享资源的服务器框架

如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制AQS。将暂时获取不到锁的线程加入到队列中。

2.int类型占多少位?

32

3.GC算法?

垃圾回收算法

<1>.引用计数算法

每个对象在创建的时候,就给这个对象绑定一个计数器。每当有一个引用指向该对象时,计数器加一;每当有一个指向它的引用被删除时,计数器减一。这样,当没有引用指向该对象时,该对象死亡,计数器为0,这时就应该对这个对象进行垃圾回收操作。

<2>.标记-清楚算法

为每个对象存储一个标记位,记录对象的状态(活着或是死亡)。分为两个阶段,一个是标记阶段,这个阶段内,为每个对象更新标记位,检查对象是否死亡;第二个阶段是清除阶段,该阶段对死亡的对象进行清除,执行 GC 操作。

<3>.标记-整理算法

标记-整理法是标记-清除法的一个改进版。同样,在标记阶段,该算法也将所有对象标记为存活和死亡两种状态;不同的是,在第二个阶段,该算法并没有直接对死亡的对象进行清理,而是将所有存活的对象整理一下,放到另一处空间,然后把剩下的所有对象全部清除。这样就达到了标记-整理的目的。

<4>.复制算法

该算法将内存平均分成两部分,然后每次只使用其中的一部分,当这部分内存满的时候,将内存中所有存活的对象复制到另一个内存中,然后将之前的内存清空,只使用这部分内存,循环下去。

4.JVM内存结构?方法区里存的什么?方法区怎么实现的?

程序计数器,方法区,栈内存,堆内存,本地方法栈

方法区里存的是:类信息,常量,静态变量等数据。

在JDK1.8中,方法区已经从永久代中独立出来,称为元空间,并且不再位于虚拟机内部,而是使用本地内存。

5.线程池的创建方式?有哪些参数?

两大类:ThreadPoolExecutor、 Executors

参数:核心线程量,最大线程池,最大线程池时间,时间单位,阻塞队列,线程工厂,拒绝策略

6.Mysql默认存储引擎?什么情况下使用Innodb?什么情况下使用Myisam?

默认存储引擎:InnoDB

InnoDB:如果需要支持事务、外键约束和并发访问,以及更好的崩溃恢复和故障转移能力,建议使用 InnoDB 引擎(默认隔离级别是RR,可重复读)

Mysiam:简单的读取存储数据,且需要更快的性能,可以考虑使用 MyISAM 引擎

7.TCP和UDP的区别?

TCP:面向连接的协议,提供可靠的数据传输,通过三次握手建立连接,并使用滑动窗口和确认机制保证数据的可靠性。

UDP:面向无连接的协议,不提供可靠性保证,数据被封装成数据报直接发送,无需建立连接和维护状态。

8.HTTP和TCP的区别?

9.IOC?

控制反转。把对象的创建和对象之间的调用过程,交给Spring管理。

10.AOP?before和after方法有什么区别?

面向切面编程,将一些共性的内容进行抽取,在需要用到的地方,以动态代理的方式进行插入.在不修 改源 码的基础上,还能对源码进行前后增强。

before就是在方法执行前被调用

after就是在方法执行后进行调用,不管方法执行成功与否

11.Bean的生命周期

实例化,属性设置,初始化,销毁

12.Redis集群

<1>.主从复制

从复制是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master),后者称为从节点(slave),数据的复制是单向的,只能由主节点到从节点。默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。

<2>.哨兵Sentinel

哨兵模式是在主从复制基础上加入了哨兵节点,实现了自动故障转移。哨兵节点是一种特殊的Redis节点,它会监控主节点和从节点的运行状态。当主节点发生故障时,哨兵节点会自动从从节点中选举出一个新的主节点,并通知其他从节点和客户端,实现故障转移。

<3>.cluster

在Cluster模式下,Redis将所有的键值对数据分散在多个节点上。每个节点负责一部分数据,称为槽位。通过对数据的分片,Cluster模式可以突破单节点的内存限制,实现更大规模的数据存储。

13.重载和重写的区别

14.Spring循环依赖, 循环依赖解决办法(三级缓存)

循环依赖:有两个or两个以上的bean相互依赖,例如a依赖于b,b依赖于a。循环依赖在spring中是允许存在的,通过添加缓存的方式来解决循环依赖。

一级缓存:单例池,缓存已经走完完整生命周期的bean。

二级缓存:缓存早期的bean(还没有走完生命周期的bean)。

三级缓存:缓存对象工厂,用来创建某个对象。

15.mysql中常见的锁

共享锁:允许其他事务读取当前对象,也允许其他事务从当前对象获取共享锁。

排他锁:不允许其他事务对当前数据进行任何修改操作。

全局锁:粒度最大的锁。该锁下所有数据库中的表都处于只读状态,任何事务都只能读取数据,不能修改数据。

悲观锁:当当前事务加上悲观锁后,其他任何事务不能对当前数据进行修改。等锁释放后才能执行。(适合频繁更新)

乐观锁:允许多个事务同时对数据进行变动。(适合查询频繁)

16.mysql索引,B树,B+树的区别

索引的作用在于可以加速检索的效率,降低数据库的IO成本,通过索引列对数据进行排序,降低数据排序的成本。mysql默认的存储殷勤InnoDB使用的默认索引是B+树。联合索引的顺序是根据第一个关键字决定的所以根据联合索引查询必须遵守最左匹配原则,否则索引失效。

(索引是一种数据结构)

索引优缺点:

B树:非叶子节点和叶子节点都可以存储数据

B+树:只有叶子节点可以存储数据,非叶子节点只存储指针。叶子节点间使用双向指针链接,叶子节点相当于是一个双向有序链表。

17.什么情况下适合建索引,什么情况下不适合建索引

18.索引的分类

19.覆盖索引

20.最左匹配原则

21.String,StringBuffer,StringBuilder的区别?单线程大量操作字符串用哪个?
22.Redis 的过期策略

  • 30
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值