在国内互联网企业中,Java工程师的缺口是最大的,可见Java的受欢迎程度。Java需求量大,自然竞争力也就高,如果没有足够的优势,很难在激烈的竞争中脱颖而出。根据学员们的面试反馈情况,千锋武汉Java培训的老师整理了大家在Java面试中常遇到的几个重要基础问题,供大家参考。
1、Java是否会出现内存溢出?
内存溢出是指应用系统中存在无法回收的内存或使用的内存过多,最终使得程序运行要用到的内存大于虚拟机能提供的最大内存。为了解决Java中内存溢出问题,我们首先必须了解Java是如何管理内存的,Java的内存管理就是对象的分配和释放问题。引起内存溢出的原因有很多种,常见的有以下几种:
①内存中加载的数据量过于庞大,如一次从数据库取出过多数据;
②集合类中有对对象的引用,使用完后未清空,使得JVM不能回收;
③代码中存在死循环或循环产生过多重复的对象实体;
④使用的第三方软件中的BUG;
⑤启动参数内存值设定的过小;
2、说说JVM内存组成
Java把内存分两种:一种是栈内存,另一种是堆内存。
①在函数中定义的基本类型变量和对象的引用变量都在函数的栈内存中分配;
②堆内存用来存放由 new创建的对象和数组。
在函数(代码块)中定义一个变量时, Java就在栈中为这个变量分配内存空间,当超过变量的作用域后, Java会自动释放掉为该变量所分配的内存空间;在堆中分配的内存由 Java虚拟机的自动垃圾回收器来管理。
3、”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。
Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译时静态绑定的。static方法跟类的任何实例都不相关,所以概念上不适用。
4、是否可以在static环境中访问非static变量?
static变量在Java中是属于类的,它在所有的实例中的值是一样的。当类被Java虚拟机载入的时候,会对static变量进行初始化。如果你的代码尝试不用实例来访问非static的变量,编译器会报错,因为这些变量还没有被创建出来,还没有跟任何实例关联上。
5、JDK和JRE的区别是什么?
JDK-Java Development Kit,Java开发包。JRE-Java Runtime Environment Java运行环境。
Java运行时环境(JRE)是将要执行Java程序的Java虚拟机。它同时也包含了执行applet需要的浏览器插件。Java开发工具包(JDK)是完整的Java软件开发包,包含了JRE,编译器和其他的工具(比如:JavaDoc,Java调试器),可以让开发者开发、编译、执行Java应用程序。
这几个Java面试中的基础问题还是很重要的,因为多数时候用人单位都会考量大家的基础如何。为了让学员们毕业后顺利求职,千锋武汉Java培训在学员毕业前会有专业的职业素养课程和模拟面试,给予学员多重就业保障。如果你想学习Java,欢迎来千锋武汉Java培训机构报名学习!
相关文章
了解千锋动态
关注千锋教育服务号
扫一扫快速进入
千锋移动端页面
扫码匿名提建议
直达CEO信箱