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

Java面试题--JVM大厂篇(1-10)

引言:

       在这个信息时代,对于准备进入大厂工作的朋友们来说,对于JVM(Java虚拟机)的掌握是面试中的一项重要内容。下面是一些精选的JVM面试题,希望对大家能有所帮助。

正文:

1. JVM有哪几种垃圾收集器?每种的特点是什么?

        JVM主要有以下几种垃圾收集器:Serial收集器、ParNew收集器、Parallel收集器、CMS收集器和G1收集器。每种垃圾收集器都有各自的特点,比如Serial是单线程的垃圾收集器,适用于单核处理器;ParNew是Serial的多线程版本;Parallel则重视系统的吞吐量;CMS设计目标是获取最短的回收停顿时间;G1是一种适用于大内存机器的垃圾收集器。

 2. 新生代和老年代的垃圾收集策略有什么不同?

        新生代通常采用复制算法,老年代多采用标记-整理或标记-清除的策略。新生代因为对象存活率低,使用复制算法可以快速回收;而老年代因为对象存活率高,使用标记-整理可以减少内存的碎片化。

3. 类加载器的双亲委派模型是什么?

        双亲委派模型是类加载器的一种组织结构,在这种模型中,除了顶层的启动类加载器外,其余的类加载器都应有自己的父类加载器。类加载的时候,先委托父类加载器加载,父类加载器不能加载的情况下,才由子类加载器自己去加载。

4. 为什么要有方法区?

       方法区是用来存储类信息、常量、静态变量等数据。它是各个线程共享的数据区域,目的是为了存放类相关的信息,保证类的数据只有一份,节省内存空间,同时也满足类数据的安全访问。

5. Full GC 是什么情况下触发的?

        Full GC主要是在老年代空间不足、方法区空间不足、System.gc()被显示调用、使用JNI的引用时,JNI调用了System.gc()时触发。

6. JVM的内存模型中的Eden区、Survivor区和Tenured区分别是什么?

        在JVM的内存模型中,堆内存被分为新生代和老年代。新生代中含有一个Eden区和两个Survivor区(通常称为From和To)。Eden区用于存放新生成的对象。当Eden区满了,会触发一次Minor GC,还存活的对象会被移动到一个Survivor区。对象在Survivor区中存活了一定次数GC后,如果还没有被回收,那么会被移动到Tenured区,即老年代。

7. 描述一下Minor GC与Full GC的区别是什么?

        Minor GC是指发生在新生代的垃圾收集动作,因为Java对象大多具备朝生夕灭的特性,所以Minor GC非常频繁,回收速度也比较快。Full GC是指清理整个Java堆和方法区,包括新生代、老年代、永久代(或元空间),因此Full GC的速度一般较慢。

8. 什么情况下会发生栈内存溢出?

       当线程请求的栈深度大于JVM所允许的深度,会抛出StackOverflowError异常。如果虚拟机栈可以动态扩展,当扩展时无法申请到足够的内存,就会抛出OutOfMemoryError异常。

9. 简述Java内存模型(JMM)及其重要性。

        Java内存模型定义了共享内存中,各种变量的访问规则,以及在多线程程序中如何通过这些规则来实现线程之间的互斥和可见性保证。JMM能够确保一个线程修改的变量值,对其他线程是可见的,避免了线程间的数据不一致。

10. 对象的finalize()方法什么时候被调用?它用来做什么?

        finalize()方法是对象被垃圾回收器标记并准备回收之前调用的。它用来释放资源,但不推荐使用,因为没有保证何时被调用,甚至是否会被调用,JDK 9已经废弃。 

结束语: 

        以上题目只是冰山一角,JVM领域非常广泛,包括内存模型、类文件结构、类生命周期、虚拟机性能监控与故障处理工具等等,每一个方向都可以深入研究,而深厚的理解和实践经验往往是通过不断学习和工作中的实际应用积累起来的。希望通过这些面试题,能让你在下一个面试中更加自信,最终赢得理想工作岗位。祝你好运!

相关文章:

Java面试题--JVM大厂篇(1-10)

引言: 在这个信息时代,对于准备进入大厂工作的朋友们来说,对于JVM(Java虚拟机)的掌握是面试中的一项重要内容。下面是一些精选的JVM面试题,希望对大家能有所帮助。 正文: 1. JVM有哪几种垃圾收…...

【知识拓展】机器学习基础(一):什么是预处理对象、模型对象 、pipeline、Tokenizer

前言 公司业务需要一套可离线部署的检索增强生成(RAG)大模型知识库,于是最近花了一周时间了解了AI相关的技术。除了查阅各类高质量技术博客,也自行动手进行了一些demo样例。其中包括huggingface、modelscope等平台,虽能使用,但疑惑…...

Linux dig 命令

dig 命令是一个用于在 Unix/Linux 操作系统中执行 DNS 查询的工具。它是 DNS 客户端,通常用于查询 DNS 服务器的信息,如域名解析、IP 地址查询等。 博主博客 https://blog.uso6.comhttps://blog.csdn.net/dxk539687357 一、常见 DNS 记录类型 类型描述…...

后台接口返回void有设置response相关内容,前端通过open打开接口下载excel文件

1、引入依赖&#xff0c;用来生成excel <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.2</version></dependency> 2、接口类代码如下&#xff1a; /*** 企业列表--导出*/Api…...

scp问题:Permission denied, please try again.

我把scp归纳三种情况&#xff1a; 源端root——》目标端root 源端root——》目标端mysql&#xff08;任意&#xff09;用户 源端&#xff08;任意用户&#xff09;——》目标端root用户 在scp传输文件的时候需要指导目标端的用户密码&#xff0c;如root用户密码、mysql用户…...

new CCDIKSolver( OOI.kira, iks ); // 创建逆运动学求解器

demo案例 new CCDIKSolver(OOI.kira, iks); 在使用某个特定的库或框架来创建一个逆运动学&#xff08;Inverse Kinematics, IK&#xff09;求解器实例。逆运动学在机器人学、动画和计算机图形学等领域中非常重要&#xff0c;它用于根据期望的末端执行器&#xff08;如机器人的…...

【Go】Swagger v2 转 OpenApi v3 CLI - swag2op

写这个工具的原因&#xff0c;也是受万俊峰老师的启发&#xff0c;他把工作中重复的事情&#xff0c;整合到一个工具&#xff0c;然后开源&#xff0c;这件事很赞。 swag2op 在 【Go】Go Swagger 生成和转 openapi 3.0.3 这篇文档&#xff0c;主要是对 swagger 如何生成&#…...

python Z-score标准化

python Z-score标准化 Zscore标准化sklearn库实现Z-score标准化手动实现Z-score标准化 Zscore标准化 Z-score标准化&#xff08;也称为标准差标准化&#xff09;是一种常见的数据标准化方法&#xff0c;它将数据集中的每个特征的值转换为一个新的尺度&#xff0c;使得转化后的…...

人工智能的数学基础(高数)

&#x1f31e;欢迎来到人工智能的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年5月29日&…...

React(四)memo、useCallback、useMemo Hook

目录 (一)memo API 1.先想一个情景 2.用法 (1)props传入普通数据类型的情况 (2)props传入对象的情况 (3)props传入函数的情况 (4)使用自定义比较函数 3.什么时候使用memo&#xff1f; (二)useMemo Hook 1.用法 2.useMemo实现组件记忆化 3.useMemo实现函数记忆化 …...

前端介绍及工具环境搭建

前端发展历史 前端介绍 1.什么是前端 前端 &#xff1a;针对浏览器的开发&#xff0c;代码在浏览器中运行后端 &#xff1a;针对服务器的开发&#xff0c;代码在服务器中运行 2.前端的用处&#xff1f; 前端在现代技术环境中扮演着⾄关重要的⻆⾊。 作为⽤户与⽹站或应⽤程…...

uniapp高校二手书交易商城回收系统 微信小程序python+java+node.js+php

每年因为有大量的学生在接受教育&#xff0c;每到大学毕业季的时候&#xff0c;所使用的大量书籍对他们自己来说&#xff0c;很多是没有用&#xff0c;同时由于书籍多和不方便携带&#xff0c;导致很多大学生在毕业时将教材直接丢弃是在校大学生处理已用教材的一种主要方式。然…...

Vue3 图片或视频下载跨域或文件损坏的解决方法

Vue3 图片或视频下载跨域或文件损坏的解决方法 修改跨域配置文件下载方法 修改跨域配置文件 修改vite.config.ts文件proxy里面写跨域地址&#xff0c;如下图&#xff0c;图片地址就是我们要跨域的目标地址&#xff1a; 下载方法 如下就是我取消上面那句后的报错 然后调用两…...

vue2和3区别

Vue2和Vue3在**源码架构、性能提升以及API设计**等方面存在区别。具体分析如下&#xff1a; 1. **源码架构** - **Vue2**&#xff1a;Vue2的源码相对更传统&#xff0c;主要使用Options API来构建组件。这种方式要求开发者在一个对象中定义组件的各种属性&#xff08;如data、m…...

倍福TwinCAT3 PLC编程软件下载安装

1、哪里下载TwinCAT3 链接: Search result | 倍福 中国https://www.beckhoff.com.cn/zh-cn/support/download-finder/search-result/?download_group=97028248下载倍福PLC编程软件需要注册,大家可以提前注册,注册好后就可以开始愉快的下载了 安装前需要注意将各杀毒软件卸…...

Linux一键式管理jar程序执行周期【完整脚本复制可用】

最近由于频繁更新程序&#xff0c;项目又没有自动部署架构&#xff0c;单独执行脚本很麻烦。因此整理了一个脚本&#xff0c;一键式执行。 linux脚本执过程&#xff1a; 1.ps -ef|grep xxx.jar 查询.jar的进程&#xff0c; 2.如果有删除kill -9 进程。 3. 进程删除成功后 nohup…...

设计模式之六大设计原则

文章目录 高内聚低耦合设计原则开闭原则单一职责原则里氏代换原则依赖倒置原则迪米特原则接口隔离原则 高内聚低耦合 提高代码的可读性、可维护性和可扩展性&#xff0c;降低开发和维护的成本&#xff0c;并减少系统的风险 内聚&#xff1a; 内聚表示一个模块内部各个元素之间…...

【iOS】UI学习(一)

UI学习&#xff08;一&#xff09; UILabelUIButtonUIButton事件 UIViewUIView对象的隐藏UIView的层级关系 UIWindowUIViewController定时器与视图对象 UISwitch UILabel UILabel是一种可以显示在屏幕上&#xff0c;显示文字的一种UI。 下面使用代码来演示UILabel的功能&#…...

如何使用Vue和Markdown实现博客功能

创建Vue项目和安装依赖 npm install -g @vue/cli vue create vue-blog cd vue-blog npm install vue-markdown-loader --save-dev配置Vue项目以解析Markdown 在 vue.config.js 文件中添加以下配置: module.exports = {chainWebpack: config => {config...

1初识C#

1、Console安慰 Console.WriteLine("Hello, world!"); // 输出 "Hello, world!" 并换行 Console.WriteLine(123.45); // 输出数字 123.45 并换行 Console.WriteLine("Name: " name); // 输出 "Name: [变量name的值]" 并换行 2、 C…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)

更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...

Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)

目录 一、&#x1f44b;&#x1f3fb;前言 二、&#x1f608;sinx波动的基本原理 三、&#x1f608;波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、&#x1f30a;波动优化…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...

android RelativeLayout布局

<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

Tauri2学习笔记

教程地址&#xff1a;https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引&#xff1a;https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多&#xff0c;我按照Tauri1的教程来学习&…...