spring面试总结
spring 篇spring IOC (控制反转)📖 定义:IoC(Inversion of Control,控制反转)是一种 设计思想,指的是对象的创建与依赖关系的管理不再由程序员控制,而是交由容器(如 Spring)来管理。 🔧 二、传统写法 vs IoC 思想👎 传统写法(耦合度高):12345678910111213class UserDao { public void save() { System.out.println("Saving user"); }}class UserService { private UserDao userDao = new UserDao(); // 手动创建依赖 public void doBusiness() { userDao.save(); }} 👍 使用 IoC:12345678910111213141516@Componentclass UserDao { ...
计网面试题
面试官:当你在浏览器上输入一个url,回车之后发生了什么 我: 你在浏览器输入 URL 并回车: ↓ 解析 URL(协议、主机、路径等)↓ 浏览器查找缓存(DNS、本地缓存、HTTP 缓存等)↓ DNS 域名解析(将域名转换为 IP)↓ 建立 TCP 连接(三次握手)↓ 发起 HTTP 请求↓ 服务器处理请求,返回响应(HTML 等)↓ 浏览器解析渲染页面(HTML -> DOM、CSS、JS 执行)↓ 页面展示出来 面试官:TCP和UDP的区别 我: TCP 像打电话📞:你要接通对方,确保每句话听清楚。 UDP 像寄明信片📮:你写完直接发,收不收到不管,发的快。 核心区别详解 1️⃣ 连接机制 TCP 是面向连接的,通信前要建立连接(三次握手)。 UDP 是无连接的,直接发送,不需要握手。 2️⃣ 是否可靠 TCP 保证可靠传输 包含顺序控制 有确认应答 ACK 丢包重传(超时重传、滑动窗口) 有拥塞控制 UDP 是尽力而为,不可靠 不确认、不重传、不排序,收不到就丢了 程序自己实现可靠性(如 QUIC 或 RTP) 3️⃣ 传输效率 ...
小怪兽的刷题日记
.reveal-on-hover { background-color: #ccc; color: transparent; border-radius: 4px; padding: 4px 8px; transition: color 0.3s ease; cursor: pointer; } .reveal-on-hover:hover { color: #000; } 2025-07-27 11:39 刷题刷的觉得自己是个傻子 LC 91 解码方法解码方法 动态规划这道题我一开始一直没能理解 这两行代码12if (one >= 1 && one <= 9) dp[i] += dp[i-1]; if (two >= 10 && two <= 26) dp[i] += dp[i-2];我一直在思考为什么 dp[i] += dp[i-1],dp[i] += dp[i-2]。想了一个半小时后我终于茅塞顿开! 分析第 i 个字符可能的解码方式 第 i 个字符 s[i-1 ...
JAVA多线程面试题
.reveal-on-hover { background-color: #ccc; color: transparent; border-radius: 4px; padding: 4px 8px; transition: color 0.3s ease; cursor: pointer; } .reveal-on-hover:hover { color: #000; } 八股synchronized 的锁升级过程 无锁 ↓(线程获得锁) 偏向锁(记录线程ID) ↓(出现其他线程竞争) 撤销偏向锁 ↓(CAS 成功) 轻量级锁(用户态自旋锁) ↓(CAS 多次失败) 重量级锁(内核态阻塞锁) 面试总结 面试官:介绍一下new线程的几种方式 我: 继承Thread 最简单的 实现 Runnable 接口,需要重写run方法 继承 Callable 接口 + FutureTask (有返回值) 面试官: 三个线程,依次打印数字 1 ~ 9,每个线程打印一个数字,三个线程之间 轮流执行,形成交替打印的效果。简单说一下思 ...
JAVA基础面试题
JAVA基础篇八股文什么是反射 含义反射是 Java 提供的一种机制,可以在运行时动态地获取类的信息、创建对象、调用方法、访问字段。 换句话说: 平时你是写死调用类、方法 反射让你在“运行时”动态操作类和对象 🧠 举个最简单的例子👇 正常方式:12Person p = new Person();p.sayHello(); 👇 反射方式:1234Class<?> clazz = Class.forName("Person");Object obj = clazz.getDeclaredConstructor().newInstance(); // 创建对象Method method = clazz.getMethod("sayHello"); // 找到方法method.invoke(obj); // 调用方法 🔍 说明: Class.forName(“类名”):加载类 getDeclaredConstruc ...
简历项目面试题
短剧 面试官:什么是S3 我: AWS 的 S3 是 AWS 提供的一种 对象存储服务,主要用于在云端存储和检索任何数量的数据。 面试官:用过MinIO吗? 我: 我没有用过MinIO🧠MinIO 是一个高性能、开源的对象存储系统,兼容 Amazon S3 接口,常用于私有云、本地部署或边缘计算场景下的对象存储。MinIO 是一个轻量、兼容 S3 的对象存储服务,适合本地部署和私有云场景,特别适合企业内部或开发者使用。 面试官:对象存储,文件存储,块存储的区别是什么? 我: 文件存储给人用、对象存储给程序用、块存储给操作系统用。 特性 文件存储 对象存储 块存储 📦 存储单位 文件(File) 对象(Object) 块(Block) 📁 组织方式 文件夹 + 文件路径结构 扁平结构,用唯一ID访问 无结构,由操作系统管理 🔌 访问方式 路径访问(如 /home/a.txt) API/URL 访问(如 s3://...) 挂载磁盘后由操作系统访问 🧠 元数据支持 有限(创建时间、大小等) 丰富(可自定义键值对) 几乎无(仅存数据) ...
MYSQL的面试题
数据库进阶学习
JVM垃圾回收
什么是垃圾回收垃圾回收指的是:自动清除程序中不再被使用的对象所占用的内存空间。JVM 会跟踪哪些对象仍然“可达”,哪些对象已经“不可达”,并自动释放不可达对象占用的内存。 内存泄漏:不再使用的对象在系统中未被回收。内存泄漏会导致内存溢出 哪些内存区域会被回收? 区域 是否 GC 管理 Java 堆(Heap) ✅ 主要回收区 方法区(元空间) ✅ 部分可回收(如类元信息) 栈、本地方法栈、程序计数器 ❌ 不受 GC 管理 方法区的回收🔹二、什么情况下类信息可以被回收?前提:类必须“不可达”才能被卸载。 JVM 会回收类的元信息,但 只有满足以下条件时,类才会被认为“无用”: 该类的所有实例都被回收; 加载该类的类加载器已被回收; 该类的 java.lang.Class 对象没有被引用。 👉 一句话:类加载器 + 类本身 + 所有实例都“不可达”,才能触发卸载和方法区回收。 使用的情况很少 堆的回收如何判断对象是否可以回收可达性分析算法 基本思想: 从一组被称为 GC Roots 的根对象出发,沿着对象的引用链向下搜索,凡是能从 GC ...
JVM内存结构
JVM的组成的运行时数据区JVM 由三大部分组成: - 类加载器 - 运行时数据区 - 执行引擎 运行数据区也分五个小区域,两大类 区域名称 线程共享 线程私有 用途说明 程序计数器 ✅ 当前执行指令位置 Java 虚拟机栈 ✅ 方法调用过程中的数据存储 本地方法栈 ✅ 本地方法调用 堆(Heap) ✅ 所有对象存储 方法区/元空间 ✅ 类信息、常量、静态变量 内存区域 存储内容 生命周期 堆(Heap) 所有对象实例、数组 和JVM同生共死 栈(Stack) 每个线程的方法调用栈帧 随线程创建与销毁 方法区 类的结构、常量池、静态变量等 和JVM同生共死 本地方法栈 Native方法调用信息 随线程创建与销毁 程序计数器 当前线程执行字节码的行号指示器 随线程创建与销毁 程序技术器程序计数器是 JVM 中的一块非常小的内存空间,用于记录当前线程所执行字节码的行号地址。 - 因为在Java虚拟机的多线程环境下,为了支持线程切换后能够恢复到正确的执行位置,每个线程都需要有一个独立的程序计数器,否则 ...
JVM字节码和类加载
字节码的组成+——————————+| 魔数(Magic Number) |+——————————+| 版本信息(Version) |+——————————+| 常量池(Constant Pool) |+——————————+| 访问标志(Access Flags)|+——————————+| 类信息(This/ Super) |+——————————+| 接口(Interfaces) |+——————————+| 字段(Fields) |+——————————+| 方法(Methods) |+——————————+| 属性(Attributes) |+——————————+ 一个简单的HelloWorld程序123456public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } ...
JVM导学
什么是JVM 定义:JVM(Java Virtual Machine,Java 虚拟机)是一个可以运行 Java 字节码程序的虚拟计算机,它是 Java 技术的核心组件之一。简单来说:JVM 是一种 运行 Java 程序的虚拟环境,它把 Java 编译后的 .class 字节码文件转换成机器可以理解的指令,并在不同的操作系统上执行,使得 Java 实现了“一次编写,到处运行”(Write Once, Run Anywhere)的理念。 主要作用: 执行 Java 字节码:Java 源代码被编译为字节码(.class 文件),由 JVM 来加载和执行。 内存管理:包括堆内存、栈内存、方法区等,是 JVM 自动垃圾回收(GC)机制的基础。 跨平台支持:JVM 为 Java 提供平台无关性,字节码在任意支持 JVM 的系统上都能运行。 安全性与隔离性:JVM 能隔离不同的应用程序并进行权限控制,防止恶意代码破坏系统。 性能优化:如 JIT(即时编译器),能在运行时将热点代码编译为本地机器码,提高执行效率。 比较JVM、JRE、JDK 名称 全称 简要定义 JVM J ...
JUC编程
重新认识JUC
















