目录
6.Mysql默认存储引擎?什么情况下使用Innodb?什么情况下使用Myisam?
21.String,StringBuffer,StringBuilder的区别?单线程大量操作字符串用哪个?
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.什么情况下适合建索引,什么情况下不适合建索引