java招聘职位描述,附学习笔记+面试整理+进阶书籍

面:为什么要使用双亲委派机制去加载类?

答:避免多份同样字节码的加载,浪费内存。

类的加载方式

  • 隐式加载:new
  • 显示加载:loadClass、forName等

类的装载过程如下图:

面:loadClass和forName的区别?

  • Class.forName得到的class是已经初始化完成了的 (MySQL加载驱动时,需要调用静态代码块完成一些操作)
  • ClassLoader.loadClass得到的class是还没有链接的。(用于Spring IoC中的延迟加载机制)

Java内存模型

JVM内存模型——JDK8如下图所示:

  • 线程私有:程序计数器、虚拟机栈、本地方法栈
  • 线程共享:MetaSpace、Java堆

程序计数器(PC)

  • 当前线程所执行的字节码行号指示器(逻辑)
  • 通过改变计数器的值来选取下一条需要执行的字节码指令
  • 和线程是一对一的关系即“线程私有”
  • 对Java方法计数,如果是Native方法则计数器的值为Undefined
  • 不会发生内存泄漏

Java虚拟机栈(Stack)

  • Java方法执行的内存模型
  • 包含多个栈帧(一个栈帧包括局部变量表、操作栈、动态链接、返回地址等,方法的调用即对于栈帧从虚拟机Stack中入栈到出栈的过程)
  • 当线程请求的栈深度超过最大值,会抛出 StackOverflowError 异常;
  • 栈进行动态扩展时如果无法申请到足够内存,会抛出 OutOfMemoryError 异常。

本地方法栈

与虚拟机栈相似,主要作用于标注了native的方法。

元空间(MetaSpace)

用于存放已被加载的类信息、常量、静态变量。

面:谈谈元空间(MetaSpace)和永久代(PermGen)的区别?

  • 均是方法区(JVM的一种规范)的实现
  • JDK8后元空间替代了永久代
  • 元空间使用本地内存,而永久代使用的是jvm内存,这解决了空间不足的问题。

面:MetaSpace相比PermGen的优势?

  • 字符串常量池(JDK1.7开始移动到Java堆中)存在与永久代中,容易出现性能问题和内存溢出
  • 类的方法的信息大小难以确定,给永久代的大小的指定带来了困难
  • 永久代会为GC带来不必要的复杂性
  • 方便HotSpot与其他JVM如Jrockit的集成(因为永久代是HotSpot独有的)

Java堆(Heap)

  • 是对象实例的分配区域
  • GC管理的主要区域

面:说说JVM三大性能调优参数-Xms、-Xmx、-Xss的含义?

java -Xms128m -Xmx128m -Xss256k -jar xxx.jar

  • -Xss:规定了每个线程虚拟机栈(堆栈)的大小
  • -Xms:堆的初始值
  • -Xmx:堆能达到的最大值

一般将-Xms与-Xmx设置为同样的数值,避免堆扩容时发生的内存抖动,影响程序的稳定性。

内存分配策略

  • 静态存储:编译时确定每个数据目标在运行时的存储空间需求
  • 栈式存储:数据区需求在编译时未知,在运行时模块入口前确定
  • 堆式存储:编译时或运行时模块入口都无法确定需求,需要动态分配

面:谈谈Java内存模型中堆和栈的区别与联系?

  • 联系:引用对象、数组时,栈里定义变量来保存堆中目标的首地址
  • 管理方式:栈自动释放,堆需要GC
  • 空间大小:一般栈比堆小
  • 碎片相关:栈产生的内存碎片远小于堆
  • 分配方式:栈支持静态和动态分配,而堆仅支持动态分配
  • 效率:栈的效率比堆高(栈只有入栈与出栈)

面:请解释下JDK6和JDK6+下intern()方法的区别?

  • JDK6:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用。否则将此字符串对象添加到字符串常量池中,并且返回该字符串对象的引用。
  • JDK6+:当调用intern方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中该字符串的引用。否则,如果该字符串对象已经存在与Java堆中,则将堆中对此对象的引用添加到字符串常量池中,并且返回该引用;如果堆中不存在该对象,则在字符串常量池中创建该字符串并返回其引用。

最后

文章中涉及到的知识点我都已经整理成了资料,录制了视频供大家下载学习,免费分享,诚意满满,希望可以帮助在这个行业发展的朋友,在论坛博客等地方少花些时间找资料,把有限的时间,真正花在学习上,所以我把这些资料,分享出来。相信对于已经工作和遇到技术瓶颈的朋友们,在这份资料中一定都有你需要的内容。

资料免费获取方式:点击这里免费领取Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料

取方式:点击这里免费领取Dubbo、Redis、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术资料](https://gitee.com/vip204888/java-p7)**

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java拦截器和过滤器,2021最新版!

正文 现在市面上的算法资料也五花八门,种类繁多,小编也整理了一份不同于市面且有意思的算法资料,不能说多全面,但是是小编花了很长时间整理归纳出来的,自我感觉还行。分享给同事及群里反响都不错,所以小编…

java排列组合算法优缺点,一招彻底弄懂!

一. 为什么使用spring cloud alibaba 很多人可能会问,有了spring cloud这个微服务的框架,为什么又要使用spring cloud alibaba这个框架了? 最重要的原因在于spring cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础…

001 出错处理

函数strerror() 1.1 函数原型 char *strerror(int errnum)分析&#xff1a;此函数将errnum&#xff08;它通常就说errno值&#xff09;映射为一个出错信息字符串&#xff0c;并返回错误此字符串 。 1.2 代码清单 #include <stdio.h> #include <string.h> #inclu…

java接口作用和好处,持续更新大厂面试笔试题

业界常用的服务注册与发现组件对比 了解服务注册与发现的基本原理后&#xff0c;如果你要在项目中使用服务注册与发现组件&#xff0c;当面对众多的开源组件该如何进行技术选型&#xff1f; 在互联网公司里&#xff0c;有研发实力的大公司一般会选择自研或者基于开源组件进行…

第七章 进程环境 | 001 命令形参、gcc与g++的使用

命令形参 命令行参数是使用main()函数参数来处理的&#xff0c;其中&#xff0c;argc是指传入参数的个数&#xff0c;argv[]是一个指针数组&#xff0c;指向传递给程序的每个参数。 应当指出的是&#xff0c; argv[0]存储程序的名称&#xff0c;argv[1]是一个指向第一个命令行…

java接口实例化对象和类实例化对象,附赠课程+题库

面试整体事项 简历要准备好&#xff0c;联系方式一定要正确清晰醒目&#xff0c;项目经历按照时间倒序阐述&#xff0c;注意描述自己在项目中承担的职责&#xff0c;简历的模板尽量选择简洁的&#xff0c;毕竟程序员大部分还是喜欢简单明了的。推荐boss直聘&#xff0c;我觉得…

java接口开发规范,干货满满

第一个模块&#xff1a;数据库 1.1 腾讯数据库面试问题 解释ACID四大特性 原子性的底层实现 数据库宕机后恢复的过程 如何保证事务的ACID特性 MySQL日志类型 这5个题目相对来说是比较普遍的&#xff0c;这里我就不一一给出答案了&#xff0c;给大家看下我的那个数据库学…

001 makefile的使用

标题 标题 当我们有多个源程序时&#xff0c;用gcc每个都编译&#xff0c;这样我们没有修改过的源文件也得重新编译一次&#xff0c;很麻烦&#xff0c;这时候写makefile就派上了用场&#xff0c;可以大大的提高我们的编码和调试速度。( 注意&#xff1a;头文件并不参加链接和…

java接口的修饰符可以为,附架构师必备技术详解

第一章 MySQL入门与初步 1.1 MYSQL 简介 1.2 关系数据库管理系统 1.3 MYSQL 使用的 SQL 语言 1.4 MYSQL 数据处理 第二章 MySQL的安装 2.1 MYSQL 系统的安装布局 2.2 安装 MYSQL 系统的分发 2.3 安装后期的的设置与测试 2.4 系统的升级 2.5 在同一台机器上运行多个 MYSQL 服务…

ALSA【一】

ALSA是Advanced Linux Sound Architecture 的缩写&#xff0c;目前已经成为了linux的主流音频体系结构。 在内核设备驱动层&#xff0c;ALSA提供了alsa-driver&#xff0c;同时在应用层&#xff0c;ALSA为我们提供了alsa-lib&#xff0c;应用程序只要调用alsa-lib提供的API&…

java接口的定义与实现,学习路线+知识点梳理

Spring框架自诞生以来一直备受开发者青睐&#xff0c;有人亲切的称之为&#xff1a;Spring 全家桶。Spring更是避免了重复造轮子的工作并跟随着互联网行业的发展做出不断的更新&#xff0c;很多研发人员把spring看作心目中最好的Java项目&#xff0c;没有之一。 **可以毫不夸张…

第3章 文件IO | 001 文件描述符

概述 在Linux系统中一切皆可以看成是文件&#xff0c;文件又可分为&#xff1a;普通文件、目录文件、链接文件和设备文件。文件描述符&#xff08;file descriptor&#xff09;是内核为了高效管理已被打开的文件所创建的索引&#xff0c;其是一个非负整数&#xff08;通常是小整…

java提取图片中的文字,深入分析

第一个暴击&#xff1a;Spring 上一份Spring的手绘思维脑图&#xff08;就像是个知识大纲总结&#xff09;&#xff0c;预览一下Spring的知识点&#xff0c;心里有个谱。不过这边我是采用的截图方式&#xff0c;为了把全部的内容都截取出来&#xff0c;所以整个就比较小&#…

java基础入门传智播客答案,GitHub已标星16k

选择 在现在这个浮躁而又拜金的社会&#xff0c;我相信很多人做技术并非出于热爱&#xff0c;只是被互联网的高薪吸引&#xff0c;毕竟技术岗位非常枯燥&#xff0c;不仅要面对奇奇怪怪的需求&#xff0c;还要不停的充实自己避免被淘汰。所以想要吃好技术这碗饭并不容易。 我…

java基础入门第二版二手,细节爆炸

一面&#xff1a;70分钟 突击电话面试 正思考着项目功能模块&#xff0c;阿里面试官打来了电话&#xff0c;开始了阿里一面。 阿里面试官自我介绍&#xff0c;介绍了5分钟左右&#xff0c;部门的情况&#xff0c;主要的业务 提问开始 会哪些操作系统 Linux会一点说一下操作指…

进程通讯:管道

管道&#xff0c;通常指无名管道&#xff0c;是 UNIX 系统IPC最古老的形式。 1、特点&#xff1a; 它是半双工的&#xff08;即数据只能在一个方向上流动&#xff09;&#xff0c;具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信&#xff08;也是父子进程或者兄…

java基础入门答案谭晓芳,原理+实战讲解

One&#xff1a;JVM实践思维图&#xff08;完整版&#xff09; Two&#xff1a; 走近Java 概述 Java技术体系Java发展史Java虚拟机家族&#xff1a;&#xff08;Sun Classic/Exact VM、HotSpot VM、Mobile/Embedded VM、BEA JRockit/IBM J9 VM、BEA Liquid VM/Azul VM、Apache…

java基础常问面试题,面试必问

一、首先本职工作一定要做好做精 本人之前在干兼职的时候&#xff0c;也忽视过本职工作&#xff0c;从而导致自己落后平均技术水平&#xff0c;虽然之后迎头赶上&#xff0c;但这不能不算是个遗憾。前在接一些活的时候就感觉技术的重要性了&#xff0c;如果当年我技术再好些&a…

java基础教程哪个好,吐血整理

RabbitMQ&#xff1a; 优点&#xff1a;轻量&#xff0c;迅捷&#xff0c;容易部署和使用&#xff0c;拥有灵活的路由配置 缺点&#xff1a;性能和吞吐量较差&#xff0c;不易进行二次开发 RocketMQ&#xff1a; 优点&#xff1a;性能好&#xff0c;稳定可靠&#xff0c;有活…

java基础教程哪个好,面试必会

如何才可以进大厂&#xff1f; 答案其实也很简单&#xff0c;能力学历。不知道大家有没有发现&#xff0c;大厂的一些部门对于学历要求已经放低了&#xff0c;阿里的一些部门同样也招大专学历的程序员&#xff0c;当然肯定也是因为他的能力足够出色。 对于准备秋招的你来说&a…