Java采访一般会问的是什么?
2022-03-10 04:16:53 2
面试是通过书面或面试来检查一个人的工作能力,并收集物体,最初可以判断候选人是否可以集成到他的团队中。那么Java采访一般问的是什么?这是每个人组织你的第一个Java面试,让每个人都看到!
Java采访一般会问的是什么?
1. Java会有内存溢出吗?怎么解决?
内存溢出意味着在应用程序中无法回收的应用程序中的内存太大,最终使程序运行程序以通过虚拟机可以提供的最大内存来使用。为了解决yava的问题,我们必须首先了解Java如何管理内存。 Java的内存管理是对象的分配和释放。在Java中,程序的分发由程序完成,内存由垃圾收集GC完成。程序员不需要通过调用GC函数来释放内存,因为不同的JVM实现者可以使用不同的算法管理GC,一些内存在一定程度上使用,GC开始工作,并且有一个定时的执行,有些被中断执行GC。但是,GC只能回收无用的空间,不再被其他对象引用。 Java的内存废物回收机制来自程序的主要操作对象,以检查参考链,当遍历时,并且未引用的隔离对象用作垃圾。
导致内存溢出有很多原因,有几个以下内容:
l存储器中加载的数据量太大,例如从数据库中取出太多数据;
l在集合类中有一个对象的引用。使用后未清空,因此JVM无法回收;
l代码有一个死循环或循环生成过多的重复对象实体;
l使用的第三方软件中的错误;
l发射参数的廉价值太小;
3.内存溢出解决方案
虽然记忆溢出是棘手的,但还有一个相应的解决方案,虽然还有一个解决方案,但它可以通过简单的,步骤逐步解决。
第一步是修改JVM启动参数并直接添加内存。这似乎很简单,但很容易忽视。默认情况下可以使用JVM到64M,Tomcat默认为使用内存128MB,这对于略微复杂的系统来说是不够的。在一个项目中,通常报告“outofMemory”错误是因为启动参数使用的默认值。因此, - XMS,-XMX参数不得忘记添加。
步骤2,检查错误日志,请参阅“OutofMemory”错误之前还有其他异常或错误。在一个项目中,使用两个数据库连接,专用于发送短信数据库连接使用DBCP连接池管理,用户不发送短信,故意将数据库连接到用户名,以便日志中有许多数据库连接。日志在一段时间后,出现“outofMemory”错误。在分析后,这是由于DBCP连接池错误,数据库连接未启动,并且连接未释放,最终使DBCP报纸“OutofMemory”错误。修改正确的数据库连接参数后,内存溢出中没有错误。
查看日志对于分析内部分配非常重要。通过仔细查看日志,在分析之前已经分析了哪些操作,并且可以大致定位。
在第三步中,将经验丰富的程序员安排检查和分析代码,了解可能发生内存溢出的位置。专注于以下几点:
l检查代码中是否存在死循环或递归调用。
l检查是否有大循环反复生成新对象实体。
l检查是否存在所有数据的查询数据库查询。通常,如果您一次录制100,000条记录,则可能会导致内存溢出。这个问题更隐藏。在线之前,数据库中的数据较少,问题不易发布问题。在线之后,数据库中有更多数据,查询可能导致内存溢出。因此,对于数据库查询,尝试查询。
l CHECTION对象是否存在问题,例如列表,地图。集体对象,如列表,地图将始终具有对象的引用,以便GC无法回收这些对象。
步骤4,使用内存来查看工具以动态查看内存使用情况。在一个项目在线之后,每个系统中的内存溢出将发生两天。这种情况通常是代码中的缓慢内存泄漏。它不能用上面的三个步骤解决,这需要内存来查看工具。
有很多情况,例如:
1.数据量太大;死循环;静态变量和静态方法太多;递归;不确定是否引用对象;
2.虚拟机不会回收内存(内存泄漏);
要钝化,内存会大于程序运行的最大内存大于虚拟机可以提供的最大内存。内存溢出问题应由业务和系统规模确定,某些系统对于某些系统可能罕见,但某些系统仍然是一个非常常见的解决方案。
一个是优化程序代码。如果业务大,逻辑很复杂,最大限度地减少对全局变量的引用,让程序使用变量来释放引用,让垃圾收集器回收,释放资源。
二,物理解决方案,增加物理内存,然后通过:-XMS256M -XMX256M - :maxnewsize = 256m - :maxpermsize = 256m的修改
2.谈谈JVM内存组合
简单的说堆和堆栈在java
Java划分两个内存:一个是堆栈内存,另一个是内存堆栈
1.在函数的堆栈存储器中分配了在功能中定义的基本类型变量;
2.堆内存用于存储由新的物体和数组
当在函数(代码块)中定义变量时,Java在堆栈中为此变量分配内存空间。超过变量的范围后,Java将自动释放分配给变量的内存空间;堆内存中的分配由Java虚拟机的自动垃圾收集器管理
堆的优点是动态地分配内存大小,并且生存期不必提前告诉编译器,因为它在运行时动态分配。缺点是在运行时动态分配内存,并且访问速度较慢;
堆栈的优点是访问速度比桩更快,并且缺点是必须确定堆栈中的数据大小。
Java Piles分为三个地区:新的,旧和永久
GC有两个线程:
将新创建的对象分配给新区域。当区域填充时,当区域填充时,它将移动到旧区域。当旧区域填充将触发GC主线程旅行者内存的所有对象时。旧区域的大小等于xmx minus -xmn
Java堆栈存储
堆栈调整:参数有+ USDefaultStackSize -XSS256K,表明每个线程可以应用256K堆栈空间
每个线程都有自己的堆栈
3,“静态”关键字意味着什么?您能覆盖Java中的私有或静态方法吗?
“静态”关键字表示可以在没有类的情况下访问成员变量或成员方法而没有实例变量。
Java中的静态方法不能被覆盖,因为方法覆盖范围基于运行时动态绑定,并且静态方法在编译时是静态绑定。静态方法与任何INST有关Ance的课程,所以它不适用。
4.您可以访问静态环境中的非静态变量吗?
静态变量属于Java中的类,所有实例中的所有值中都是相同的。当由Java虚拟机加载类时,将初始化静态变量。如果您的代码尝试访问没有实例的非静态变量,则编译器将报告错误,因为未创建这些变量,并且它们尚未与任何实例关联。
5. JDK和JRE有什么区别?
Java开发套件,Java开发套件JRE --- Java运行时环境Java运行环境
Java运行时环境(JRE)是一个Java虚拟机,它将执行Java程序。它还包含执行applet的浏览器插件。 Java开发套件(JDK)是一个完整的Java软件开发包,包括JRE,编译器和其他工具(例如:javadoc,Java调试器),允许开发人员开发,编译和执行Java应用程序。
面试
面试中有许多表格,取决于面试的内容和要求,可以大致分为以下内容:
问题
如果招聘人员按照拟议的子市场提出,请回答。其目的是遵守特殊环境中求职者的表现,评估他们的知识和业务,并确定解决问题的能力,从而获得关于求职者的第一手信息。
压力
招聘人员有意识地对求职者施加压力,作为一系列问题或一些事件,详细和追逐根源,直到没有答案。这种方法主要观察求职者在特殊压力和思维程度和追求程度的反应。
任意风格
也就是说,招聘人员和求职者有很大的天空,没有保证金,氛围很放松,无拘无束,招聘人员和求职者可以自由地表达他们的演讲。这种方法的目的是观察候选人,行为,知识,能力,气质和分散在空闲聊天中。
设想
招聘人员设定了一个方案,提出了一个问题或计划,要求作业进入角色模拟,目的是评估其分析问题并解决问题。
融合的
招聘人员以各种方式调查求职者的综合能力和质量,例如使用外语,需要即时构成,或即兴演讲,或者询问文本段,甚至经营计算机等,检查其外语水平,文本能力,书法和口感表达,例如各方面的各个方面。
上述汇率大致划分了面试的种类,在实际访谈过程中,招聘人员可能采取一个或多个面试方法,或者可能在某个方面拥有更深的深度,深层深度。调查,其目的是选择未偿还的候选人。