面试总结20250421

Posted by WK on 2025-04-21
Estimated Reading Time 2 Minutes
Words 686 In Total
Viewed Times

假设系统访问量特别特别大,怎么办?

  1. 服务器硬件
  2. 搭建集群
  3. nginx 负载均衡
  4. 缓存
  5. 数据库优化
  6. 熔断降级
  7. 限流
  8. SQL 优化

如果存储量超过设计的表存储怎么办?

  1. 垂直:服务器硬件升级
  2. 水平:分库分表、分区分片、集群
  3. 数据压缩
  4. 清理无用数据
  5. 冷热分离
  6. 定期备份
  7. 做好监控预防

JVM 内存结构和 GC 算法?

JVM 内存结构

  1. 程序计数器:记录当前线程执行的字节码指令地址
  2. 虚拟机栈:每个线程都有自己的栈,保存方法调用的局部变量、操作数、返回地址等信息
  3. 本地方法栈:与虚拟机栈类似,主要保存 native 方法调用的局部变量、操作数、返回地址等信息
  4. 堆:存放对象实例,包括新创建的对象、数组、常量池等
  5. 方法区:存放类信息、常量、静态变量、即时编译器编译后的代码等

GC 算法

  1. 标记-清除算法:首先标记出所有需要回收的对象,然后统一回收掉所有被标记的对象
  2. 复制算法:将内存分为大小相同的两块,每次只使用其中一块,当这一块内存用完时,就将还存活的对象复制到另一块内存上,然后清理掉原来的内存
  3. 标记-整理算法:标记-清除算法的变种,标记过程仍然与前者一样,但后续步骤不是直接对可回收对象进行清理,而是让所有存活的对象向一端移动,然后直接清理掉端边界以外的内存
  4. 分代收集算法:根据对象存活周期将内存划分为几块,不同代采用不同的算法进行垃圾回收,如新生代采用复制算法,老年代采用标记-清除算法

垃圾回收器?

  1. Serial 收集器:单线程收集器,只使用一个线程进行垃圾回收,适合于小数据量的内存回收
  2. ParNew 收集器:Serial 收集器的多线程版本,适合于多核 CPU
  3. Parallel Scavenge 收集器:复制算法的收集器,关注点是吞吐量,适合于后台应用
  4. Parallel Old 收集器:Parallel Scavenge 收集器的老年代版本,使用标记-整理算法
  5. CMS 收集器:以最短回收停顿时间为目标的收集器,基于标记-清除算法,适合于对响应时间要求高的应用
  6. G1 收集器:面向服务端应用的垃圾回收器,基于标记-整理算法,可预测停顿时间,适合于大内存的应用

If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !