面试官:谈谈你对Java平台的理解?

简介: 面试官:谈谈你对Java平台的理解?

image.png

当你听到这个问题的时候,可能会有点不知所措。这个问题讲实话有点笼统,太开放了!

如果你当时稍微一紧张就会。。额,停顿。。感觉有点吃亏!那怎么回答这个问题呢?

其实对于这类比较笼统的问题,首先你要表现的胸有成竹,要让自己的回答让面试官感觉你的知识是有系统化的而不是零散的!而且要面试官觉得你是一个知其然并知其所以然的人!

比如这样回答:Java是一种面向对象的语言,它具有跨平台性,一次书写,到处运行(Write once,run anywhere)。因为Java是把源码通过JavaC编译,生成了字节码。字节码并不是可以直接运行的机器码,而是再通过JVM的解释器将字节码转换成最终的机器码。所以Java是因为有JVM屏蔽了操作系统和硬件的细节情况下实现了跨平台性!


并且有垃圾收集器。Java通过垃圾收集器来回收和分配内存,绝大部分情况下我们的编码都不需要操心内存的回收和分配,常见的垃圾回收器有SerialGC,ParallerGC,CMS,G1等。(当然你不熟悉这几种的话还是别说了,别给自己挖坑)


而且平时下还会接触到JRE和JDK。JRE(Java Runtime Environment),也就是Java运行环境,包含了JVM和Java类库等。而JDK(Java Development Kit) 可以视为JRE的超集,还提供了一些工具比如各种诊断工具:jstack,jmap,jstat等(注意这几种工具不熟就别说了!)


这当然不是标准答案了,只要你把你知道的有关于Java的,并且这方面你是做的深入了解的点说出来,让面试官觉得其实你是一个肯挖掘的人,了解东西有深度这样就行了!


一般这种问题都是开头的第一个问题,你的回答其实是有指向性的,你可以把知识点往你知道的多的地方引!一般而且面试官都会顺着你说的问题来问,除非你说的太有深度了,面试官也不懂了哈哈哈!


image.png

比如上面回答的:JVM的解释器将字节码转换成最终的机器码。就如其实你对垃圾处理器不太熟悉但是你对类加载这一块特别熟,你知道


BootstrapClassLoader,ApplicationClassLoader,ExtensionClassLoader。知道类加载过程:加载,验证,链接,初始化。还会自定义ClassLoader。就说!使劲的说!就往这方向带。


还有上面"JVM屏蔽了操作系统和硬件的细节",其实就是我们不管是要在windows上还是linux都需要安装jdk才能跑Java。其实也就是说我们不管在哪个操作系统,我们装了jdk,Java就都能跑,这就是跨平台啦!


还有上面提到的"通过JVM的解释器将字节码转换成最终的机器码"。其实不太准确,怎么说呢?绝大部分情况下Java都是通过解释执行的,但是常见的JVM都提供了JIT(Just-In-Time)编译器,也就是动态编译器,JIT可以在运行时将热点代码编译成机器码,那这部分代码就是编译执行了!(所以下次面试官问你,你还能把这个答上!)



相关文章
|
2月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
2月前
|
Java 编译器 C++
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
这篇文章解释了Java能够实现“一次编写,到处运行”的原因,主要归功于Java虚拟机(JVM),它能够在不同平台上将Java源代码编译成的字节码转换成对应平台的机器码,实现跨平台运行。
【Java基础面试一】、为什么Java代码可以实现一次编写、到处运行?
|
2月前
|
Java
【Java基础面试四】、介绍一下Java的数据类型
这篇文章介绍了Java的数据类型,包括8种基本数据类型(整数、浮点、字符、布尔)和3类引用数据类型(数组、类、接口),并提供了基本数据类型所占内存空间和数据范围的详细信息。
|
2月前
|
Java C++
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
这篇文章讨论了Java单继承的设计原因,指出Java不支持多继承主要是为了避免方法名冲突等混淆问题,尽管Java类不能直接继承多个父类,但可以通过接口和继承链实现类似多继承的效果。
【Java基础面试十七】、Java为什么是单继承,为什么不能多继承?
|
2月前
|
Java
【Java基础面试三】、说一说你对Java访问权限的了解
这篇文章介绍了Java中的四种访问权限:private、default(无修饰符时的访问权限)、protected和public,以及它们分别在修饰成员变量/方法和类时的不同访问级别和规则。
【Java基础面试三】、说一说你对Java访问权限的了解
|
2月前
|
Java
【Java基础面试二】、个Java文件里可以有多个类吗(不含内部类)?
这篇文章讨论了Java文件中类的定义规则,指出一个Java文件可以包含多个类(不包含内部类),但其中最多只能有一个public类,且如果有public类,它的名称必须与文件名一致。
|
2月前
|
XML 存储 JSON
【IO面试题 六】、 除了Java自带的序列化之外,你还了解哪些序列化工具?
除了Java自带的序列化,常见的序列化工具还包括JSON(如jackson、gson、fastjson)、Protobuf、Thrift和Avro,各具特点,适用于不同的应用场景和性能需求。
|
2月前
|
Java
【Java基础面试三十七】、说一说Java的异常机制
这篇文章介绍了Java异常机制的三个主要方面:异常处理(使用try、catch、finally语句)、抛出异常(使用throw和throws关键字)、以及异常跟踪栈(异常传播和程序终止时的栈信息输出)。
|
2月前
|
Java
【Java基础面试三十八】、请介绍Java的异常接口
这篇文章介绍了Java的异常体系结构,主要讲述了Throwable作为异常的顶层父类,以及其子类Error和Exception的区别和处理方式。
下一篇
无影云桌面