课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
随着互联网软件编程开发技术的不断发展,以及企业对编程开发程序员的需求的增加,java开发一度成为了编程行业中的主流开发语言。今天,我们就一起来了解一下,企业在面试java程序员的时候都有哪些常见面试问题。
1)Java是如何实现跨平台的?
注意:跨平台的是Java程序,而不是JVM。JVM是用C/C++开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的JVM
答:我们编写的Java源码,编译后会生成一种.class文件,称为字节码文件。Java虚拟机(JVM)就是负责将字节码文件翻译成特定平台下的机器码然后运行,也就是说,只要在不同平台上安装对应的JVM,就可以运行字节码文件,运行我们编写的Java程序。
而这个过程,我们编写的Java程序没有做任何改变,仅仅是通过JVM这一“中间层”,就能在不同平台上运行,真正实现了“一次编译,到处运行”的目的。
2)什么是JVM?
解析:不仅仅是基本概念,还有JVM的作用。
答:JVM,即JavaVirtualMachine,Java虚拟机。它通过模拟一个计算机来达到一个计算机所具有的的计算功能。JVM能够跨计算机体系结构来执行Java字节码,主要是由于JVM屏蔽了与各个计算机平台相关的软件或者硬件之间的差异,使得与平台相关的耦合统一由JVM提供者来实现。
3)JVM由哪些部分组成?
解析:这是对JVM体系结构的考察
答:JVM的结构基本上由4部分组成:
类加载器,在JVM启动时或者类运行时将需要的class加载到JVM中
执行引擎,执行引擎的任务是负责执行class文件中包含的字节码指令,相当于实际机器上的CPU
内存区,将内存划分成若干个区以模拟实际机器上的存储、记录和调度功能模块,如实际机器上的各种功能的寄存器或者PC指针的记录器等
本地方法调用,调用C或C++实现的本地方法的代码返回结果
4)类加载器是有了解吗?
解析:底层原理的考察,其中涉及到类加载器的概念,功能以及一些底层的实现。
答:顾名思义,类加载器(classloader)用来加载Java类到Java虚拟机中。一般来说,Java虚拟机使用Java类的方式如下:Java源程序(.java文件)在经过Java编译器编译之后就被转换成Java字节代码(.class文件)。
类加载器负责读取Java字节代码,并转换成java.lang.Class类的一个实例。每个这样的实例用来表示一个Java类。通过此实例的newInstance()方法就可以创建出该类的一个对象。实际的情况可能更加复杂,比如Java字节代码可能是通过工具动态生成的,也可能是通过网络下载的。
面试官:Java虚拟机是如何判定两个Java类是相同的?
答:Java虚拟机不仅要看类的全名是否相同,还要看加载此类的类加载器是否一样。只有两者都相同的情况,才认为两个类是相同的。即便是同样的字节代码,被不同的类加载器加载之后所得到的类,也是不同的。比如一个Java类com.example.Sample,编译之后生成了字节代码文件Sample.class。两个不同的类加载器ClassLoaderA和ClassLoaderB分别读取了这个Sample.class文件,并定义出两个java.lang.Class类的实例来表示这个类。这两个实例是不相同的。对于Java虚拟机来说,它们是不同的类。试图对这两个类的对象进行相互赋值,会抛出运行时异常ClassCastException。
作者:我没有三颗心脏
节选:博客园
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!