当前位置: 首页 > news >正文

0519Java面试题总结

Java面试题总结

1. JVM调优的场景和调优的内容

调优场景

  • 应用出现OutOfMemoryError内存溢出
  • GC频繁导致应用卡顿
  • 应用吞吐量不达标
  • 应用响应时间过长
  • 堆内存持续增长不释放

调优内容

  • 堆内存调整:-Xms(初始堆大小)、-Xmx(最大堆大小)
  • 新生代老年代比例:-XX:NewRatio
  • Survivor区比例:-XX:SurvivorRatio
  • 选择合适的GC算法
    • 串行收集器:-XX:+UseSerialGC
    • 并行收集器:-XX:+UseParallelGC
    • CMS收集器:-XX:+UseConcMarkSweepGC
    • G1收集器:-XX:+UseG1GC
  • 元空间大小:-XX:MetaspaceSize
  • GC日志分析:-XX:+PrintGCDetails
  • 内存泄漏分析:堆转储分析

2. ThreadLocal原理及常用应用场景

原理

  • ThreadLocal在每个线程内部维护一个ThreadLocalMap
  • 以ThreadLocal实例为key,存储线程私有数据
  • 通过get()/set()方法存取数据
  • 每个线程独立拥有自己的副本,互不干扰

内存泄漏风险

  • ThreadLocalMap的key是弱引用,但value是强引用
  • 如果ThreadLocal实例被回收,key变为null,但value仍然存在
  • 最佳实践:使用后调用remove()方法清理

应用场景

  • 线程上下文信息传递(如用户会话信息)
  • 数据库连接管理(每个线程独立连接)
  • SimpleDateFormat等非线程安全对象的线程安全使用
  • 跨方法参数传递(避免方法参数层层传递)

3. 多线程中join方法的使用

作用

  • 让当前线程等待调用join()方法的线程执行完毕

使用方式

Thread t = new Thread(() -> {// 线程执行逻辑
});
t.start();
t.join(); // 当前线程等待t执行完毕

特点

  • join()方法可以设置超时时间:join(long millis)
  • 调用join()方法会释放当前线程持有的锁
  • 底层基于wait/notify机制实现
  • 常用于主线程等待子线程完成后再继续执行

4. 线程池的使用

核心参数

  • corePoolSize:核心线程数
  • maximumPoolSize:最大线程数
  • keepAliveTime:非核心线程空闲存活时间
  • workQueue:任务队列
  • threadFactory:线程工厂
  • handler:拒绝策略

常用线程池

  • newFixedThreadPool:固定大小线程池
  • newCachedThreadPool:可缓存线程池
  • newSingleThreadExecutor:单线程线程池
  • newScheduledThreadPool:定时任务线程池

最佳实践

  • 使用ThreadPoolExecutor自定义线程池
  • 合理设置线程池大小(CPU密集型/IO密集型)
  • 选择合适的拒绝策略
  • 使用有界队列避免OOM
  • 监控线程池状态

5. 高并发的场景和相关技术实现

高并发场景

  • 电商秒杀
  • 抢红包
  • 实时竞价
  • 社交热点

技术实现

  1. 前端优化

    • CDN加速
    • 静态资源缓存
    • 页面静态化
  2. 服务端优化

    • 分布式架构
    • 微服务拆分
    • 负载均衡
  3. 缓存技术

    • 多级缓存(本地缓存+分布式缓存)
    • Redis集群
    • 缓存预热/降级策略
  4. 消息队列

    • 异步处理(削峰填谷)
    • Kafka/RocketMQ
    • 顺序消息/延迟消息
  5. 数据库优化

    • 读写分离
    • 分库分表
    • 数据库连接池
    • 索引优化
  6. 限流熔断

    • 令牌桶/漏桶算法
    • Sentinel/Hystrix
    • 服务降级
  7. 分布式技术

    • 分布式锁(Redis/Zookeeper)
    • 分布式ID生成
    • 分布式事务
  8. 其他优化

    • 无状态设计
    • 异步非阻塞IO(Netty)
    • 协程/虚拟线程(Java19+)
http://www.dtcms.com/a/199653.html

相关文章:

  • c++字符串常用语法特性查询示例文档(二)
  • 【MySQL】使用文件进行交互
  • C++之函数模板类模板
  • MySQL 故障排查与生产环境优化
  • 科技行业智能化升级经典案例—某芯片公司
  • Java 泛型详解
  • VR 互动实训与展示,借科技开启沉浸式体验新篇​
  • 使用excel 工具做数据清洗
  • excel:时间戳格式与日期格式的互转
  • vue2.0 组件之间的数据共享
  • nginx 漏洞修复 CVE-2024-7347 CVE-2025-23419
  • Java实现PDF加水印功能:技术解析与实践指南
  • luckysheet的使用——17.将表格作为pdf下载到本地
  • Node-Red通过Profinet转ModbusTCP采集西门子PLC数据配置案例
  • BGP综合实验(2)
  • 高项-挣值管理TCPI
  • 软件设计师“测试用例”考点分析——求三连
  • ip与mac-数据包传输过程学习
  • 社交平台推出IP关联机制:增强用户体验与网络安全的新举措
  • 紫光同创FPGA实现AD9238数据采集转UDP网络传输,分享PDS工程源码和技术支持和QT上位机
  • 解决报错 Flask-SQLAlchemy TypeError: ‘float‘ object is not callable
  • Linux内核深入学习(4)——内核常见的数据结构之链表
  • WebRTC技术EasyRTC嵌入式音视频通信SDK助力智能电视搭建沉浸式实时音视频交互
  • 正点原子STM32新建工程
  • 容器化-K8s-镜像仓库使用和应用
  • 【Linux学习】Ubuntu对用户进行管理
  • 云原生安全:错误策略S3存储桶ACL设置为Everyone:FullControl
  • CSS新增表单属性及结构伪类选择器(nth-child)
  • 深入探究AKS Workload Identity
  • AT 指令详解:基于 MCU 的通信控制实战指南AT 指令详解