
java后端面试题目
文章平均质量分 79
每天一个后端面试题目
_TokaiTeio
大三学生,计算机之路学无止境,与君共勉
展开
-
JVM面试题100
JVM(Java Virtual Machine,Java虚拟机)是Java平台的核心组件之一,它是一个虚拟的计算机,能够在各种硬件平台上运行。JVM的作用包括加载、校验、执行字节码指令以及提供一个运行时环境。通过JVM,Java实现了“编写一次,到处运行”的理念。原创 2025-03-07 18:51:16 · 786 阅读 · 0 评论 -
java基础100道面试题
特性接口(Interface)抽象类(Abstract Class)成员变量默认为可以有各种修饰符的变量方法默认为可以有具体实现的方法继承关系类可以实现多个接口类只能继承一个抽象类构造方法没有构造方法可以有构造方法使用场景定义规范提供部分实现和模板不可变对象:一旦创建后,其状态(属性值)不能被修改的对象。特点所有字段必须是final且不可变。不提供任何修改对象状态的方法。如果需要“修改”,则返回一个新的对象。示例Java中的StringInteger等包装类都是不可变对象。原创 2025-03-04 11:25:46 · 951 阅读 · 0 评论 -
微服务100道面试题
是一种将应用程序设计为一组小型、独立部署的服务的架构风格。每个服务运行在自己的进程中,通过轻量级机制(通常是HTTP/REST或消息队列)进行通信。原创 2025-03-03 10:50:17 · 999 阅读 · 0 评论 -
Mysql100道高频面试题
数据库:是按照数据结构来组织、存储和管理数据的仓库。它允许用户高效地访问和管理数据。DBMS(数据库管理系统):是一种软件系统,用于创建和管理数据库。它的作用包括:数据定义(DDL)数据操作(DML)数据查询(DQL)数据控制(安全性、完整性、并发性等)主键(Primary Key):唯一标识表中每一行数据的字段或字段组合,不允许为空且值必须唯一。外键(Foreign Key):用于建立和加强两个表之间的关系,确保引用完整性。外键通常指向另一个表的主键。子查询。原创 2025-03-01 11:56:33 · 2194 阅读 · 1 评论 -
Redis100道高频面试题
单线程的原因Redis的核心操作(如读写、命令执行)非常简单且高效,单线程可以避免多线程间的上下文切换开销。使用I/O多路复用技术(epoll/kqueue/select)来处理并发连接,保证高吞吐量。单线程高效的原理减少了锁竞争和线程切换的开销。命令执行时间短,适合内存操作。数据结构简单,减少了复杂度。哨兵模式是一种高可用解决方案,Redis Sentinel负责监控主从节点的状态,并在主节点故障时自动切换到新的主节点。监控:实时检测主从节点是否正常运行。故障转移。原创 2025-03-02 10:56:11 · 1181 阅读 · 2 评论 -
Java悲观锁与乐观锁介绍,优缺点
当多个线程同时尝试获取同一个锁时,悲观锁策略会假设最坏的情况,即假定多个线程同时获取锁会导致数据不一致。因此,它会采取一种较为保守的策略,避免多个线程同时获取锁。对数据采取“悲观”态度,认为数据随时都有可能被别人改。读取的时候就开始霸占,别人想改得排队,等我改完再说。乐观锁的核心思想是在获取锁之前先进行尝试性读取共享资源,如果读取成功,则认为没有其他线程同时访问该资源,可以获取锁并进行写入操作。如果读取失败,则说明有其他线程同时访问该资源,需要重新进行读取并尝试获取锁。原创 2024-04-25 20:59:47 · 502 阅读 · 2 评论 -
JVM(Java虚拟机)功能特点、垃圾回收机制
垃圾是指在运行程序中没有任何引用指向的对象,这个对象就是需要被回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。原创 2024-04-23 19:33:15 · 1708 阅读 · 0 评论 -
Java中String为什么不可变,这样有什么好处
在Java中,字符串(String)是不可变的,这意味着一旦创建了一个字符串对象,它的内容就不能再被修改。这个设计决策是由Java的创始人詹姆斯·高斯林(James Gosling)做出的,主要是出于内存管理和性能考虑。原创 2024-04-22 21:30:17 · 687 阅读 · 0 评论 -
Java–String, StringBuffer, StringBuilder的区别
在 Java 中,String类型的对象是不可变的,这意味着一旦创建了一个String对象,它的值就不能再被修改。这是因为String对象的value数组是final类型的,这意味着它的值不能被改变。因此,每次对String对象进行操作时,都会创建一个新的对象,而不是修改原始对象。当一个线程需要访问或修改一个String对象时,它会首先获取该对象的锁。其他线程在等待锁的过程中会处于阻塞状态。当锁被释放后,其他线程可以继续执行。由于String对象的值是不可变的,因此在多个线程中共享一个String。原创 2024-04-21 12:06:09 · 407 阅读 · 1 评论 -
Java中的==与equals的区别
首先,==是运算符,equals()是方法。==是一个二元运算符,用于比较两个对象的引用是否相同。当使用==进行比较时,Java会检查两个对象的内存地址是否相同。如果两个对象的内存地址相同,则认为它们是相同的。equals()是一个方法,用于比较两个对象的值是否相同。当使用equals 进行比较时,Java会比较两个对象的属性或内容是否相同。如果两个对象的属性或内容相同,则认为它们是相同的。原创 2024-04-20 20:24:58 · 541 阅读 · 0 评论